共计 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)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。
接着在 master 上生成密钥并配置 SSH 无密码登录
具体步骤如下:(简化成 master 无秘钥访问slave,每台机器都做最好)
1、进入 .ssh 文件夹
2、 ssh-keygen -t rsa之后一路回车(产生秘钥)
3、把 id_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 文件获得。
配置文件1:hadoop-env.sh
修改 JAVA_HOME 值export JAVA_HOME=/usr/java/jdk1.8.0
配置文件2:yarn-env.sh
修改 JAVA_HOME 值exportJAVA_HOME=/usr/java/jdk1.8.0
配置文件 3:slaves(这个文件里面保存所有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
NameNode和Jps
成功启动
启动hdfs:
./sbin/start-dfs.sh
此时在 master 上面运行的进程有:namenode secondarynamenode
slave1和 slave2 上面运行的进程有:
datanode和jps
启动yarn:./sbin/start-yarn.sh
此时在 master 上面运行的进程有:
namenode 、secondarynamenode和resourcemanager
slave1和 slave2 上面运行的进程有:datanode和nodemanager
查看集群状态:./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)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。
接着在 master 上生成密钥并配置 SSH 无密码登录
具体步骤如下:(简化成 master 无秘钥访问slave,每台机器都做最好)
1、进入 .ssh 文件夹
2、 ssh-keygen -t rsa之后一路回车(产生秘钥)
3、把 id_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 文件获得。
配置文件1:hadoop-env.sh
修改 JAVA_HOME 值export JAVA_HOME=/usr/java/jdk1.8.0
配置文件2:yarn-env.sh
修改 JAVA_HOME 值exportJAVA_HOME=/usr/java/jdk1.8.0
配置文件 3:slaves(这个文件里面保存所有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 和datanode的 clusterID 不一致。建议查看 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