[记录]超详细配置hadoop2.7.3集群与开发环境

环境概要
通常开发和集群是分开的,这里用虚拟机来搭建hadoop集群,实体机将用eclipse作为开发工具,实体机操作系统会印象后续开发工具的配置,具体见后面说明.需要注意,这里的配置,不会考虑集群安全性,只为了提供可用于开发学习的集群环境.

    集群环境:

  1. linux - ubuntu server 16.04
  2. hadoop 2.7.3
  3. 网段 - 192.168.23.0/24


配置概要

  1. 配置linux ssh,支持无密码登录
  2. 配置java运行环境
  3. 配置单个hadoop
  4. 配置多个hadoop
  5. 配置eclipse的hadoop开发插件

配置linux ssh,支持无密码登录
假设已经在虚拟机内安装了ubuntu,下面开始配置环境.

先配置网络环境,我的虚拟机网段为:192.168.23.0/24,hadoop主节点为master.hadoop(192.168.23.131)

修改linux的hostname,配置ip和dns等,下面直接贴内容:
/etc/hostname内容为:
master.hadoop
/etc/network/interfaces内容为:
auto ens33
iface ens33 inet static #静态
address 192.168.23.131 #ip地址
netmask 255.255.255.0
gateway 192.168.23.2
dns-nameservers 192.168.23.2 #我的实体机ip

/etc/hosts文件内容:
127.0.0.1 localhost
192.168.23.131 master.hadoop
192.168.23.132 slaves1.hadoop
192.168.23.133 slaves2.hadoop

安装ssh环境:
sudo apt-get install ssh
sudo apt-get install rsync

免密码登录配置:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

测试是否可免密码登录,我使用的用户名是kime:

ssh kime@master.hadoop #也可以用localhost,这里是顺便测试dns是否配置正确

如果没有提示输入密码,那么ssh免密码配置成功.
-------------------------------------------------
配置java环境
下载jdk,地址是:http://www.oracle.com/technetwork/java/javase/downloads/,这里我下的是jdk1.8的,写这里记录的时候,jdk的文件为:jdk-8u111-linux-x64.tar.gz
我这里安装到以下目录:
/opt/jdk1.8.0
在/etc/profie文件最后,增加java环境变量,也可以在/etc/profile.d/目录下增加一个文件保存以下内容:

JAVA_HOME=/opt/jdk1.8.0
CLASSPATH=.:$JAVA_HOME/lib
PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME
export CLASSPATH

配置以上内容后,建议注销或重启系统,或者使用以下命令:
source /etc/profile
测试java环境是否成功,输入以下命令:
java -version
无报错,即配置java环境成功.
-------------------------------------
配置单个hadoop
下载hadoop,地址是:http://hadoop.apache.org/releases.html,我下载的是2.7.3版本,解压到以下目录
/opt/hadoop2
为了方便命令调用,我把hadoop目录配置到/etc/profile文件内,包括前面java的配置,整体如下:

JAVA_HOME=/opt/jdk1.8.0
CLASSPATH=.:$JAVA_HOME/lib
HADOOP_PREFIX=/opt/hadoop2
HADOOP_HOME=$HADOOP_PREFIX
PATH="$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH"
export JAVA_HOME
export CLASSPATH
export HADOOP_PREFIX
export HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

对于hadoop配置文件,主要在$HADOOP_HOME/etc/hadoop目录内,下面贴上我的配置:

core-site.xml文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master.hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/kime/hadoop-tmp</value>
</property>
</configuration>

hdfs-site.xml文件:

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

yarn-site.xml文件:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master.hadoop</value>
</property>
</configuration>

mapred-site.xml文件:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>master.hadoop:9001</value>
</property>
</configuration>

slaves文件:

master.hadoop
slaves1.hadoop
slaves2.hadoop

workers文件:

master.hadoop
slaves1.hadoop
slaves2.hadoop

#以上配置slaves和workers文件中,出现有"slaves*.hadoop"的是集群配置的其他节点的配置,如果是单个节点,不用配置
#建议重启系统后,再进行下面的步骤

首次启动hadoop时,需要先格式化namenode,用以下命令:
hdfs namenode -format
以上命令会输出一堆日志,如果是最后的几行中能看到sucessfull字样,即表示格式化成功,可以启动hadoop.
启动hadoop,下面命令会启动hdfs和yarn等,具体可查看其文件内容:
$HADOOP_HOME/sbin/start-all.sh
启动之后,可用以下命令查看是否成功:
jps #查看java进程
netstat -anlp|grep java #查看进程和端口

