您的位置:首页 > 运维架构

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

2015-08-28 14:25 525 查看
注意: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 J***A_HOME=/usr/java/jdk1.7.0_76

1.2.2修改yarn-env.sh

export J***A_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 进程;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: