02 hadoop安装


安装hadoop的过程中需要配置的配置文件包括:

单机模式:只能启动MapReduce

而且使用的是本地文件系统,不是HDFS

完全分布式:能启动Hadoop的所有功能

完全分布式系统架构

在这里插入图片描述
JournalNode作为通信节点,实现主备NameNode的数据同步
zk:作为集群的协调管理者,负责选出主节点对外提供服务,同时当主节点宕机时,可以切换到从节点。

ZKFC:运行在两个namenode上的进程,当主节点宕机时,可以将另外一个namenode切换成主节点。

同时,集群中节点的角色也发生了变化
在这里插入图片描述
三节点搭建角色划分:
在这里插入图片描述

安装步骤

Hadoop完全分布式开启,需要先开启Zookeeper,再开Hadoop

1、因为第一台云主机之前搭过伪分布式,所以需要将伪分布式重命名,重命名之前先停止hadoop集群
cd /home/software/
mv hadoop-2.7.1/ hadoop-alone

2、三台云主机关闭防火墙
service iptables stop
chkconfig iptables off

3、修改三台云主机的主机名
vim /etc/sysconfig/network
修改HOSTNAME属性,依次改为hadoop01、hadoop02、hadoop03
保存退出,并且重新生效
source /etc/sysconfig/network

4、三台云主机添加IP映射
vim /etc/hosts
添加
10.9.162.133 hadoop01
10.9.152.65 hadoop02
10.9.130.83 hadoop03

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.42.149.244 hadoop01
10.42.155.72 hadoop02
10.42.185.115 hadoop03

5、三台云主机重启
reboot

6、三台云主机开启Zookeeper
cd /home/software/zookeeper-3.4.8/bin
sh zkServer.sh start
sh zkServer.sh status

7、第一个节点回到software目录下
cd /home/software/

8、下载Hadoop完全分布式的安装包
wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/hadoop-dist.tar.gz

9、三台机器进行免密配置
ssh-keygen
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03

测试
ssh hadoop01 如果不需要密码logout
ssh hadoop02 如果不需要密码logout

ssh hadoop03 如果不需要密码logout

10、tar -xvf hadoop-dist.tar.gz
11、将Hadoop的安装包拷贝到其他两个节点上
12、三台节点配置环境变量
vim /etc/profile
添加
export HADOOP_HOME=/home/software/hadoop-2.7.1
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出,并且重新生效
source /etc/profile

13、在任意一个namenode节点上格式化Zookeeper - 实际上就是在Zookeeper中注册Hadoop节点
hdfs zkfc -formatZK
如果成功,则日志中会出现Successfully created /hadoop-ha/ns in ZK.
如果出现HA is not available,那么系统兼容性不够 - 重装系统

14、三台云主机启动JournalNode
hadoop-daemon.sh start journalnode

15、在第一个节点上格式化NameNode
hadoop namenode -format
如果格式化成功,则出现Storage directory /home/software/hadoop-2.7.1/tmp/hdfs/name has been successfully formatted.

16、在第一个节点上启动NameNode
hadoop-daemon.sh start namenode

17、在第二个节点上格式化NameNode
hdfs namenode -bootstrapStandby
如果格式化成功,则出现Storage directory /home/software/hadoop-2.7.1/tmp/hdfs/name has been successfully formatted.

18、在第二个节点上启动NameNode
hadoop-daemon.sh start namenode

19、在三个节点上启动DataNode
hadoop-daemon.sh start datanode

20、在第三个节点上启动YARN
start-yarn.sh

21、在第一个节点上启动ResourceManager
yarn-daemon.sh start resourcemanager

22、在第一个和第二个节点上启动zkfc
hadoop-daemon.sh start zkfc

23、通过jps查看进程
节点1上进程:
1488 NameNode
1826 ResourceManager
1363 JournalNode
1892 DFSZKFailoverController
1271 QuorumPeerMain
1963 Jps
1583 DataNode
1695 NodeManager

节点2上进程:
1440 NameNode
1760 DFSZKFailoverController
1824 Jps
1527 DataNode
1272 QuorumPeerMain
1337 JournalNode
1629 NodeManager

节点3上进程:
1334 JournalNode
1399 DataNode
1272 QuorumPeerMain
1610 NodeManager
1514 ResourceManager
1916 Jps

错误排查

如果少了QuorumPeerMain,表示Zookeeper启动出错
如果少了NameNode/DataNode/JournalNode/DFSZKFailoverController,可以通过hadoop-daemon.sh start namenode/datanode/journalnode/zkfc
如果少了ResourceManager/NodeManager,通过yarn-daemon.sh start resourcemanager/nodemanager

