> 文档中心 > CentOS-7 Linux 上部署hadoop集群(3台)

CentOS-7 Linux 上部署hadoop集群(3台)


CentOS-7 Linux 上部署hadoop集群(3台)

🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈

文章目录

  • CentOS-7 Linux 上部署hadoop集群(3台)
  • 🌈前言
  • 🌈环境说明:
  • 🌈安装部署
    • 🐁1.安装VirtualBox虚拟机软件
    • 🐂2.在虚拟机上安装centos-7
    • 🐅3.设置虚拟机
    • 🐇4.下载并安装jdk1.8.181
    • 🐉5. 创建hadoop用户,并设置sudo(以下也可以用root用户,这里我新建了个hadoop用户来安装)
    • 🐍6.安装zookeeper集群
    • 🐎7.安装hadoop3.2.1并配置
    • 🐐8.部署剩余两台从节点虚拟机
    • 🐒9.设置集群的3台虚拟机hadoop用户的ssh免密登陆
    • 🐓10.启动测试
    • 🐕11.hadoop的启动与停止
  • 🌈后记

🌈前言

本文记载一次在虚拟机上Linux 上部署hadoop集群(3台)

🌈环境说明:

虚拟机采用: vmware虚拟机软件
centos包CentOS-7-x86_64-Minimal-1804.iso
(也可以是DVD的iso文件安装的系统可以少安装很多包)
jdk版本:1.8.181
hadoop版本:3.2.1
zookeeper版本:3.4.13
需要依赖glibc-2.14以上版本
集群地址分配:
192.168.1.227 master hadoop1
192.168.1.228 slave1 hadoop2
192.168.1.229 slave2 hadoop3

🌈安装部署

🐁1.安装VirtualBox虚拟机软件

下载VirtualBox软件并安装

🐂2.在虚拟机上安装centos-7

🐅3.设置虚拟机

 安装常用命令 yum -y install net-tools vim zip unzip

(1)修改虚拟机名称(如果在安装时,设置了主机名,那么就不用修改)

  [root@master /]# hostnamectl set-hostname hadoop1    hostname查看一个主机名称

(2)设置虚拟机网络
1.将VirtualBox软件虚拟机网络设置为桥接自动(也可心用其它网络设置),

 2.查询虚拟机使用的网卡信息,并修改网卡
 [root@master /]# ip addr
 我的虚拟机网卡信息如下: ens33: flags=4163  mtu 1500    inet 192.168.166.188  netmask 255.255.255.0  broadcast 192.168.1.255    inet6 fe80::20c:29ff:fe8f:ff32  prefixlen 64  scopeid 0x20    ether 00:0c:29:8f:ff:32  txqueuelen 1000  (Ethernet)    RX packets 679298  bytes 160057604 (152.6 MiB)    RX errors 0  dropped 1138  overruns 0  frame 0    TX packets 426918  bytes 65730954 (62.6 MiB)    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73  mtu 65536    inet 127.0.0.1  netmask 255.0.0.0    inet6 ::1  prefixlen 128  scopeid 0x10    loop  txqueuelen 1000  (Local Loopback)    RX packets 465005  bytes 50278038 (47.9 MiB)    RX errors 0  dropped 0  overruns 0  frame 0    TX packets 465005  bytes 50278038 (47.9 MiB)    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

对应的网卡文件为/etc/sysconfig/network-scripts/ifcfg-enp0s3,如果看到的网卡为ecth0,那么对应的网卡文件为/etc/sysconfig/network-scripts/ifcfg-ecth0
3. 修改对应的网卡文件,将ip设置成静态并且随机启动

 [root@master /]#vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
 内容如下:TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no#修改IP分配策略BOOTPROTO=staticDEFROUTE=yes#IPV4_FAILURE_FATAL=no#IPV6INIT=yes#IPV6_AUTOCONF=yes#IPV6_DEFROUTE=yes#IPV6_FAILURE_FATAL=no#IPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=80c892ca-6412-4418-9918-e17c3b168fd4DEVICE=ens33#修改网卡为开机启动ONBOOT=yes#设置静态的ip地址IPADDR=192.168.1.227#设置网关GATEWAY=192.168.1.1#设置子网掩码NETMASK=255.255.255.0#设置DNS地址DNS1=192.168.1.1其中大部分配置为原有,#开头的是注释掉原来的配置,修改的配置有BOOTPROTO,ONBOOT添加的有IPADDR,GATEWAY,NETMASK,DNS1保存后重启网卡
