章
目
录
一.说明:
1、伪分布式环境是一台虚拟机,自身既是主节点又是从节点,即既是NameNode也是DataNode
2、完全分布式环境,需要多台虚拟机,这里我们使用一主两从配置
3、我们这里的分布式环境搭建基于之前的伪分布式master主机
二、具体步骤
如果在你在网上搜Hadoop伪分布式环境搭建的教程,结果可谓五花八门,有的甚至漏洞百出,很难找到一篇非常详细的 […]
之前搭建伪分布式时,已经有了一台master虚拟主机,现在再安装两台虚拟主机分别为slave1、salve2
要求如下(具体主机名和ip根据自己情况而定):
然后重启虚拟主机。
3台虚拟机的hosts文件都需配置如下信息:
192.168.217.100 master 192.168.217.101 slave1 192.168.217.102 slave2
可以将master的修改好后,可以统一远程copy到slave1和slave2,使用指令:
scp /etc/hosts root@slave1:/etc/hosts scp /etc/hosts root@slave2:/etc/hosts
永久关闭slave1和slave2的防火墙和selinux
注意:关闭selinux也可以通过远程copy的方法
在slave1和slave2新建hadoop用户,注意用户名和密码必须都和master一致
注意:修改sudoers也可以通过远程copy的方法
为了方便后期整合ZK和HBase集群,我们推荐实现3台机器相互免密登录,逻辑就是:
1)由于在搭建伪分布式时我们就已经在master上生成了公私钥对,并且将公钥cat到了authorized_keys
中,现在我们只需在slave1
和slave2
中分别使用root用户生成公私钥对,代码如下:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2)将slave1和slave2中的id_dsa.pub
分别远程拷贝到master中,并重命名:
#在slave1中执行 scp ~/.ssh/id_dsa.pub root@master:~/.ssh/id_dsa_slave1.pub #在slave2中执行 scp ~/.ssh/id_dsa.pub root@master:~/.ssh/id_dsa_slave2.pub
3)由于我们原先已经将master的id_dsa.pub
公钥cat到了authorized_keys
,现在只需在master中将id_dsa_slave1.pub
和id_dsa_slave2.pub
公钥cat进去即可:
#在master中执行 cat ~/.ssh/id_dsa_slave1.pub >> ~/.ssh/authorized_keys cat ~/.ssh/id_dsa_slave2.pub >> ~/.ssh/authorized_keys
4)将master中的带有这3台主机公钥的文件authorized_keys
远程拷贝到slave1和slave2:
#在master中执行 scp ~/.ssh/authorized_keys root@slave1:~/.ssh/ scp ~/.ssh/authorized_keys root@slave2:~/.ssh/
//安装包: scp -rq /usr/java/ slave1:/usr/ scp -rq /usr/java/ slave2:/usr/ //配置文件: scp -rq /etc/profile/ slave1:/etc/ scp -rq /etc/profile/ slave2:/etc/ //文件生效:在slave1和slave2中: source /etc/profile java -version
耐心等待,不能Ctrl + C中途停止进程
查看slave1和slave2的usr目录和profile
分别测试java -version
注意1:环境变量不需要再次配置
注意2:hdfs-site.xml
文件的dfs.replication
的value改为2,因为有两个datanode从节点
注意3:hdfs-site.xml
再新增SecondaryName的启动路径,默认在主节点上,这里我们将其配置在slave1节点上(此步可忽略,就放在主节点就可以)
<property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:9868</value> </property>
注意4:yarn-site.xml
再新增 resourcemanager
启动位置
<property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property>
注意5:新增对workers
文件配置,配置从节点主机名,这里我们将slave1和slave2作为从节点:
sudo vi workers
原:
现:
注意6:将master的/usr/hadoop
目录赋予777权限
sudo chmod -R 777 /usr/hadoop
注意7:删除hadoopdata目录:
由于我们之前搭建伪分布式时,hdfs格式化过,在hadoop目录中会生成hadoopdata目录(根据你的配置可能路径和名称不一样),我们需要将该目录删除
rm -rf hadoopdata
3)将master上的hadoop目录远程copy到slave1和slave2上:
sudo scp -rq /usr/hadoop/ root@slave1:/usr/ sudo scp -rq /usr/hadoop/ root@slave2:/usr/
1)格式化hdfs文件系统
我们只需要在master节点执行格式化操作即可:
hdfs namenode -format
2)启动hadoop
我们只需在master节点启动hadoop即可:
start-all.sh
3)master执行jps命令,有如下进程:
slave1:
slave2:
4)也可以通过web ui进行访问查看
yarn:http://192.168.217.100:8088/cluster
master:http://192.168.217.100:9870
datanode1:http://192.168.217.101:9864
datanode2:http://192.168.217.102:9864
5)停止hadoop
stop-all.sh