Hadoop集群安装报告

时间:2024-03-17 11:12:31

去年选修了《网络大数据处理理论与实践》课程,本篇博客记录一下当时的安装过程。

安装教程来自:

助教[email protected]

http://www.powerxing.com/install-hadoop-cluster/

http://xixici.com/2016/07/18/spark-cookbook/


环境及所需软件说明

1)       Ubuntu 14.04 x64(VMware 12.0虚拟机2台, Master:162.105.85.167  Slave1:162.105.85.184, 一个是master节点,一个是slave节点,必须在同一局域网内)

Hadoop集群安装报告Hadoop集群安装报告

Hadoop集群安装报告

Hadoop集群安装报告

1)       Hadoop 2.6.0

2)       Java 1.8.0

3)       Spark 1.6.2

4)       Scala 2.10.6

5)       Eclipse 4.4.2

Tips:不要求系统、软件版本等完全一致,但是注意Hadoop、Spark、Scala及其Eclipse插件等有一定搭配要求,最好去官网查查requirements里有没有说明。现在hadoop等都更新很多代了,但是这里建议的几个版本是目前网上教程和QA最多的,出现问题相对来说比较好解决一些。

Hadoop 集群的安装配置大致为如下流程:

  1. 选定一台机器作为 Master
  2. 在 Master 节点上安装 SSH server、安装 Java 环境
  3. 在 Master 节点上安装 Hadoop,并完成配置
  4. 在其他 Slave 节点上安装 SSH server、安装 Java 环境
  5. 将 Master 节点上的 /usr/local/Hadoop-2.6.0 目录复制到其他 Slave 节点上
  6. 在 Master 节点上开启 Hadoop

安装流程

一、       集群配置

配置伪分布式的话,只需要1台机器即可。如果配置集群的话,需要至少两台能连通的机器。如果没有2台实体机的话,可以采取如下方案:

2台虚拟机。更改网络连接方式为桥接(Bridge)模式,宿主机采用有线网卡的话,那么虚拟机可以自动分配IP(和宿主机在同一网段),也可以固定IP。

两台虚拟机的硬件设置——供参考:我的Master内存设置为3G(Spark的Master需要大量内存,内存不足会报错,尽量设2G以上,或者等报错再调也行),Slave内存设置为1.5G。

(1)修改主机名称

       在Master主机上,

       sudo vim /etc/hostname,将localhost改为Master

       sudo vim /etc/hosts,      将127.0.0.1对应的localhost改为Master

       Slave1主机同理

Hadoop集群安装报告

Hadoop集群安装报告

Hadoop集群安装报告

Hadoop集群安装报告

(2)配置hosts文件

在master主机的/etc/hosts文件中新加一行:    192.168.1.107   Slave1

在slave1主机的/etc/hosts文件中新加一行:    192.168.1.109   Master

(3)没有ssh server的安装ssh server(ubuntu 14.04默认没安装)

       安装:sudo apt-get install openssh-server

       输入命令ssh localhost,若提示“The authenticity of host 'localhost (127.0.0.1)' can't beestablished.”(首次登录提示)则说明安装成功。

Hadoop集群安装报告

(4)配置ssh免密登录

这个操作是要让 Master和各个Slave 节点可以无密码互相SSH 登陆到对方节点上。下面以Master为例,Slave同理。

在Master上输入如下命令:

cd ~/.ssh   (若提示不存在,就mkdir ~/.ssh即可)

ssh-****** -trsa   (然后一直按回车)

cat ./id_rsa.pub>> ./authorized_keys    (让Master能够登录Master本机)

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]   (将公钥传送到Slave1, chjtan是Slave1的用户名)

接着ssh [email protected],若能免密直接登录,说明配置成功。

Hadoop集群安装报告

二、       Java环境配置

(1)将jdk-8u60-linux-x64.tar.gz解压到/opt/java/目录下

sudo tar -zxvf your_path/jdk-8u60-linux-x64.tar.gz–C /opt/java

Hadoop集群安装报告

(2)配置环境变量

sudo vim ~/.bashrc, 在末尾另起一行输入如下内容:

export JAVA_HOME=/opt/java/jdk1.8.0_60

export JRE_HOME=/opt/jdk1.8.0_60/jre

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

source ~/.bashrc (使上述配置生效)

java –version,如果显示java version"1.8.0_60"….则说明配置成功

Hadoop集群安装报告

三、       Hadoop集群安装

(1)解压文件

sudo tar -zxvf your_path/hadoop-2.6.0.tar.gz-C /usr/local/

Hadoop集群安装报告

(2)配置环境变量

vim ~/.bashrc

exportPATH=/usr/local/hadoop-2.6.0/bin:$PATH

source ~/.bashrc

输入hadoopversion若正常显示版本,则配置成功

Hadoop集群安装报告

(3)更改hadoop三个文件的java环境

在Master执行如下命令来修改权限(除了下列编辑文件,后面执行命令时也有很多地方需要权限,直接改了):

sudo chown -R chjtan:chjtan/usr/local/hadoop-2.6.0/

Hadoop集群安装报告

cd /usr/local/hadoop-2.6.0/etc/hadoop

修改hadoop-env.sh中的export JAVA_HOME=${JAVA_HOME}如下:

export JAVA_HOME=/opt/java/jdk1.8.0_60

Hadoop集群安装报告

修改yarn-env.sh中的# exportJAVA_HOME=/home/y/libexec/jdk1.6.0/如下:

export JAVA_HOME=/opt/java/jdk1.8.0_60

Hadoop集群安装报告