详细步骤

在这里插入图片描述

	1. 关闭防火墙
	2. 修改主机名
	3. 配置hosts文件,将需要搭建集群的主机全部配置到hosts文件中
	192.168.32.138 hadoop01
	192.168.32.139 hadoop02
	192.168.32.140 hadoop03
	4. 配置免密登录
	5. 安装JDK
	6. 安装Zookeeper
	7. 上传或者下载Hadoop的安装包并解压
	8. 进入Hadoop的安装目录的子目录etc/hadoop/下
	9. 编辑hadoop-env.sh,并且重新生效
	10.编辑core-site.xml,添加如下内容:

		<!--指定hdfs的nameservice,为整个集群起一个别名-->
<property>
    <name>fs.defaultFS</name>                
    <value>hdfs://ns</value>
</property>
<!--指定Hadoop数据临时存放目录-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/software/hadoop-2.7.1/tmp</value>
</property> 
<!--指定zookeeper的存放地址-->
<property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property> 

11、编辑hdfs-site.xml
	<!--执行hdfs的nameservice为ns,注意要和core-site.xml中的名称保持一致-->
<property>
    <name>dfs.nameservices</name>
    <value>ns</value>
</property>
<!--ns集群下有两个namenode,分别为nn1, nn2-->
<property>
    <name>dfs.ha.namenodes.ns</name>
    <value>nn1,nn2</value>
</property>
<!--nn1的RPC通信-->
<property>
    <name>dfs.namenode.rpc-address.ns.nn1</name>
    <value>hadoop01:9000</value>
</property>
<!--nn1的http通信-->
<property>
    <name>dfs.namenode.http-address.ns.nn1</name>
    <value>hadoop01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.ns.nn2</name>
    <value>hadoop02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.ns.nn2</name>
    <value>hadoop02:50070</value>
</property>
<!--指定namenode的元数据在JournalNode上存放的位置,这样,namenode2可以从journalnode集群里的指定位置上获取信息,达到热备效果-->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/software/hadoop-2.7.1/tmp/journal</value>
</property>
<!-- 开启NameNode故障时自动切换 -->
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
    <name>dfs.client.failover.proxy.provider.ns</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制 -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 -->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
<!--配置namenode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>    
    <name>dfs.namenode.name.dir</name>    
    <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>    
</property>    
<!--配置datanode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>    
    <name>dfs.datanode.data.dir</name>    
    <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>    
</property>
<!--配置副本数量-->    
<property>    
    <name>dfs.replication</name>    
    <value>3</value>    
</property>   
<!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->                                                                    
<property>    
    <name>dfs.permissions</name>    
    <value>false</value>    
</property>  

12、编辑mapred-site.xml
	<property>    
    <name>mapreduce.framework.name</name>    
    <value>yarn</value>    
</property> 

13、编辑yarn-site.xml
	<!--配置yarn的高可用-->
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>
<!--指定两个resourcemaneger的名称-->
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>
<!--配置rm1的主机-->
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop01</value>
</property>
<!--配置rm2的主机-->
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop03</value>
</property>
<!--开启yarn恢复机制-->
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>
<!--执行rm恢复机制实现类-->
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!--配置zookeeper的地址-->
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!--执行yarn集群的别名-->
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>ns-yarn</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>    
    <name>yarn.nodemanager.aux-services</name>    
    <value>mapreduce_shuffle</value>    
</property>  
<!-- 指定resourcemanager地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop03</value>
</property>

	14. 编辑slaves
	15. 拷贝到其他节点上
	16. 配置环境变量
	17. 启动zookeeper
	18. 格式化zookeeper:hdfs zkfc -formatZK
	19. 启动JournalNode:hadoop-daemon.sh start journalnode
	20. 在第一台节点上格式化NameNode:hadoop namenode -format
	21. 在第一台节点上启动NameNode:hadoop-daemon.sh start namenode
	22. 在第二台节点上格式化NameNode:hdfs namenode -bootstrapStandby
	23. 在第二台节点上启动NameNode:hadoop-daemon.sh  start namenode
	24. 在三台节点上启动DataNode:hadoop-daemon.sh start datanode
	25. 在第一台节点和第二节点上启动zkfc(FailoverController):hadoop-daemon.sh start zkfc
	26. 在第一个节点上启动Yarn:start-yarn.sh
在第三个节点上启动ResourceManager:yarn-daemon.sh start resourcemanager


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值