现在的位置: 首页 > 操作系统 > 正文

ubuntu12.04-64 server系统上hadoop2.2.0/2.3.0环境搭建及总结

2019年09月29日 操作系统 ⁄ 共 8030字 ⁄ 字号 评论关闭

ubuntu12.04-64 server系统上hadoop2.2.0/2.3.0环境搭建及总结 

第一部分 Hadoop 2.2.0构建准备工作(每台都要做)

Hadoop我们从Apache官方网站直接下载最新版本Hadoop2.2.0。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译。

下载地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/

三台主机的OSubuntu12.04-64
server

在三台机器上创建相同的用户

(这是Hadoop的基本要求)

创建用户的步骤如下:

(1) sudoaddgroup hadoop

(2) sudoadduser --ingroup hadoop haduser

编辑/etc/sudoers编辑文件,在root ALL=(ALL)ALL行下添加haduser ALL=(ALL)ALL。如果不添加这行,haduser将不能执行sudo操作。

在三台主机上分别设置/etc/hosts 和/etc/hostname

hosts这个文件用于定义主机名和IP地址之间的映射关系。

127.0.0.1           localhost
172.20.120.200      master
172.20.120.201      slave1
172.20.120.202      slave2

 

hostname这个文件用于定义Ubuntu的主机名:如:master(或者slave1等)注:可能需要重启才生效。

设置无密码登陆

安装完成后会在~目录(当前用户主目录,即这里的/home/haduser)下产生一个隐藏文件夹.sshls
 -a
可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。

接着在master上生成密钥并配置SSH无密码登录

具体步骤如下:(简化成master无秘钥访问slave,每台机器都做最好)

1进入.ssh文件夹

2 ssh-keygen -t  rsa
之后一路回车(产生秘钥)

