hadoop集群环境搭建

前言

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

环境

本教程使用ubuntu16.04作为操作系统
hadoop版本为hadoop-2.8.2(可自行下载其他版本)
因本人电脑配置原因,暂选2个节点作为集群环境

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

网络配置

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

master主机地址为:
master主机的ip地址
slave主机地址为:
slave主机的ip地址

主机名配置

为了便于区分需要修改各个节点的主机名,及主机名与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 /usr/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 运行程序时,输出目录不能存在,否则会提示错误”
这里写图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值