Hadoop入门(2)——集群配置
2017-04-13 21:48
344 查看
准备
众所周知Hadoop是分布式存储和计算框架,单机配置的Hadoop不叫Hadoop,集群配置的Hadoop才是真正的Hadoop。所谓集群就是不能少于三台主机,在正式配置之前首先应该明确我想要配置多大的集群,每个主机用来做什么。一般来说最开始都是使用一台master,三台slave的集群,master作为NameNode和ResourceManager,slaves作为DataNode和NodeManager。
鉴于我是使用云服务器做实验,过多的服务器会造成浪费,所以我决定构建1Master2Slaves的集群。
可以画一张表或者拓扑图,将各个主机的名称(Master/Slave),IP,承担职责,表示出来。
集群免密码登录设置
1,hosts修改因为之后要在Linux服务器之间传递数据和远程操控,所以首先先将所有服务器的地址记录在本地hosts里。
登录一台服务器
vim /etc/hosts,向其中添加形如下所示的文本
xxx.xxx.xxx.xxx master xxx.xxx.xxx.xxx node1 xxx.xxx.xxx.xxx node2
xxx.xxx.xxx.xxx代表服务器的公网ip,给它们起上别名master,node1和node2,之后就可以使用别名进行访问了。
分别在所有服务器上都做以上修改。
2,配置免密码登录
如上一篇博客: Hadoop入门(1)——单机配置所述,需要进行免密码登录配置,集群中的服务器,两两间通信都需要免密码。
首先在所有服务器上执行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa产生id_rsa.pub文件,将这个文件追加到本机的信任目录中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,然后对信任目录附以权限:
chmod 0600 ~/.ssh/authorized_keys
之后使用scp命令将id_rsa.pub文件传输到集群中的其他服务器上:
scp命令的格式是:
scp [-r] file username@hostIP:存储路径
[-r]:是可选值,如果传输的是文件夹,则需要-r属性传递整个文件夹 file:文件名 username:和ssh命令一样是目标主机用户 hostIP:目标主机IP 存储路径:文件要存放到目标主机的位置
scp命令和ssh命令一样需要密码验证。
例如,我要将node1的id_rsa.pub传输到master服务器,因为我们之前配置过hosts表,所以可以这样传输:
scp /root/.ssh/id_rsa.pub root@master:/home
然后登陆master服务器或者通过ssh连接master服务器,将id_rsa.pub加入到信任目录中,即:
cat /home/id_rsa.pub >> /root/.ssh/authorized_keys
这时node1就可以无密码访问master了,scp和ssh命令都不再需要密码验证。如此将集群中服务器都相互配置,就完成了。
在实际操作中,这是一个比较繁琐又容易出错的工作,相对简单的方式是将所有的id_rsa.pub先集中到一个服务器上,配置好这个服务器的authorized_keys,然后将authorized_keys复制到所有其他服务器上,取代原先的文件。
单机配置和文件复制
集群需要多次的重复配置,为了减少重复劳动,可以先在Master主机上将主要配置按单机配置都配好,然后使用scp命令将包括jdk,hadoop文件夹传输到slaves服务器。Master节点配置
Master节点和Slave节点的配置略有不同,主要体现在HDFS和YARN的配置上,在这里我们将HDFS的NameNode和YARN的ResourceManager放在了同一节点,实际上可以分开,而且在真是工程建议分开。0,修改hadoop-env.sh
添加:
export JAVA_HOME=/usr/java/jdk
1,修改core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> <description>Abasefor other temporary directories.</description> </property> </configuration>
2,修改hdfs-site.xml
因为是Slave节点,所以删除和NameNode有关配置,配置结果如下:
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/hadoop_data/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration>
这里设置了临时文件存储目录为/opt/hadoop/tmp 因此要创建这个目录
mkdir /opt/hadoop/tmp
3,修改yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.manager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
4,修改mapred-site.xml
修改如下
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
5,修改masters和slaves文件
在$HADOOP_HOME/etc/hadoop/文件夹下创建masters文件,键入
master;
在$HADOOP_HOME/etc/hadoop/文件夹下创建slaves文件,隔行键入
node1 node2 node3
PS:新的3.0.0版本貌似改为了workers
Slaves节点配置
Slaves节点和Master节点配置可以基本相同,在HDFS上将namenode改成datanode即可修改hdfs-site.xml
因为是Slave节点,所以删除和NameNode有关配置,配置结果如下:
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration>
启动集群
1,最后的准备工作至此配置基本完成,在启动之前,现将各个节点的namenode和datanode的存储文件夹清空或删除(master删掉datanode,slave删掉namenode)。
然后使用jps命令查看java进程,将在调试过程中启动的hadoop相关的进程全部杀掉。
PS:jps会列出进程的PID(进程号)和进程名,杀死进程命令是
kill 9 PID
2,启动
准备工作做好之后,还在Master节点,执行
sh $HADOOP_HOME/sbin/start-all.sh
3,验证
在所有节点执行jps命令看进程有没有如我们想象的一样启动,然后访问master:8080和master:50070来查看集群状态。如图:
至此,集群配置告一段落。
相关文章推荐
- hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】
- 入门级Hadoop集群搭建详细教程(六):yum本地仓库与远程仓库配置
- Hadoop中的集群配置和使用技巧——分布式计算开源框架Hadoop入门实践(二)
- 【Hadoop入门】Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- hadoop 集群配置入门
- hadoop入门手册2:hadoop【2.7.1】【多节点】集群配置【必知配置知识2】
- hadoop 0.20.2集群配置入门
- :Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- Hbase入门笔记( 二 )-- Hadoop单机环境配置
- Hadoop集群的配置调优
- CentOS的Hadoop集群配置(一)
- Hadoop集群安装详细步骤|Hadoop安装配置
- Hadoop中的集群配置和使用技巧
- HadoopDB集群配置方法
- Hadoop分布式集群配置
- HadoopDB集群配置方法