修改mapred-env.sh中的# exportJAVA_HOME=/home/y/libexec/jdk1.6.0/如下:

export JAVA_HOME=/opt/java/jdk1.8.0_60

Hadoop集群安装报告

(4)hadoop配置修改

cd /usr/local/hadoop-2.6.0/etc/hadoop

vim slaves,删除原来的localhost,并且添加两行,分别是Master和Slave1(根据前面的配置,Master同时作为NameNode和DataNode)

Hadoop集群安装报告

vim core-site.xml, 修改为如下:

<configuration>

       <property>

               <name>fs.defaultFS</name>

               <value>hdfs://Master:9000</value>

       </property>

       <property>

                <name>hadoop.tmp.dir</name>

                <value>file:/usr/local/hadoop-2.6.0/tmp</value>

                <description>Abase forother temporary directories.</description>

       </property>

</configuration>

Hadoop集群安装报告

vim hdfs-site.xml, 修改configuration为如下(其中dfs.replication表示有两个slave节点——根据前面设置Master也作为DataNode):

<configuration>

       <property>

               <name>dfs.namenode.secondary.http-address</name>

               <value>Master:50090</value>

       </property>

       <property>

               <name>dfs.replication</name>

                <value>2</value>

       </property>

       <property>

               <name>dfs.namenode.name.dir</name>

               <value>file:/usr/local/hadoop-2.6.0/tmp/dfs/name</value>

       </property>

       <property>

                <name>dfs.datanode.data.dir</name>

               <value>file:/usr/local/hadoop-2.6.0/tmp/dfs/data</value>

       </property>

</configuration>

Hadoop集群安装报告

cp mapred-site.xml.template mapred-site.xml&& vim 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>

Hadoop集群安装报告

vim 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>

</configuration>

Hadoop集群安装报告

配置好后,将 Master 上的 /usr/local/hadoop-2.6.0 文件夹复制到各个节点上。

在Master和各个Slave节点上均执行如下命令来修改权限,以免后面操作遇到权限问题:

sudochown -R chjtan:chjtan /usr/local/hadoop-2.6.0/

Hadoop集群安装报告

四、       测试

首次启动需要在Master节点下完成NameNode的初始化,在Master输入如下命令:

hdfs namenode -format

Hadoop集群安装报告

启动 hadoop ,启动需要在 Master 节点上执行如下几个命令:

cd /usr/local/hadoop-2.6.0/sbin

bash start-dfs.sh (注意,ubuntu 14.04版本中,sh命令默认指向dash,使用dash命令执行会报错,也可以将sh默认指向改为bash,然后用sh命令)

bash start-yarn.sh

bash mr-jobhistory-daemon.sh starthistoryserver

Hadoop集群安装报告

Hadoop集群安装报告

输入jps命令,可以查看各个节点所启动的进程。

正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:

Hadoop集群安装报告

在 Slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:

Hadoop集群安装报告

还可以通过Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/

Hadoop集群安装报告

Tips:

如果碰到什么问题不好解决,想要重头开始做的话,把MasterSlave相关进程全部关了,直接删除MasterSlavehadoop-2.6.0/tmp即可。


五、       配置Eclipse的Hadoop插件

安装Eclipse不多说了,直接下载解压就可以用,我的eclipse目录在/opt/eclipse。

(1)将hadoop-eclipse-plugin-2.6.0.jar复制到eclipse的plugin目录下:

sudo cp your_path/hadoop-eclipse-plugin-2.6.0.jar/opt/eclipse/plugins/

重启Eclipse生效。

如果hadoop版本不是2.6.0的话:这里https://github.com/winghc/hadoop2x-eclipse-plugin/tree/master/release有人已经编译好了几个版本hadoop的插件,如果是其他版本的hadoop,需要自行编译插件,参见http://www.cnblogs.com/myresearch/p/hadoop-eclipse-plugin-jar.html)Hadoop集群安装报告

(2)配置 hadoop 安装目录

window ->preference -> hadoopMap/Reduce -> Hadoop installation

directory:/usr/local/hadoop-2.6.0/ -> 点击“OK”

(3) 配置Map/Reduce 视图

window ->Open Perspective ->Map/Reduce -> 点击“OK”

window ->Show View -> 搜索“map/reduce Locations”视图 选上 -> 点击“OK”

在eclipse下方就出现了一个“Map/Reduce Locations选项卡”-> 空白地方右键 选“New

Hadoop Location”,按如下方框配置:

Hadoop集群安装报告

(4)在左边project explorer 列表框中找到“DFS Locations”右键refresh,就会看到

一个目录树,eclipse提供了一个目录树来管理HDFS系统,右键可以创建/删除目录,上传/

查看文件,操作起来很简单,内容与命令 hadoop fs -ls 结果一致

(5)新建Map/Reduce程序

File->New->project->Map/ReduceProject->Next

Project name:example ->Next->Finish-> src右键->New->class

Name:example->Finish -> 左侧窗口就显示一个example.java 类文件了

Hadoop集群安装报告


六、       Hadoop做Word Count

关键代码:

Hadoop集群安装报告

建立输入输出文件夹:

hadoop fs -mkdir -p /data/wordcount

hadoop fs -mkdir -p /output/

Hadoop集群安装报告

复制所需文件到data文件夹:

hadoop fs -put ./WordCount /data/wordcount/

查看HDFS的内容:

http://Master:50070/explorer.html#/

执行wordcount 的mapreduce命令:

hadoop jar../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /data/wordcount/WordCount_Small/output/wordcount_result

Hadoop集群安装报告Hadoop集群安装报告Hadoop集群安装报告Hadoop集群安装报告