Hadoop2.6.0 安装注意事项

本文为在 centos 上安装 hadoop 2.6.0 的一些需要注意的地方。过程不会很详细,如需详细配置过程,可看后面的参考链接。

基本注意事项

改主机名

修改 /etc/hosts 文件。每台机器都要,目的是为了每台机器都能够通过主机名访问其他机器

java 环境

每台机器都要。** 为了方便可直接安装 open-jdk (1.7.0 及以上),要安装下面两个包。

java-1.8.0-openjdk  
java-1.8.0-openjdk-devel  # 运行 jps 命令需要的

同时添加 JAVA_HOME 环境变量,如果是 yum 直接安装,JAVA_HOME 的值应该是 /usr/lib/jvm/java-1.8.0

ssh 环境

要求无需密码登录。如果是伪分布式,要求能够无密码登录本机。如果是完全分布式,要求 master 能够无密码登录所有的 slaves

下载 hadoop 编译好的文件,解压并做软链接到 /usr/local/hadoop

添加 hadoop 相关的环境变量

1
2
3
4
5
6
7
8
export HADOOP_HOME=/usr/local/hadoop  
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

伪分布式安装的配置

需要修改 core-site.xmlhdfs-site.xml 两个文件,core-site.xml 中的 localhost 可改为本机主机名,但是 hosts 文件要有对应关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#core-site.xml  
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>


#hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

初次启动需要将 namenode 格式化。

hadf namenode -format

启动 map-reduce

start-dfs.sh

注意:若出现提示 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where # applicable”,该 WARN 提示可以忽略,不会影响 Hadoop 正常运行
原因:http://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-warning

此时可访问 http://localhost:50070,查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

启动 YARN(伪分布式下可选)。Yarn 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,

需要修改配置文件 mapred-site.xmlyarn-site.xml 。修改配置文件 mapred-site.xml,需要将 mapred-site.xml.template 重命名为 mapred-site.xml,不用 yarn 时做相反操作,因为 mapred-site.xml 存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#mapred-site.xml  
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

#yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
```
**启动yarn,先要start-dfs.sh,然后执行下面命令**

./sbin/start-yarn.sh # 启动YARN
./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行情况

访问localhoost:8088便可以看到启动yarn后开启的界面。

**YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了。**



## 完全分布式配置
master和所有的slave的时间要同步,可通过ntp实现

yum -y install ntp && ntpdate time.nist.gov

可选的时间服务器:
```
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org

master 上修改五个配置文件:salves、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#slaves #datanodes的主机名,一行一个

#core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master主机名:9000</value>
</property>
</configuration>

#hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> #datanode的数量
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
</configuration>


#mapred.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>

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

将 master 的 hadoop 文件夹复制到 salve(也是 /usr/local/hadoop 目录),然后在 master 启动即可:

start-dfs.sh  
start-yarn.sh  
mr-jobhistory-daemon.sh start historyserver