Hadoop权威指南-附录A 安装Apache Hadoop - 高飞网

附录A 安装Apache Hadoop

2016-10-17 12:03:54.0

1. 先决条件

语言要求java6+,sun jdk
平台要求

Linux、Unix

Windows(权限于开发工作)

2. 安装

下载:

wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

解压:

tar -xzf hadoop-2.7.3.tar.gz

环境变量:

export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_71
export HADOOP_HOME=/home/hadoop/soft/hadoop-2.7.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH

验证:

[deploy@service-103-100 apps]$ hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0

3. 配置

    Hadoop的各个组件均可利用XML文件进行配置。在本文的安装版本(2.7.3)中,配置文件位于$HADOOP_HOME/etc/hadoop中。

core-site.xml
配置通用属性
hdfs-site.xml
配置hadf属性
mapred-site.xml
配置MapReduce配置

Hadoop有以下三种运行模式:

独立(或本地)模式无需运行任何守护进程,所有程序都在同一个JVM上执行。在独立模式下测试和调试MapReduce程序很方便,因此该模式在开发阶段比较合适。
伪分布模式Hadoop守护进程运行本地机器上,模式一个小规模的集群。
全分布模式Hadoop守护进程运行的一个集群上。

下列列出了各种模式所需的最小属性集合。在独立模式下,将使用本地文件系统和本地MapReduce作业运行器 ;在分布模式下,将启动HDFS和MapReduce(或YARN)守护进程。

组件名称属性名称独立模式伪分布模式全分布模式
commonfs.default.namefile:///(默认)hdfs://localhost/hdfs://namenode/
HDFSdfs.replicationN/A13(默认 )
MapReducemapred.job.trackerlocal(默认)localhost:8021jobtracker:8021
YARN(MapReduce2)

yarn.resourcemannger.address

N/Alocalhost:8032

resourcemanager:8032

4. 独立模式

由于默认属性专为本模式所设定,且本模式无需要任何守护进程,因此在独立模式下不需要更多操作。

5. 伪分布模式

$HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://localhost</value>
        </property>
</configuration>

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

$HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
	<property>
		<name>mapred.job.tracker</name>
		<value>localhost:8021</value>
	</property>
</configuration>

如果运行YARN的话,则需要使用yarn-site.xml文件

$HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
        <property>
                <name>yarn.resourcemannger.address</name>
                <value>localhost:8032</value>
        </property>     
        <property>
                <name>yarn.nodemannger.aux-services</name>
                <value>mapreduce.shuffle</value>
        </property>
</configuration>

1. 配置SSH

    伪分布式模式下工作时必须启动守护进程,而启动守护进程的前提是已经成功安装SSH。Hadoop并不严格区分伪分布模式和全分布模式,它只是在集群内的(多台)主机(由slaves文件定义)上启动守护进程:SSH到各个主机并启动一个守护进程。伪分布式是全分布模式的一个特例。在伪分布模式下,(单)主机是本地计算机(localhost),因此需要确保用户能够SSH到本地主机,并且可以不输入密码登录。

    首选确保SSH已安装,且服务器正在运行。如在Ubuntu上可通过以下指令进行测试:

    % sudo apt-get install ssh

    然后基于空口令创建一个新SSH密钥,以实现无密码登录。

% ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
% cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
% chmod 600 ~/.ssh/authorized_keys
% service sshd restart

    用以下指令进行测试:

% ssh localhost

    如果成功,则无需要输入密码。

    如果失败,请参考这篇文章:http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html

    x

2. 格式化HDFS文件系统

    在使用Hadoop前必须格式化生成一个全新的HDFS安装。该过程创建一个空文件系统,仅含存储目录和namenode持久化数据结构的初始版本。由于namenode管理文件系统的元数据,并且datanode可以动态地加入或离开集群,因此这个格式化过程不针对namenode。同理,文件系统的规模也无从谈起。集群中的datanode的数量将决定文件系统的规模。datanode可以在文件系统格式很久之后按需增加。

    格式HDFS文件系统非常容易,只需健入如下指令:

% hadoop namenode -format

输出:

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

/home/hadoop/soft/hadoop-2.7.3/bin/hdfs: line 304: /home/hadoop/soft/jdk1.7.0_71/bin/java: cannot execute binary file
/home/hadoop/soft/hadoop-2.7.3/bin/hdfs: line 304: /home/hadoop/soft/jdk1.7.0_71/bin/java: 成功


3. 启动和终止守护进程(Map Reduce 1)

    为启动HDFS和MapReduce守护进程,键入如下指令:

start-dfs.sh
start-mapred.sh

注:在运行start-dfs.sh时,可能出现错误:如下:

[hadoop@localhost sbin]$ ./start-dfs.sh 
Starting namenodes on [localhost]
localhost: Error: JAVA_HOME is not set and could not be found.
localhost: Error: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [0.0.0.0]

这是因为没有找到JAVA_HOME环境变量引起的。可以在$HADOOP_HOME/etc/hadoop/hadoop-env.sh中将JAVA_HOME变量写为绝对路径,如:

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_71

启动成功时:

[hadoop@localhost ~]$ start-dfs.sh 
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-localhost.out

笔者实验的hadoop版本Hadoop 2.7.3中已不见start-mapred.sh。请参考第4部分启动mapreduce。

本地计算机将启动以下守护进程:一个namenode、一个辅助namenode、一个datanode、一个jobtracker和一个tasktracker。可以浏览$HADOOP_HOME/logs目录中的日志文件来检查守护进程是否成功启动,


或通过Web界面:在http://localhost:50030查看jobtracker或在http://localhost:50070查看namenode。


此处,Java的jps命令也能查看守护进程是否正在运行。

终止守护进程也很容易,示例如下:

% stop-dfs.sh
%


4. 启动和终止守护进程(MapReduce 2)

    为了启动HDFS和YARN守护进程,需要键入以下指令:

% start-dfs.sh
% start-yarn.sh

启动start-yarn.sh后:

[hadoop@localhost ~]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-localhost.out

$HADOOP_HOME/logs目录下会多出一些日志文件:

    这些指令将启动HDFS守护进程,以及面向YARN的资源管理器和节点管理器。资源管理器的Web地址是http://localhost:8088

如下:


    键入以下的指令可以终止守护进程:

% stop-dfs.sh
% stop-yarn.sh


6. 全分布模式

    参考第9章


附 在eclipse中搭建Hadoop开发环境:

http://www.cnblogs.com/kinglau/p/3802705.html

http://www.linuxidc.com/Linux/2015-08/120942.htm

http://www.linuxidc.com/Linux/2015-08/120943.htm

https://github.com/winghc/hadoop2x-eclipse-plugin/blob/master/release/hadoop-eclipse-plugin-2.6.0.jar

https://github.com/tomwhite/hadoop-book