[root@master /]#service network restart
用ifconfig 或ip addr命令查看网络,检查配置的网卡是否生效,如果没有请重新配置ip
  1. 通过ping命令检查看虚拟机是否可以连网
    ping www.baidu.com
  [root@hrmw-web-api ~]#     ping www.baidu.comPING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=54 time=18.3 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=54 time=16.2 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=54 time=17.2 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=54 time=16.2 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=54 time=16.5 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=6 ttl=54 time=17.9 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=7 ttl=54 time=18.1 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=8 ttl=54 time=28.5 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=9 ttl=54 time=19.0 ms64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=10 ttl=54 time=16.4 ms^Z[1]+  已停止 ping www.baidu.com
如果结果如下:则表示网卡正常[root@master /]# ping www.baidu.comPING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=14.2 ms64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=14.6 ms64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=14.8 ms64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=55 time=13.8 ms64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=5 ttl=55 time=15.1 ms^C--- www.a.shifen.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4007msrtt min/avg/max/mdev = 13.814/14.551/15.116/0.465 ms(这时已经可以用xshell等ssh工具连接虚拟机了,不用再在vmwarn中操作(太麻烦))     3.安装net-tools,方便使用ifconfig查询网络信息,也可以不安装,用ip addr命令查看   安装net-tools   yum -y install net-tools(3)修改虚拟机host文件    安装vim命令:    yum -y install vim[root@master /]#vim /etc/hosts修改内容:127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1  localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.227  master hadoop1192.168.1.228  slave1 hadoop2192.168.1.229  slave2 hadoop3其中 master 对应本机ip,  hadoop1为本机hostname其它两个ip为其它两个slave节点的ip 让修改生效[root@master /]#source /etc/hosts
  1. 关闭防火墙
临时关闭[root@master /]#systemctl stop firewalld    禁止开机启动    [root@master /]# systemctl disable firewalld
这里关闭防火墙并禁止开机启动(也可心将下面安装步骤中所涉及到的端口开放即可,建议先关闭,安装测试完成后再考虑开放端口,开启防火墙)
  1. 安装或升级glibc
    注意:hadoop依赖glibc-2.14以上版本,在格式化之前先安装glibc用下面命令即可
yum -y install glibc

🐇4.下载并安装jdk1.8.181

去oracle官网下载最新的jdk版本,我用的是jdk-8u181-linux-x64.tar.gz
下载完成后,使用xftp或其它ftp工具将文件上传到虚拟机的任意一个目录(我放在的/root目录下)
通过tar命令解压
cd 到jdk-8u181-linux-x64.tar.gz文件所在目录

软件的下载也可以,通过安装wget命令,通过wget下载(这样可以省去ftp上传,但是要在网卡找对下载地址,我用的本地下载ftp上传)
安装wget可以用yum就行:

   yum -y install wget

[root@master /]#cd /root
解压到/usr/local(这个是linux默认安装软件的目录,也可以装到其它地方,只要配置环境变量的时候,设置为对应的目录即可)
[root@master /]#tar -xzvf jdk-8u181-linux-x64.tar.gz -C /usr/local
解压后的jdk目录为/usr/local/jdk1.8.0_181
这里我用mv命令把jdk1.8.0_181改为jdk8,也可以不修改
[root@master /]#mv /usr/local/jdk1.8.0_181 /usr/local/jdk8
设置jdk的环境变量,修改/etc/profile文件(这个是所有用启都可用的配置文件,也可以在用户根目录的.bash_profile中设置,这样的话只对用户本身有效)
[root@master /]#vim /etc/profile
在文件的最后添加如下配置:

export JAVA_HOME=/usr/local/jdk8   export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar   export PATH=$JAVA_HOME/bin:$PATH

