搭建HDFS完全分布式

环境
系统环境 linux centOS6.5
jdk环境 jdk1.8.0_11
zookeeper环境 zookeeper-3.4.14
hadoop环境 hadoop-2.7.1

1搭建Zookeeper集群
1.1 关闭Linux(版本是Centos6.X)的防火墙
临时关闭防火墙:service iptables stop
永久关闭防火墙:chkconfig iptables off
1.2. 下载安装JDK
1.3. 下载或者上传Zookeeper的压缩包
1.4. 解压压缩包:tar -xvf zookeeper-3.4.8
1.5. 进入Zookeeper的安装目录下的子目录conf目录中:cd zookeeper-3.4.8/conf
1.6. 将conf目录下的zoo_sample.cfg复制为zoo.cfg。Zookeeper在启动的时候会自动寻找zoo.cfg,根据其中的配置来启动存储数据:cp zoo_sample.cfg zoo.cfg
1.7. 编辑zoo.cfg文件:vim zoo.cfg
1.8. 修改其中的属性dataDir,指定数据的存储目录:dataDir=/home/software/zookeeper-3.4.8/tmp
1.9. 在zoo.cfg文件的末添加要构建集群的服务器地址
格式:server.编号=IP地址:原子广播端口:选举端口
例如:
server.1=10.8.42.133:2888:3888
server.2=10.8.42.134:2888:3888
server.3=10.8.42.135:2888:3888
需要注意的是:
a. 编号要求是数字并且不能重复
b. 原子广播端口号和选举端口号只要不和当前已经使用的端口号冲突即可
1.10. 关闭并且保存zoo.cfg
1.11. 在dataDir的指定目录下创建数据存储目录:mkdir tmp
1.12. 进入数据存储目录:cd tmp
1.13. 在数据存储目录下编辑新的文件,文件名为myid:vim myid
1.14. 在myid文件中填入当前服务器所对应的编号。例如当前服务器的地址为10.8.42.133,则在zoo.cfg文件中指定编号为1,那么就在myid文件中添加数字1
1.15. 保存退出myid
1.16. 将要配置的集群中的其他服务器按照上述步骤配置。或者可以将当前服务器中的配置拷到其他服务器上,修改对应的myid
格式 scp -r 目录或者文件 IP:目录
例如:scp -r zookeeper-3.4.8 10.8.42.134:/home/software
1.17. 集群全部配置好之后,依次启动每一台服务器
1.18. 进入Zookeeper安装目录下的bin目录:cd …/bin
1.19. 执行zkServer.sh文件,启动Zookeeper的服务器:sh zkServer.sh start
1.20. 执行zkCli.sh文件,启动Zookeeper的客户端:sh zkCli.sh

2.搭建hadoop完全分布式

2.1. 关闭防火墙
2.2. 修改主机名
2.3. 配置hosts文件,将需要搭建集群的主机全部配置到hosts文件中
192.168.32.138 hadoop01
192.168.32.139 hadoop02
192.168.32.140 hadoop03
2.4. 配置免密登录
2.5. 安装JDK
2.6. 安装Zookeeper
2.7. 上传或者下载Hadoop的安装包并解压
2.8. 进入Hadoop的安装目录的子目录etc/hadoop/下
2.9. 编辑hadoop-env.sh,并且重新生效
2.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> 

2.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>

2.12编辑mapred-site.xml

<property>    
<name>mapreduce.framework.name</name>    
<value>yarn</value>    
</property>

2.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>

2.14. 编辑slaves
2.15. 拷贝到其他节点上
2.16. 配置环境变量
2.17. 启动zookeeper
2.18. 格式化zookeeper:hdfs zkfc -formatZK
2.19. 启动JournalNode:hadoop-daemon.sh start journalnode
2.20. 在第一台节点上格式化NameNode:hadoop namenode -format
2.21. 在第一台节点上启动NameNode:hadoop-daemon.sh start namenode
2.22. 在第二台节点上格式化NameNode:hdfs namenode -bootstrapStandby
2.23. 在第二台节点上启动NameNode:hadoop-daemon.sh start namenode
2.24. 在三台节点上启动DataNode:hadoop-daemon.sh start datanode
2.25. 在第一台节点和第二节点上启动zkfc(FailoverController):hadoop-daemon.sh start zkfc
2.26. 在第一个节点上启动Yarn:start-yarn.sh
2.27. 在第三个节点上启动ResourceManager:yarn-daemon.sh start resourcemanager

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值