Ubuntu16.04+Hadoop 2.x+SSH小集群配置

为了完成课程作业,笔者致力于寻找最简捷的配置方式。目的是连接三个节点运行简单的Hadoop程序。
参考资料:http://hadoop.apache.org/https://medium.com/@ryannel/installing-multi-node-hadoop-on-ubuntu-7decd4c285f0

大致步骤为java配置–>hadoop standalone配置–>hadoop cluster配置
关于节点初始化以及免密码SSH连接的部分请参考:https://blog.csdn.net/silent56_th/article/details/80034102

关于代码编译运行的例子请见:http://www.powerxing.com/hadoop-build-project-by-shell/ (运行之前需要start-dfs.sh以及start-yarn.sh)

Java配置

安装OpenJDK(因为最初尝试的是Hadoop 3.1.0,不支持低版本,理论上对于Hadoop 2.x,可以尝试JDK1.7/6.x):

sudo apt-get install openjdk-8-jdk

配置JAVA_HOME环境变量(可以写到.bashrc文件中):

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"

Hadoop Standalone 配置

hadoop的单机版本配置,包括下载二进制压缩包,解压,以及配置环境变量。
下载网址:http://hadoop.apache.org/releases.html

sudo apt-get install ssh pdsh
tar -xvf hadoop-2.7.6.tar.gz

此时可以测试文件是否正常,在解压文件夹内执行以下命令,应该出现hadoop的用法解释。:

bin/hadoop

配置HADOOP相关的环境变量(可以写到.bashrc文件中):

### HADOOP Variables ###
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
export HADOOP_HOME=/home/hadoop/hadoop-2.7.6
export HADOOP_INSTALL=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export PATH=$PATH:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin

目前,应该已经完成hadoop单机模式的配置,可以使用以下操作进行测试(即运行自带的测试样例)(同样在HADOOP_HOME中执行):

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar grep input output 'dfs[a-z.]+'
cat output/*

Hadoop Cluster配置

首先需要保证各节点间可以免密SSH连接,详情请参考:https://blog.csdn.net/silent56_th/article/details/80034102
然后需要配置resource manager、data node、name node等运行在哪些节点中,如何运行。
具体地,分别对各个配置文件进行修改(etc/hadoop文件夹下的xml文件,遵循html语法规则),修改建议如下:

etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>file:///data/hadoop-data/nn</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:///data/hadoop-data/dn</value>
    </property>
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file:///data/hadoop-data/snn</value>
    </property>
</configuration>

etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>

etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

etc/hadoop/slaves (slaves文件指定奴隶节点IP,可以包括master节点)

master
slave1
slave2

后续测试过程中发现Hadoop2.7.6貌似不支持全局JAVA_HOME,所以需要对etc/hadoop/hadoop_env.sh进行修改,替换export JAVA_HOME=${JAVA_HOME}为具体路径,即export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
上诉配置均需在各个节点执行测试通过(方便的方式是通过scp复制hadoop以及.bashrc等配置文件)
最后,在主节点(master)上执行hdfs namenode -format完成配置。

在主节点上执行start-dfs.sh以及start-yarn.sh(位于sbin文件夹内)可以启动Hadoop的cluster版本,各个节点可以通过jps命令查看正在运行的hadoop daemon。关闭的命令为stop-dfs.shstop-yarn.sh


踩坑记录

  1. Hadoop 3.1.0不支持JDK1.7.x,需要JDK1.8+的版本(即使用高版本编译的)。详情请参考:https://blog.csdn.net/silent56_th/article/details/80314404
  2. Ubuntu14.04的repo里无openjdk-8,而Ubuntu16.04的repo里无openjdk-7。
  3. Hadoop 3.1.0与Hadoop 2.7.x的cluster配置文件格式不同,例如不存在slaves文件等,不宜直接参照网上的攻略。
  4. Hadoop 2.7.6貌似无法使用全局的JAVA_HOME,需要在etc/hadoop/hadoop_env.sh中明确配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值