这里要在path中把jdk的配置到最前,因为系统默认是openJdk,如果放后面的话不会生效
修改完后让配置生效,执行:

  [root@master /]#source /etc/profile

检查jdk是否安装正确:

 [root@master /]# java -versionjava version "1.8.0_181"Java(TM) SE Runtime Environment (build 1.8.0_181-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

如上所示则jdk安装完成

🐉5. 创建hadoop用户,并设置sudo(以下也可以用root用户,这里我新建了个hadoop用户来安装)

[root@master /]#useradd hadoop
设置hadoop用户密码
[root@master /]#passwd hadoop
设置sudo(让hadoop用户可以用sudo命令来修改一些系统配置,省去了用su来回切换用户的麻烦)
[root@master /]#vim /etc/sudoers
增加一条类似root用户的配置:
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
[root@master /]#source /etc/sudoers
上面这条执行如果有错误,可以不用理会
配置完hadoop用户就可以使用sudo命令了

以下安装基本都用hadoop用户了,安装软件的步骤每个机器上基本相同,所以装好之后克隆虚拟机就可以,然后稍改下配置即可

🐍6.安装zookeeper集群

(1)在网上下载zookeeper,我这里下载了zookeeper-3.4.13.tar.gz其它的版本也可以
将安装包上传到hadoop用户根目录
在hadoop用户根目录下新建app目录(我把软件装在app目录下,也可以是其它目录,其它目录要给zookeepr用户赋权限)
[hadoop@master ~] m k d i r / h o m e / h a d o o p / a p p 解 压 z o o k e e p e r 安 装 包 到 a p p 目 录 下 [ h a d o o p @ m a s t e r   ] mkdir /home/hadoop/app 解压zookeeper安装包到app目录下 [hadoop@master ~] mkdir/home/hadoop/appzookeeperapp[hadoop@master ]tar -xzvf zookeeper-3.4.13.tar.gz -C /home/hadoop/app
解压之后的目录为/home/hadoop/app/zookeeper-3.4.13
这里我改为了/home/hadoop/app/zookeeper
[hadoop@master ~] m v / h o m e / h a d o o p / a p p / z o o k e e p e r − 3.4.13 / h o m e / h a d o o p / a p p / z o o k e e p e r ( 2 ) 配 置 z o o k e e p e r 集 群 进 入 z o o k e e p e r 的 c o n f 目 录 [ h a d o o p @ m a s t e r   ] mv /home/hadoop/app/zookeeper-3.4.13 /home/hadoop/app/zookeeper (2)配置zookeeper集群 进入zookeeper的conf目录 [hadoop@master ~] mv/home/hadoop/app/zookeeper3.4.13/home/hadoop/app/zookeeper(2)zookeeperzookeeperconf[hadoop@master ]cd /home/hadoop/app/zookeeper/conf
将zoo_sample.cfg配置文件拷贝一份改名为zoo.cfg
[hadoop@master ~] c p z o o s a m p l e . c f g z o o . c f g 修 改 z o o . c f g [ h a d o o p @ m a s t e r   ] cp zoo_sample.cfg zoo.cfg 修改zoo.cfg [hadoop@master ~] cpzoosample.cfgzoo.cfgzoo.cfg[hadoop@master ]vim zoo.cfg
增加如下配置:
#zookeeper的data文件存放目录
dataDir=/home/hadoop/app/zookeeper/data
#zookeeper的日志文件目录
dataLogDir=/home/hadoop/app/zookeeper/datalog
# the port at which the clients will connect
#zookeeper的端口(我这里用默认)
clientPort=2181
#集群配置
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
注意:dataDir是原有的只要修改下目录即可,这个目录可以随意,没有的话可以mkdir去建,cilentPort也是原有的不用动;
集群配置中的server.1,server.2,server.3这个是集群的id,随后建myid文件用的id;

master,slave1,slave2是在/etc/hosts中配置的安装集群的服务器地址,也可以用IP,后面的端口都是用默认的