3id_rsa.pub
追加到授权的 key
里面去(catid_rsa.pub >> authorized_keys

4重启 SSH
服务命令使其生效

将生成的authorized_keys文件拷贝到两台slave主机相同的文件夹下,命令如下:

scp authorized_keysslave1:~/.ssh/

scp authorized_keysslave2:~/.ssh/

此时已经可以进行ssh的无密码登陆,查看是否可以从master主机无密码登录slave输入命令

$:ssh slave1

$:ssh slave2

安装jdk

(这里以.tar.gz版本,64位系统为例),下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

选择要安装java的位置,如/usr/目录下,新建文件夹java(mkdirjava)

将文件jdk-8-linux-x64.tar.gz移动到/usr/java

解压:tar -zxvfjdk-8-linux-x64.tar.gz

至此,jkd安装准备完毕,下面配置环境变量

4.3、打开/etc/profile(vim /etc/profile)

在最后面添加如下内容:

exportJAVA_HOME=/usr/java/jdk1.8.0/

exportJRE_HOME=/usr/java/jdk1.8.0/

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

exportCLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportJAVA_BIN=/usr/java/jdk1.8.0/bin

执行source/etc/profile

验证是否安装成功:java -version

java version"1.8.0"

Java(TM) SERuntime Environment (build 1.8.0-b132)

JavaHotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

注:每台机器执行相同操作,最好将java安装在相同路径下(不是必须的,但这样会使后面的配置方便很多)

ufw disable (重启生效)

至此,准备工作完毕!

第二部分 集群环境搭建

1、这里我们搭建一个由三台机器组成的集群:

172.20.120.200 haduser/passwd master namenode/ secondarynamenode/resourcemanger

172.120.120.201 haduser/passwd slave1 datanode/nodemanage

172.128.120.202 haduser/passwd slave2 datanode/nodemanage

上面各列分别为IP、user/passwd、hostname和在cluster中充当的角色

进入hadoop-2.2.0安装:

以下操作以haduser登录进行操作

由于hadoop集群中每个机器上面的配置基本相同,所以我们先在namenode上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。但需要注意的是集群中64位系统和32位系统的问题。

1解压文件

将第一部分中下载的hadoop-2.2.0_64.tar.gz解压到/home/haduser/Hadoop/路径下。然后,将其存放于其他地方进行备份。注意:每台机器的安装路径要相同!!

2 hadoop配置过程

这里要涉及到的配置文件有7个:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/slaves

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上个别文件默认不存在的,可以复制相应的template文件获得。

配置文件1hadoop-env.sh

修改JAVA_HOMEexport JAVA_HOME=/usr/java/jdk1.8.0

配置文件2yarn-env.sh

修改JAVA_HOMEexportJAVA_HOME=/usr/java/jdk1.8.0

配置文件3slaves
(这个文件里面保存所有slave节点)

写入以下内容:

slave1

slave2

配置文件4:core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

<property>

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

<value>file:/home/haduser/hadoop/tmp/</value>

<description>Abase for other temporarydirectories.</description>

</property>

<property>

<name>hadoop.proxyuser.hduser.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.hduser.groups</name>

<value>*</value>

</property>

</configuration>

配置文件5:hdfs-site.xml

<configuration>

<property>

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

<value>master:9001</value>

</property>

<property>

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

<value>file:/home/haduser/hadoop/dfs/name</value>

</property>

<property>

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

<value>file:/home/haduser/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

配置文件6: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>

配置文件7:yarn-site.xml

<configuration>

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

<property>

<name>yarn.resourcemanager.address</name>

<value>master:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>master:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>master:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>master:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>master:8088</value>

</property>

</configuration>

 

3、复制到其他节点

这里可以写一个shell脚本进行操作(有大量节点时比较方便)

cp2slave.sh

#!/bin/bash

scp –r /home/haduser/hadoop/hadoop-2.2.0 slave1:~/hadoop

scp–r /home/haduser/hadoop/hadoop-2.2.0 slave2:~/hadoop

4、启动验证

4.1 启动hadoop

进入安装目录: cd ~/hadoop/hadoop-2.2.0/

格式化namenode

./bin/hdfs namenode –format

启动namenode:

sbin/hadoop-daemon.sh start namenode

经验证

jps

NameNodeJps

成功启动

启动hdfs:

 ./sbin/start-dfs.sh

此时在master上面运行的进程有:namenode secondarynamenode

slave1slave2上面运行的进程有:

datanodejps

启动yarn:./sbin/start-yarn.sh

此时在master上面运行的进程有:

namenode secondarynamenoderesourcemanager

slave1slave2上面运行的进程有:datanodenodemanager

查看集群状态:./bin/hdfsdfsadmin –report

查看HDFS: http://172.20.120.200:50070

查看RM: http:// 172.20.120.200:8088

4.2 运行示例程序1

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarrandomwriter /randomwriter

运行示例程序2--wordcount

装好的hadoop测试一1个示例程序WordCount,首先需要在操作系统上新建两个任意文件,然后上传到hadoop,再运行该程序统计文件中单词的个数,最后查看结果。

在操作系统上新建任意文件:
haduser@master:~/hadoop/input$ ls

test1.txt  test2.txt 注:可以任意写入几个单词

查看hadoop的文件系统目录:

haduser@master:~/hadoop/hadoop-2.2.0$ ./bin/hadoop fs -ls /
drwx------   - haduser supergroup          0 2014-04-01 07:30 /tmp

创建hadoop的文件目录/input/output:

./bin/hadoop fs –mkdir /input

./bin/hadoop fs –mkdir /output

执行haduser@master:~/hadoop/hadoop-2.2.0$./bin/hadoop fs -ls /

drwxr-xr-x   - hadusersupergroup          0 2014-04-01 07:28/input

drwxr-xr-x   - hadusersupergroup          0 2014-04-01 07:31 /output

drwx------   - hadusersupergroup          0 2014-04-01 07:30/tmp

上传测试文件到hadoop/input目录下:

./bin/hadoop fs -put ~/hadoop/input /input
./bin/hadoop fs -ls  -R /input
haduser@master:~/hadoop/hadoop-2.2.0$ ./bin/hadoop fs -ls -R /input

-rw-r--r--   3 hadusersupergroup         12 2014-04-01 07:28/input/test1.txt

-rw-r--r--   3 hadusersupergroup         13 2014-04-01 07:28/input/test2.txt

hadoop文件系统命令查看这两个文件的内容:

./bin/hadoop fs -cat /input/test1.txt
hello world
./bin/hadoop fs -cat /input/test2.txt
hello hadoop

运行示例程序(WordCount)
./bin/Hadoop jar ~/hadoop/hadoop-2.2.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.2.0-sources.jarorg.apache.hadoop.examples.WordCount /input /output6

      

………………………………………..省略……………………………………………

File Input Format Counters 
                Bytes Read=25

File Output Format Counters 
                Bytes Written=25

查看程序运行结果:

./bin/hadoop fs -cat /output/part-r-00000
hadoop  1
hello   2
world   1

测试用例3

bin/yarnjar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 10 1000

这是mongodb蒙特卡洛算法计算圆周率的测试用例,pi后跟的两个数字分别表示使用多少个map以及计算的精度。结果如下:

Numberof Maps  = 10
Samples per Map = 1000
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Wrote input for Map #5
Wrote input for Map #6
Wrote input for Map #7
Wrote input for Map #8
Wrote input for Map #9
Starting Job:

注:dataNode
无法启动是配置过程中最常见的问题,主要原因是多次formatnamenode
造成namenode
datanodeclusterID不一致。建议查看datanode上面的log信息。解决办法:修改每一个datanode上面的CID(位于../dfs/data/current/VERSION文件夹中)使其一致。

export HADOOP_DEV_HOME=/home/haduser/hadoop/hadoop-2.2.0  

export PATH=$PATH:$HADOOP_DEV_HOME/bin  

export PATH=$PATH:$HADOOP_DEV_HOME/sbin  

export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}  

export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME} 

export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}  

export YARN_HOME=${HADOOP_DEV_HOME}  

export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop 

 

抱歉!评论已关闭.