阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

64位Ubuntu 12.04 Server系统上Hadoop2.2.0/2.3.0环境搭建及总结

105次阅读
没有评论

共计 11669 个字符,预计需要花费 30 分钟才能阅读完成。

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

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

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

三台主机的OS:Ubuntu 12.04-64 server

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

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

(这是 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

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

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

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

三台主机的OS:Ubuntu 12.04-64 server

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

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

(这是 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

运行示例程序 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计11669字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中