hadoop2企业级集群部署(DNS域名解析+NFS密钥共享+AWK批量复制),hadoop2awk


注意:apache提供的hadoop-2.6.0的安装包是在32位操作系统编译的,如果在64位的操作上安装hadoop-2.6.0就需要重新在64操作系统上重新编译。
本地已经编译好,可以直接使用 F:\BaiduYunDownload\hadoop-2.6.0-x64 ;
或者直接将32位安装包的lib包替换为F:\BaiduYunDownload\hadoop-2.6.0-x64\hadoop-2.6.0\lib 。


前期准备工作:
1.设置固定IP
2.查看防火墙状态、关闭防火墙
3.配置/etc/hosts文件:使用DNS(可直接参看 Hadoop集群搭建之搭建DNS)

   这里特别要注意,虽然使用了DNS实现域名解析,但是依然要配置每个节点的hosts文件,配置该节点自身的IP地址-主机名-DNS设置的主机名的映射关系

   比如拿192.168.1.201机器节点举例,这个节点我配置的主机名是suh01,其DNS解析的名称是suh01.hadoop.com,那么hosts文件需要配置:

  192.168.1.201 suh01 suh01.hadoop.com

  

4.ssh免登陆:使用NFS(可直接参看hadoop集群搭建之NFS服务)

5.安装JDK,配置环境变量等。


集群规划:
---------------------------------
主机名   IP 安装的软件    运行的进程
suh01.hadoop.com 192.168.1.201 jdk、hadoop NameNode、SecondaryNamenode、ResourceManager
suh02.hadoop.com 192.168.1.202 jdk、hadoop DataNode、NodeManager
suh03.hadoop.com 192.168.1.203 jdk、hadoop DataNode、NodeManager
---------------------------------


安装步骤:
1.安装配置hadoop集群(总共修改了六个配置文件:hadoo-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、slaves、yarn-site.xml、mapred-site.xml )
1.1上传并解压hadoop安装包解压
#tar -zxvf hadoop-2.6.0.tar.gz -C /home/suh

1.2配置相关配置文件(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#cd /home/suh/hadoop-2.6.0/etc/hadoop
export HADOOP_HOME=/home/suh/hadoop-2.6.0
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

1.2.1修改hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_76

1.2.2修改yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_76

1.2.3修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://suh01.hadoop.com:9000</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/suh/hadoop-2.6.0/tmp</value>
</property>
<property>
 <name>io.file.buffer.size</name>
 <value>131072</value>
</property>
</configuration>

1.2.4修改hdfs-site.xml
<configuration>
                  <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>suh01.hadoop.com:9001</value>  
</property>
<property>
 <name>dfs.namenode.name.dir</name>
 <value>/home/suh/hadoop-2.6.0/name</value>  
</property>
<property>
 <name>dfs.datanode.data.dir</name>
 <value>/home/suh/hadoop-2.6.0/data</value>  
</property>
<property>
 <name>dfs.replication</name>
 <value>2</value>  
</property>
</configuration>

1.2.5修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
 <name>mapreduce.jobhistory.address</name>
 <value>suh01.hadoop.com:10020</value>  
</property>
<property>
 <name>mapreduce.jobhistory.webapp.address</name>
 <value>suh01.hadoop.com:19888</value>
</property>
</configuration>

1.2.6修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>suh01.hadoop.com</value>
</property>
</configuration>

1.2.7修改slaves 文件,添加如下内容:
suh02.hadoop.com
suh03.hadoop.com  

1.2.8 创建相关的目录文件
#mkdir tmp data name 

1.3将配置好的hadoop拷贝到其他节点(为了拷贝更快速,建议把/cloud/hadoop-2.6.0/share 下的doc目录删掉:rm -rf doc)
#scp -r /home/suh/hadoop-2.6.0 suh@suh02.hadoop.com:/home/suh/hadoop-2.6.0
#scp -r /home/suh/hadoop-2.6.0 suh@suh03.hadoop.com:/home/suh/hadoop-2.6.0

PS:在节点比较少的情况下可以直接使用以上命令一个个进行复制,
但需要复制的节点有成百上千时,这种方式就很费力了,所以使用以下的方式实现批量复制:
1.3.1 生成批量复制可执行脚本
#cat ./hadoop-2.6.0/etc/hadoop/slaves | awk '{print "scp -rp ./hadoop-2.6.0 suh@"$1":/home/suh"}'>batch_copy_hadoop
#chmod a+x batch_copy_hadoop

PS:查看batch_copy_hadoop里的内容:
scp -rp ./hadoop-2.6.0 suh@suh02.hadoop.com:/home/suh
scp -rp ./hadoop-2.6.0 suh@suh03.hadoop.com:/home/suh
命名注解:cat命令读取slaves文件的内容,然后通过管道传给awk命令进一步执行,
awk命令获取传过来的每一行文本内容,awk内部执行print打印命令,拼装输出内容,并读入的一行内容的第一个域($1)的值(即节点名称)传入,
最后一一写入到 batch_copy_hadoop文件中。

1.3.2 执行batch_copy_hadoop脚本将hadoop复制到其他节点
#sh batch_copy_hadoop


======开始启动集群=======
2.1格式化HDFS
在hdfs的NameNode机器(suh01.hadoop.com)上执行命令:
#bin/hdfs namenode -format


2.2启动HDFS(在suh01.hadoop.com上执行)
#sbin/start-dfs.sh

执行成功后进行相关检验:
(1)、suh01.hadoop.com上多了NameNode、SecondaryNamenode进程;
(2)、接着进入suh02.hadoop.com、suh03.hadoop.com机器,运行jps命令查看,发现其启动了DataNode 进程;


2.3启动YARN(在suh01.hadoop.com上执行,即启动ResourceManager进程,我们启动YARN就可以启动ResourceManager进程)
#sbin/start-yarn.sh

执行成功后进行相关检验:
(1)、suh01.hadoop.com上多了ResourceManager进程;
(2)、接着分别进入到suh02.hadoop.com、suh03.hadoop.com机器,运行jps命令查看,发现其启动了NodeManager进程;

 
======hadoop集群启动成功后,进行测试======  
到此,hadoop2.6.0配置完毕,可以进行浏览器访问:
http://192.168.1.201:50070
NameNode 'suh01.hadoop.com:9000' (active)

验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input /out
查看结果。


======Hadoop集群停止,注意停止顺序=======
1、在suh01上执行:sbin/stop-dfs.sh
该命令执行过程分析:
(1)、首先停止 suh01.hadoop.com上的namenode 进程;
(2)、然后停止 suh02.hadoop.com、suh03.hadoop.com 上的datanode 进程。


2、在suh01上执行:sbin/stop-yarn.sh
该命令执行过程分析:
(1)、首先停止 suh01.hadoop.com 上的ResourceManager 进程;
(2)、然后停止 suh02.hadoop.com、suh03.hadoop.com 上的NodeManager 进程;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关内容