(3)创建zookeeper的data和log存放目录
[hadoop@master ~] m k d i r − p / h o m e / h a d o o p / a p p / z o o k e e p e r / d a t a [ h a d o o p @ m a s t e r   ] mkdir -p /home/hadoop/app/zookeeper/data [hadoop@master ~] mkdirp/home/hadoop/app/zookeeper/data[hadoop@master ]mkdir -p /home/hadoop/app/zookeeper/datalog
要和zoo.cfg中配置的一致
(4)创建myid文件
进入上一步建的data目录,并创建myid文件
[hadoop@master ~] c d / h o m e / h a d o o p / a p p / z o o k e e p e r / d a t a [ h a d o o p @ m a s t e r   ] cd /home/hadoop/app/zookeeper/data [hadoop@master ~] cd/home/hadoop/app/zookeeper/data[hadoop@master ]vim myid
myid文件中的内容对应,zoo.cfg中集群配置中的server.后面的数字,例如master机器上配置1,slave1上配置2,slave3上配置3
[hadoop@master data]$ vim myid

1~ 注意:myid文件原来是不存在的,通过vim命令编辑保存后,会新建的另外的机器安装相同,克隆虚拟机后修改myid文件就好(5)设置zookeeper的环境变量,方便启动(也可以不设置,每次启动都要到zookeeper安装目录的bin下启动) [hadoop@master ~]$sudo vim /etc/profile 说明:第一次用sudo可能要输入root用户密码 在/etc/profile后面添加 export JAVA_HOME=/usr/local/jdk8export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport ZOOKEEPER_HOME=/home/hadoop/app/zookeeperexport PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin(6)配置完成后就可以启动zookeeper了  按照以上配置就没问题,这里就不启动了,还要安装hadoop  zookeeper的启动命令:    zkServer.sh start 启动    zkServer.sh stop 关闭  zkServer.sh restart 重启

🐎7.安装hadoop3.2.1并配置

(1)hadoop这里用3.2.1的版本