停止hadoop的命令为:
$HADOOP_HOME/sbin/stop-all.sh
----------------------------------------
配置多个hadoop
hadoop集群的其他节点配置,可参照上面对单个节点的配置,除java等环境之外,主要修改dns和ip和hostname配置,涉及文件如下:
/etc/hostname #根据实际情况该主机名称,比如:slaves1.hadoop
/etc/network/interfaces #修改ip地址

因为是虚拟机,所以我直接克隆了前面配好的那个虚拟机镜像,在其基础上进行修改,配置好主机名和ip地址后,写了sh文件把hadoop配置文件复制到其他节点上,复制脚本内容如下:
#!/bin/bash
SLAVES="slaves1.hadoop slaves2.hadoop"
for slave in $SLAVES ; do scp /opt/hadoop2/etc/hadoop/*.xml kime@$slave:/opt/hadoop2/etc/hadoop/ ; done

#注意以上脚本中的slaves和hadoop的配置文件的路径
执行以上脚本,复制hadoop配置文件到集群中其他节点.
再次执行启动hadoop的命令,即可启动hadoop集群

hadoop提供了web界面,按以上配置,对应的web地址分别为:
http://192.168.23.131:8088/
http://192.168.23.131:19888/
http://192.168.23.131:50070/

如果配置无误,那么以上地址将会显示对应内容
-----------------------------------------
配置eclipse的hadoop开发插件
这里使用hadoop2x-eclipse-plugin插件,在hadoop主节点的虚拟机master.hadoop上进行编译.
这里假设eclipse的安装目录为/opt/eclipse

从源码编译,需要ant支持,而下载插件的源码需要git,请自行安装ant和git.
在ubuntu上,可用以下命令安装:
sudo apt-get install ant git

假设已经安装好ant和git,下面开始编译插件.
从github下载插件源码:
git clone https://github.com/winghc/hadoop2x-eclipse-plugin/
进入其中的src/contrib/eclipse-plugin目录,执行ant命令:
ant jar -Dversion=2.7.3 -Dhadoop.version=2.7.3 -Declipse.home=/opt/eclipse -Dhadoop.home=/opt/hadoop2
执行以上命令,可能会出现卡顿,找不到jar文件,commons-io错误等问题,需要进行以下修改:
1,修改src/ivy/libraries.properties文件,该文件内记录着hadoop2.7.3的依赖包版本,请根据$HADOOP_HOME/share/hadoop/common/安装目录下的jar的实际版本进行修改;
2,修改src/contrib/eclipse-plugin/目录下的build.xml,增加copy节点:
<copy file="${hadoop.home}/share/hadoop/common/lib/commons-io-${commons-io.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
修改attribute为Bundle-ClassPath的value值,增加一行:
lib/commons-io-${commons-io.version}.jar,

再次执行编译命令:
ant jar -Dversion=2.7.3 -Dhadoop.version=2.7.3 -Declipse.home=/opt/eclipse -Dhadoop.home=/opt/hadoop2
如果没有错误,输出日志将提示编译出的插件的位置,文件名类似:hadoop-eclipse-plugin-2.7.3.jar.

复制hadoop-eclipse-plugin-2.7.3.jar到eclipse的plugins目录内即可.
启动eclipse,进行以下配置:
1,在Perferences中配置hadoop的安装目录;

2,从Show View中打开Map/Reduce Locations,选择New hadoop location.
其中,Map/Reduce(v2)Master的host为:192.168.23.131,Post为:9001;
而DFS Master的port为:9000;User name则填:kime;这些都是根据前面的集群配置填写.

如果是在linux上进行hadoop开发,上面的配置就可以了;
如果是在window上进行hadoop开发,则还需要增加(winutils.exe, hadoop.dll)等文件到hadoop安装目录中,具体见后面说明.
前面提到的文件,下载地址为:https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip,把其中的dll和exe文件复制到hadoop安装目录bin内.如果有兴趣自己从源码编译的,请查看hadoop编译说明:https://wiki.apache.org/hadoop/Hadoop2OnWindows.

经过以上配置,应该可以在eclipse内进行hadoop开发了.

PS:在整个配置过程中可能遇到很多错误,请重新对比上面的配置,已修复遇到的错误,错误可能有:

  • Failed to locate the winutils binary in the hadoop binary path
  • java.lang.NoClassDefFoundError: org/apache/commons/io/Charsets
  • java.lang.ClassNotFoundException: org.apache.commons.io.Charsets

折腾吧~~~

» 本文链接地址:https://www.xidige.com/954

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论1,145人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告