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

hadoop集群环境搭建

2017-12-19 15:37 477 查看

前言

本文只介绍hadoop集群环境的搭建,hadoop单机配置和hadoop伪分布配置将在hadoop安装教程中介绍

环境

本教程使用ubuntu16.04作为操作系统

hadoop版本为hadoop-2.8.2(可自行下载其他版本)

因本人电脑配置原因,暂选2个节点作为集群环境

节点名称操作系统ip
masterubuntu192.168.78.139
salveuhuntu192.168.78.140

网络配置

我使用的是虚拟机安装的系统,两台主机的网络均为NAT模式



master主机地址为:



slave主机地址为:



主机名配置

为了便于区分需要修改各个节点的主机名,及主机名与ip地址之间的映射关系

在ubuntu中,我们可以通过“hostname 主机名”的方法临时修改主机名,也可以通过修改/etc/hostname文件的方法永久修改主机名,这里采用永久方法

vim /etc/hostname


分别将主机名设置为master和slave,可通过“hostname”命令验证





centos系统,则是修改/etc/sysconfig/network 文件,改为 HOSTNAME=master

接下来设置ip和主机之间的映射关系

vim /etc/hosts




该动作需要在两个节点上都完成

修改完成后需要重启,才能看到主机名的变化

配置好后,可通过ping命令测试是都通,使用ctrl+C结束ping动作,也可使用“ping 主机名 -c 次数”限定ping包的次数





至此所有节点的网络配置已完成

ssh无密钥登录

目的是让master可以无密钥登录到所有节点上,在master节点上执行

ssh-keygen -t rsa #生成密钥对
#将公钥传输到所有节点上
scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@slave:/root/.ssh/authorized_keys


传输完成后,可执行如下命令,进行验证,如果还需要输入yes,则说明不成功,如成功进入后,记得执行exit命令退出

ssh master
ssh slave






增加用户

分别在master和slave节点上增加hadoop用户

useradd -m hadoop -s /bin/bash
passwd hadoop


可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题

adduser hadoop sudo


配置java环境

注:master和slave环境都需使用下面的方法配置java环境

为图方便,直接使用命令安装,

apt-get install openjdk-8-jre openjdk-8-jdk


该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-8-openjdk-amd64。

配置JAVA_HOME

vim /etc/profile


在文件的最下方添加

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64


接着让该环境变量生效,执行如下代码

source /etc/profile


检查设置是否正确

echo $JAVA_HOME
java -version


结果如下图所示



这样hadoop运行所需的java环境就配置完了

安装Hadoop

master节点上hadoop的安装

下载Hadoop

可以通过https://mirrors.cnnic.cn/apache/hadoop/common/下载,选择稳定版“stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个带有 src 的是 Hadoop 源代码,需要编译才可使用。

wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.8.2.tar.gz


安装Hadoop

我选择将其安装在/usr/local

tar -xvf hadoop-2.8.2.tar.gz  -C /usr/local
cd /usr/local
mv ./hadoop-2.8.2 ./hadoop
chown -R hadoop.hadoop ./hadoop


只需解压就可完成安装,检查hadoop是否可用

/usr/local/hadoop/bin/hadoop version




配置Hadoop

注意:以下命令均以/usr/local/hadoop为当前路径

core-site.xml文件

vim etc/hadoop/core-site.xml


添加如下内容:

<configuration>

<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>


hdfs-site.xml文件

vim etc/hadoop/hdfs-site.xml


添加如下内容:

<configuration>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>

<property>
<name>dfs.replication</name>
<value>1</value>#只有一个datanode节点,所以dfs.replication的值为1
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>


mapred-site.xml文件

需要将etc/hadoop/mapred-site.xml.template先重命名为etc/hadoop/mapred-site.xml

mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/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>


yarn-site.xml文件

vim etc/hadoop/yarn-site.xml


添加如下内容:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>


slaves文件

vim etc/hadoop/slaves


slaves文件里面记录的是集群里所有DataNode的主机名,因让master节点仅作为namenode使用,因此需将原来的额localhost删掉,写入slave即可

如果,master节点上之前跑过伪分布模式,需要删除之前的临时文件

rm -rf /usr/local/hadoop/tmp
rm -r /usr/local/hadoop/logs/*


slave节点上hadoop的安装

master节点配置好后,slave节点上的安装比较简单,直接上master上的/usr/local/hadoop目录拷贝到slave节点上即可

rm -rf /us
b6ef
r/loca/hadoop #如果之前有的话,需要删除旧的hadoop目录
scp -r /usr/local/hadoop root@slave:/usr/local
chown -R hadoop.hadoop /usr/local/hadoop


可能需要一段时间,为了节省时间可以打包后再传输

格式化namenode节点

为了在master节点的任意目录中可以使用hdfs、hadoop等命令,需在/etc/profile文件中加入一行:

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin


使其生效

source /etc/profile


接下来格式化namenode

hdfs namenode -format


启动hadoop

启动需在master节点上完成

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver#启动历史服务器


启动historyserver后,我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面,可以直接查看已经运行完的作业情况

也可以使用start-all.sh替代start-dfs.sh和start-yarn.sh

启动完成后可通过jps命令查看各节点所启动的进程

jps


在master节点上可以看到如下进程



在slave节点上可以看到如下进程



缺少任意一个进程,都表示出错,另外还可以在master节点上查看datanode是否正常启动,其中,live datenode的值非0,说明启动成功。



还可以通过web页面查看



本文使用的win10主机进行浏览器访问测试,为了更好的识别master和slave,需要在win10主机的hosts文件(路径为:C:\Windows\System32\drivers\etc\hosts)中添加master和slave的信息



关闭hadoop

若需要关闭hadoop集群,也是在master主机上执行

stop-dfs.sh
stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver


同理,也可使用stop-all.sh代替stop-dfs.sh和stop-yarn.sh

本文后面还要使用hadoop集群,所以先不关闭

到此,hadoop的集群已经搭建完毕了,下面我们来运行一个实例

分布式实例

master节点上完成

hdfs dfs -mkdir -p /user/root
hdfs dfs -mkdir -p input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input


可以通过web查看datanode的状态



接下来就可以执行MapReduce 作业了

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'


在输出信息中可以看到具体的进度



也可通过web页面http://master:8088/cluster查看执行进度





查看输出结果

hdfs dfs -cat output/*




将运行结果取回本地

hdfs dfs -get output ./output
cat ./output/*


注意“Hadoop 运行程序时,输出目录不能存在,否则会提示错误”

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: