【配置】Hadoop三节点分布式集群搭建
2017-12-30 00:07
375 查看
一、集群规划
1.主机规划2.软件规划
jdk
centos
zookeeper
hadoop
3.用户规划
创建hadoop用户和用户组
4.目录规划
所有软件目录: /home/hadoop/app
所有数据和日志目录: /home/hadoop/data
二、安装前环境准备(所有节点)
1.禁用防火墙[root@pc1 ~]#chkconfig iptables off [root@pc1 ~]#reboot [root@pc1 ~]#service iptables status
2.hosts文件检查
配置集群间的主机IP与hostname一一对应
[root@pc1 ~]# vi /etc/hosts
3.时钟同步:所有节点的时间要与当前时间一致
[root@pc1 ~]#yum install -y ntp //安装时钟同步工具
4.创建hadoop用户和用户组
设置密码
5.配置集群之间ssh免密码登录
①分别配置每个节点的免密码登录
②将所有节点的公钥id_rsa.pub拷贝到pc1节点的authorized_keys文件中
[hadoop@pc3 .ssh]$ cat ~/.ssh/id_rsa.pub | ssh hadoop@pc1 'cat >> ~/.ssh/authorized_keys'
[hadoop@pc2 .ssh]$ cat ~/.ssh/id_rsa.pub | ssh hadoop@pc1 'cat >> ~/.ssh/authorized_keys'
③然后将pc1的authorized_keys文件分发到所有节点
[hadoop@pc1 .ssh]$ scp -r authorized_keys hadoop@pc3:~/.ssh/
④赋予权限
⑥相互登录
6.在pc1安装脚本工具deploy.sh,runRemoteCmd.sh
参考http://blog.csdn.net/zoeyen_/article/details/78861971
7.创建程序安装目录和数据目录
三、集群搭建
1.安装jdk①上传jdk1.7.0_79至/home/hadoop/app目录,解压。
②配置环境变量
③使环境变量文件生效,并查看jdk版本,出现以下信息说明安装成功
④将pc1的jdk文件分发到其他节点
[hadoop@pc1 app]$ deploy.sh jdk /home/hadoop/app/ slave // slave是pc2和pc3的共同标签
⑤在pc2和pc3上重复②③步骤
2.安装zookeeper
①上传,解压zookeeper-3.4.6.tar.gz。
②进入conf目录,修改配置文件
因为是上传在root目录下,还需要赋予zookeeper目录hadoop权限
[root@pc1 app]# chown -R hadoop:hadoop zookeeper
③修改数据目录和日志目录
④创建数据目录和日志目录
⑤创建文件 myid
进入 zkdata 文件夹,创建文件 myid ,填入 1 。这里写入的 1 ,是在 zoo.cfg 文本中的 server.1 中的 1 。
⑥添加环境变量
⑦分发到pc2,pc3节点
⑧在pc2,pc3上重复④⑤⑥步骤
⑨在主节点pc1上启动所有节点的zookeeper,查看状态和jps
3.安装配置hadoop
①上传,解压,重命名
②修改配置文件
core-site.xml
hadoop-env.sh
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> < 数据块副本数3 > </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value>< 权限默认配置为false > </property> <property> <name>dfs.nameservices</name> <value>cluster1</value> < 命名空间,它的值与fs.defaultFS的值要对应,namenode高可用之后有两个namenode,cluster1是对外提供的统一入口> </property> <property> <name>dfs.ha.namenodes.cluster1</name> <value>pc1,pc2</value> < 指定 nameService 是 cluster1 时的nameNode有哪些,这里的值也是逻辑名称,名字随便起,相互不重复即可> </property> <property> <name>dfs.namenode.rpc-address.cluster1.pc1</name> <value>pc1:9000</value>< pc1 http地址> </property> <property> <name>dfs.namenode.http-address.cluster1.pc1</name> <value>pc1:50070</value>< pc1 http地址> </property> <property> <name>dfs.namenode.rpc-address.cluster1.pc2</name> <value>pc2:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.pc2</name> <value>pc2:50070</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value>< 启动故障自动恢复> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://pc1:8485;pc2:8485;pc3:8485/cluster1</value> </property> <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>< 指定 cluster1 出故障时,哪个实现类负责执行故障切换> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/data/journaldata/jn</value> < 指定JournalNode集群在对nameNode的目录进行共享时,自己存储数据的磁盘路径 > </property> <property> <name>dfs.ha.fencing.methods</name> <value>shell(/bin/true)</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>10000</value>< 脑裂默认配置> </property> <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> </configuration>
slaves
mapred-site.xml
[hadoop@pc1 hadoop]$ vi mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <指定运行mapreduce的环境是Yarn,与hadoop1不同的地方> </configuration>
yarn-site.xml
[hadoop@pc1 hadoop]$ vi yarn-site.xml <configuration> <property> <name>yarn.resourcemanager.connect.retry-interval.ms</name> <value>2000</value> </property> < 超时的周期> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> < 打开高可用> <property> <name>yarn.resourcemanager.ha.automatic-failover.enabled</name> <value>true</value> </property> <启动故障自动恢复> <property> <name>yarn.resourcemanager.ha.automatic-failover.embedded</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yarn-rm-cluster</value> </property> <给yarn cluster 取个名字yarn-rm-cluster> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <给ResourceManager 取个名字 rm1,rm2> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>pc1</value> </property> <配置ResourceManager rm1 hostname> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>pc2</value> </property> <配置ResourceManager rm2 hostname> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <启用resourcemanager 自动恢复> <property> <name>yarn.resourcemanager.zk.state-store.address</name> <value>pc1:2181,pc2:2181,pc3:2181</value> </property> <配置Zookeeper地址> <property> <name>yarn.resourcemanager.zk-address</name> <value>pc1:2181,pc2:2181,pc3:2181</value> </property> <配置Zookeeper地址> <property> <name>yarn.resourcemanager.address.rm1</name> <value>pc1:8032</value> </property> < rm1端口号> <property> <name>yarn.resourcemanager.scheduler.address.rm1</name> <value>pc1:8034</value> </property> < rm1调度器的端口号> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>pc1:8088</value> </property> < rm1 webapp端口号> <property> <name>yarn.resourcemanager.address.rm2</name> <value>pc2:8032</value> </property> < rm2端口号> <property> <name>yarn.resourcemanager.scheduler.address.rm2</name> <value>pc2:8034</value> </property> < rm2调度器的端口号> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>pc2:8088</value> </property> < rm2 webapp端口号> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <执行MapReduce需要配置的shuffle过程> </configuration>
③添加环境变量
④向其它节点分发hadoop文件,并添加相应节点的环境变量
[hadoop@pc1 app]$ deploy.sh hadoop /home/hadoop/app/ slave
四、启动集群
1.启动所有节点的zookeeper进程[hadoop@pc1 app]$runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" all
2.启动所有节点的journalnode进程
[hadoop@pc1 app]$ runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all
3.在主节点pc1格式化并启动namenode。
[hadoop@pc1 hadoop]$ bin/hdfs namenode -format //格式化namenode [hadoop@pc1 hadoop]$ bin/hdfs zkfc -formatZK //格式化高可用 [hadoop@pc1 hadoop]$ bin/hdfs namenode //启动namenode
4.同时在备节点pc2同步数据
[hadoop@pc2 hadoop]$ bin/hdfs namenode -bootstrapStandby
5.同步数据结束后,在pc1按Ctrl+z结束namenode进程,然后关闭所有节点journalnode
[hadoop@pc1 hadoop]$ runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all
6.以上步骤成功执行,一键启动hdfs相关进程
[hadoop@pc1 hadoop]$ sbin/start-dfs.sh
7.启动yarn
主节点:
[hadoop@pc1 hadoop]$ sbin/start-yarn.sh
其它节点:
[hadoop@pc2 hadoop]$ sbin/yarn-daemon.sh start resourcemanager
8.检查resourcemanager的状态
[hadoop@pc1 hadoop]$ bin/yarn rmadmin -getServiceState rm1 [hadoop@pc1 hadoop]$ bin/yarn rmadmin -getServiceState rm2
9.在web中查看
在本地浏览器中输入连接
pc1:57770 //hdfs
pc2:50070
pc1:8088 //yarn
pc2:8088
相关文章推荐
- 完全分布式Hadoop集群的安装搭建和配置(4节点)
- 【hadoop】5001- 搭建分布式集群节点规划
- hadoop - hadoop2.6 分布式 - 集群环境搭建 - Hadoop 2.6 分布式 配置,初始化,启动过程
- 基于hadoop2.6.0搭建5个节点的分布式集群
- 5节点Hadoop分布式集群搭建-超详细文档
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~) .
- 从零开始搭建hadoop分布式集群环境:(四)配置ssh无密码登录
- 5节点Hadoop分布式集群搭建-超详细文档
- Hadoop三节点分布式集群搭建(基于openstack)
- Hadoop分布式集群环境搭建(三节点)
- 2018-07-08期 Hadoop单节点伪分布式集群配置
- Hadoop 2.6 集群搭建从零开始之3 Hadoop的安装与配置(伪分布式环境)
- hadoop - hadoop2.6 分布式 - 集群环境搭建 - 系统搭建和网络配置
- 5节点Hadoop分布式集群搭建-超详细文档
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程
- Hadoop 2.2 YARN分布式集群搭建配置流程
- 5节点Hadoop分布式集群搭建-超详细文档
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~
- 搭建Hadoop分布式集群------修改三台机器的配置文件
- 第五天-Hadoop全分布式集群搭建(傻瓜式配置)