去官网下载hadoop-3.2.1.tar.gz包,通过ftp上传到hadoop根目录
解压到app目录
[hadoop@master ~] t a r − x z v f h a d o o p − 3.2.1. t a r . g z − C a p p / 解 压 后 目 录 / h o m e / h a d o o p / a p p / h a d o o p − 3.2.1 这 里 我 把 目 录 修 改 为 h a d o o p 3 [ h a d o o p @ m a s t e r   ] tar -xzvf hadoop-3.2.1.tar.gz -C app/ 解压后目录/home/hadoop/app/hadoop-3.2.1 这里我把目录修改为hadoop3 [hadoop@master ~] tarxzvfhadoop3.2.1.tar.gzCapp//home/hadoop/app/hadoop3.2.1hadoop3[hadoop@master ] mv /home/hadoop/app/hadoop-3.2.1 /home/hadoop/app/hadoop3
(2)配置环境变量,方便启动,执行hdfs命令
[hadoop@master ~]$ sudo vim /etc/profile
在最后添加:
export JAVA_HOME=/usr/local/jdk8
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/home/hadoop/app/hadoop3export ZOOKEEPER_HOME=/home/hadoop/app/zookeeperexport PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin这里path中要添加hadoop的bin和sbin两个目录(3)hadoop配置文件配置(hadoop的配置文件在安装目录下的etc/hadoop下)   1.修改workers,配置服务器列节点表   [hadoop@hadoop1 app]$ cd /home/hadoop/app/hadoop3/etc/hadoop/   [hadoop@master hadoop]$ vim workers   内容如下:    master    slave1    slave2注意:这个是在/etc/hosts中配置的三台集群服务器节点   2.配置hadoop-env.sh    [hadoop@master hadoop]$ vim hadoop-env.sh添加JAVA_HOME和HADOOP_HOME 防止找到不jdk和hadoopexport JAVA_HOME=/usr/local/jdk8    export HADOOP_HOME=/home/hadoop/app/hadoop3   3.配置mapred-env.sh   [hadoop@master hadoop]$ vim mapred-env.sh   添加JAVA_HOME和HADOOP_HOME 防止找到不jdk和hadoop    export JAVA_HOME=/usr/local/jdk8    export HADOOP_HOME=/home/hadoop/app/hadoop3   4.配置yarn-env.sh   [hadoop@master hadoop]$ vim yarn-env.sh   添加JAVA_HOME和HADOOP_HOME 防止找到不jdk和hadoop    export JAVA_HOME=/usr/local/jdk8    export HADOOP_HOME=/home/hadoop/app/hadoop3   注意:下面步骤的配置文件如果在home/hadoop/app/hadoop3/etc/hadoop下没有时,将该目录下相应的 ***-**.xml.example文件拷贝一份改名即可   5.配置core-site.xml   [hadoop@master hadoop]$ vim core-site.xml   内容如下:       hadoop.tmp.dir/home/hadoop/app/hadoop3/hdfs/tmpio.file.buffer.size131072fs.defaultFShdfs://myclusterha.zookeeper.quorummaster:2181,slave1:2181,slave2:2181[hadoop@master hadoop]$ mkdir -p /home/hadoop/app/hadoop3/hdfs/tmp6.配置hdfs-site.xml[hadoop@master hadoop]$ vim hdfs-site.xml内容如下:    dfs.nameservicesmycluster dfs.replication 3 dfs.namenode.name.dir /home/hadoop/app/hadoop3/hdfs/name true dfs.datanode.data.dir /home/hadoop/app/hadoop3/hdfs/data true    dfs.permissions.enabledfalsedfs.ha.namenodes.myclustermaster,slave1,slave2dfs.namenode.rpc-address.mycluster.mastermaster:9820    dfs.namenode.rpc-address.mycluster.slave1slave1:9820    dfs.namenode.rpc-address.mycluster.slave2slave2:9820dfs.namenode.http-address.mycluster.mastermaster:9870dfs.namenode.http-address.mycluster.slave1slave1:9870dfs.namenode.http-address.mycluster.slave2slave2:9870dfs.namenode.shared.edits.dirqjournal://master:8485;slave1:8485;slave2:8485/myclusterdfs.journalnode.edits.dir/home/hadoop/app/hadoop3/data/journaldata/jndfs.client.failover.proxy.provider.myclusterorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProviderdfs.ha.fencing.methods   sshfence   shell(/bin/true)dfs.ha.fencing.ssh.private-key-files/home/hadoop/.ssh/id_rsadfs.ha.fencing.ssh.connect-timeout10000dfs.namenode.handler.count100dfs.ha.automatic-failover.enabledtrue注意:为了省事,这里先配置一台的,其中ssh密钥地址,后面两台虚拟机建好时会配置ssh免密登陆,会产生密钥     [hadoop@master hadoop]$ mkdir -p /home/hadoop/app/hadoop3/hdfs/name  [hadoop@master hadoop]$ mkdir -p /home/hadoop/app/hadoop3/hdfs/data  [hadoop@master hadoop]$ mkdir -p /home/hadoop/app/hadoop3/data/journaldata/jn     [hadoop@master hadoop]$ mkdir -p /home/hadoop/app/hadoop3/logs    7.配置mapred-site.xml[hadoop@master hadoop]$ vim mapred-site.xml内容如下: mapreduce.framework.name yarn  yarn.app.mapreduce.am.env  HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop3  mapreduce.map.env  HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop3  mapreduce.reduce.env  HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop38.配置yarn-site.xml[hadoop@master hadoop]$ vim yarn-site.xml内容如下:yarn.resourcemanager.connect.retry-interval.ms2000yarn.resourcemanager.ha.enabledtrueyarn.resourcemanager.ha.automatic-failover.enabledtrueyarn.resourcemanager.ha.automatic-failover.embeddedtrueyarn.resourcemanager.cluster-idyarn-rm-clusteryarn.resourcemanager.ha.rm-idsrm1,rm2yarn.resourcemanager.hostname.rm1masteryarn.resourcemanager.hostname.rm2slave1yarn.resourcemanager.recovery.enabledtrueThe class to use as the persistent store.yarn.resourcemanager.store.classorg.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStoreyarn.resourcemanager.zk-addressmaster:2181,slave1:2181,slave2:2181yarn.resourcemanager.address.rm1master:8032yarn.resourcemanager.scheduler.address.rm1master:8034yarn.resourcemanager.webapp.address.rm1master:8088yarn.resourcemanager.address.rm2slave1:8032yarn.resourcemanager.scheduler.address.rm2slave1:8034yarn.resourcemanager.webapp.address.rm2slave1:8088yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.nodemanager.aux-services.mapreduce_shuffle.classorg.apache.hadoop.mapred.ShuffleHandler  yarn.nodemanager.vmem-check-enabled  false  Whether virtual memory limits will be enforced for containers. 以上集群的主节点服务器就已经配置完成

🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

🐐8.部署剩余两台从节点虚拟机

最简单的办法:1.以上面安装的虚拟机为基础克隆出两个虚拟机
2.然后修改网卡和主机名称
第2台虚拟机
[root@hadoop2 ~]# hostnamectl set-hostname hadoop2

 [root@hadoop2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3  TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no#BOOTPROTO=dhcpBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=enp0s3UUID=53334ffe-be25-46ee-b974-b17d3c55c313DEVICE=enp0s3ONBOOT=yesIPADDR=192.168.1.228GATEWAY=192.168.1.1NETMASK=255.255.255.0DNS1=192.168.1.1[root@hadoop2 ~]# service network restart第3台同上,主机名改为hadoop3  ip地址改为192.168.1.229 3.修改zookeeper的myid文件改为与ip相对应的即可 修改网卡和zookeeper的myid详见上面步骤 第2台(hadoop2) [hadoop@hadoop2 ~]# cd /home/hadoop/app/zookeeper/data [hadoop@hadoop2 data]# vim myid 2 第3台(hadoop3) [hadoop@hadoop3 ~]# cd /home/hadoop/app/zookeeper/data [hadoop@hadoop3 data]# vim myid 3

最麻烦的办法:按照以上步骤再装两台虚拟机
🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

🐒9.设置集群的3台虚拟机hadoop用户的ssh免密登陆

  1. 以hadoop的用户登陆虚拟机
    3台机器都要生成
    执行ssh-keygen命令创建ssh密钥
    [hadoop@master ~]$ ssh-keygen -t rsa
    出现输入和选择统一回车,取默认值就可以
    会在hadoop的根目录/home/hadoop/ 下生成一个.ssh的文件夹.ssh文件是隐藏文件可以用ls -a命令来查看
    [hadoop@master ~]$ cd .ssh/
    [hadoop@master .ssh]$ ls
    会看到如下文件:
    id_rsa id_rsa.pub known_hosts
    其中id_rsa是私钥(注意:私钥文件就是在hdfs-site.xml中配置的密钥地址),id_rsa.pub是公钥

  2. 将上一步中的公钥分别放到集群中的三台服务器
    (1)方法1:
    [hadoop@master .ssh] ssh−copy−id−i /.ssh/i d r sa.pubhadoop@master其中 /.ssh/i d r sa.pub是公钥文件的路径,也可写绝对路径hadoop@master中hadoop是linux用户名,master为服务器地址(因为之前在/etc/hosts文件中配置过地址映射,所有写了master)也可以改为ip地址执行完上面的命令后会在master服务器hadoop用户根目录下的.ssh文件夹下生成一个authorize d k eys文件记录公钥信息同时执行以下两条命令,将本机公钥也放到其它两台虚拟机上[hadoop@master.ssh] ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master 其中 ~/.ssh/id_rsa.pub是公钥文件的路径, 也可写绝对路径 hadoop@master中hadoop是linux用户名,master为服务器地址(因为之前在/etc/hosts文件中配置过地址映射,所有写了master)也可以改为ip地址 执行完上面的命令后会在master服务器hadoop用户根目录下的.ssh文件夹下生成一个authorized_keys文件记录公钥信息 同时执行以下两条命令,将本机公钥也放到其它两台虚拟机上 [hadoop@master .ssh]sshcopyidi /.ssh/idrsa.pubhadoop@master /.ssh/idrsa.pubhadoop@masterhadooplinuxmaster/etc/hostsmasteripmasterhadoop.sshauthorizedkeys[hadoop@master.ssh]ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
    [hadoop@master .ssh]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2
    (2)方法2:
    执行以下命令将公钥放下authorized_keys文件中
    [hadoop@master .ssh]cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    别两个服务器
    可以用scp 将id_rsa.pub文件复制到其它两台服务器上,然后用cat id_rsa.pub >>~/.ssh/authorized_keys 放入文件中

  3. 在其它两台虚拟机上重复1,2步骤
    也可心把三台机器的id_rsa.pub 都放入1台机器的authorized_keys,然后把authorized_keys拷贝到其它两个虚拟机相应目录即可

    完成之后测试下3台机器间ssh免密是否配置成功
    注意:其中第2步用(2)种方法时第一次用ssh会出现确认选择,第(1)种不用

🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

🐓10.启动测试

三台虚拟机都安装完成后,分别为hadoop用户连接三台虚拟机
注意:测试前要保证虚拟机的防火墙是关闭状态(或者程序用到的端口是开放状态,建议关闭防火墙)
(1)启动zookeeper集群
分别以hadoop用户在三台服务器上
执行:zkServer.sh start启动zookeeper
也可以编写脚本来同时启动3台linux上的zookeeper
测试zookeeper
分别在3台机器上执行
zkServer.sh status
如果出现两个follower和一个leader,说明zookeeper集群安装正常,否则检查配置,主要是myid文件
(2)分别在3台虚拟机上执行以下命令启动journalnode
hdfs --daemon start journalnode
启动后用jps查看进程
(3)格式化namenode
在master虚拟机上执行以下命令
[hadoop@master ~] h d f s n a m e n o d e − f o r m a t ( 4 ) 格 式 化 高 可 用 [ h a d o o p @ m a s t e r   ] hdfs namenode -format (4)格式化高可用 [hadoop@master ~] hdfsnamenodeformat4[hadoop@master ]hdfs zkfc -formatZK
(5)启动dfs
[hadoop@master ~]$start-dfs.sh
(6)在slave1和slave2上启动namenode的备份
[hadoop@slave1 ~]hdfs namenode -bootstrapStandby
[hadoop@slave2 ~]hdfs namenode -bootstrapStandby
(7)在浏览器中测试namenode(可跳过)
地址:
http://master:9870
http://slave1:9870
http://slave2:9870
其中master,slave1,slave2对应集群三台虚拟机的ip
(8)测试hdfs文件上传
新建一个words.txt文件

[hadoop@master ~]# vim words.txt   hadoop    hadoop    hadoop    hellojavahivehiveworldsparkhellohiword
   在hdfs上创建一个test目录   [hadoop@master ~]#hdfs dfs -mkdir /test   查看目录是否创建成功   [hadoop@master ~]#hdfs dfs -ls /   将words.txt上传到test目录下   [hadoop@master ~]#hdfs dfs -put words.txt /test   查看test目录,文件是否上传成功   [hadoop@master ~]#hdfs dfs -ls /test   查询hdfs上words.txt的内容   [hadoop@master ~]#hdfs dfs -cat /test/words.txt  (9)启动yarn     在master和slave1上分别启动resourcemanager执行命令如下: yarn --daemon start resourcemanager 在3台虚拟机上分别启动nodemanager执行命令如下: yarn --daemon start nodemanager     (10)可以通过web查看yarn(可以省去)    地址:   http://master:8088   http://slave1:8088其中master、slave1对应master和salve1的ip(只有一个地址是可访问的)可以通过命令查看resourcemanager状态yarn rmadmin -getServiceState rm1yarn rmadmin -getServiceState rm2 (11)测试运行WordCount   hadoop jar /home/hadoop/app/hadoop3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar wordcount /test/words.txt /test/output   运行成功后用   hdfs dfs -ls /test/output   会看到   -rw-r--r--   3 hadoop supergroup   0 2018-09-01 06:47 /test/output/_SUCCESS   -rw-r--r--   3 hadoop supergroup  52 2018-09-01 06:47 /test/output/part-r-00000   可以查看part-r-00000来查看wordcount的结果   hdfs dfs -cat /test/output/part-r-00000   如果执行时出现visual memory的错误,可以看下虚拟机的内存,我设置的是2G的

🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

🐕11.hadoop的启动与停止

启动

 start-all.sh

停止

 stop-all.sh

也可用单独的脚本启动

💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰💰

🌈后记

如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

WIFI共享精灵