This website requires JavaScript.

Hadoop 单机/伪分布式安装

本文安装过程参考 Hadoop – The Definitive Guide,4th Edition 附录Installing Apache Hadoop.  对其进行了翻译并增加了部署细节及修正部分小坑.

准备

装一个适当版本的Java ,可以访问Hadoop wiki 参考,看了一下最新可用的是1.7版本

yum search java | grep -i --color 'JDK'
yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64
查看Java所在目录

rpm -ql java-1.7.0-openjdk-devel
设置Java Home,一般编辑 ~/.bash_profile  或者 ~/.bashrc  ,也可以放在系统级配置文件 /etc/profile
#set environment varibale
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export APR_HOME=/usr/local/apr
export PATH=$PATH:$JAVA_HOME/bin:$APR_HOME/bin
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/apr/lib

安装

Apache Hadoop Releases 页面下载安装包,我装的是2.6.3下载完后放任意目录解压

tar -xzf hadoop-2.6.3.tar.gz
在运行Hadoop前需要配置好Java环境,如果你已经配置好了JAVA_HOME变量(即我们上一个章节设置的)就无需做其他配置了.或者你可以直接在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh  里面指定JAVA_HOME变量
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64
设置HADOOP_HOME, 在/etc/profile中配置如下
export HADOOP_HOME=~/sw/hadoop-x.y.z
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
变量生效后执行HADOOP查看版本,如果可用的话就会显示版本信息.
[root@]# hadoop version
Hadoop 2.6.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r cc865b490b9a6260e9611a5b8633cab885b3d247
Compiled by jenkins on 2015-12-18T01:19Z
Compiled with protoc 2.5.0
From source with checksum 722f77f825e326e13a86ff62b34ada
This command was run using /root/hadoop-2.6.3/share/hadoop/common/hadoop-common-2.6.3.jar

配置

Hadoop使用的是XML的配置文件,其中公共配置文件为core-site.xml.  HDFS, MapReduce, 以及YARN则是hdfs-site.xml, mapred-site.xml, 和yarn-site.xml 这些文件都在etc/hadoop 目录下。

Hadoop 可以运行在三种模式下::

单机模式 Standalone (local)mode

在这个模式中没有守护进程,所有东西都运行在一个JVM上。单机模式比较适合开发阶段运行MapReduce程序。比较方便测试和debug。

伪分布模式 Pseudodistributed mode

即在单个机器上模拟群集

分布式模式 Fully distributed mode

在群集机器上运行守护进程,具体配置方式后面会讲解。

要让Hadoop运行在不同模式下,你需要做两件事情:设置适合的属性以及开启Hadoop守护进程。下表显示的是每种模式的最少配置。在单机模式下,使用本地文件系统和本地MapReduce。在分布式模式中 HDFS 以及YARN的守护进程需要开启。而MapReduce被配置成使用YARN。

更多配置信息请参考Hadoop Configuration 章节(288页)

单机模式

在这个模式下配置保持默认即可,没有特别需要设置的,也没有守护进程需要运行。

伪分布模式

伪分布模式下需要改动etc/hadoop目录下的配置文件.

<?xml version="1.0"?> <!-- core-site.xml --> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost/</value> </property> </configuration>
<?xml version="1.0"?> <!-- hdfs-site.xml --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
<?xml version="1.0"?> <!-- mapred-site.xml --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
<?xml version="1.0"?> <!-- 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> </configuration>

配置SSH

在伪分布模式下,我们必须启动守护进程。Hadoop实际上并不区分伪分布模式以及分布模式;它只是通过SSH连接群集中的各个主机然后启动守护进程。伪分布式可以认为是分布模式的一个特列。因此我们需要确保SSH可以连接localhost并且不需要输入密码。

生成一个新的SSH key

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
这里要注意,如果authorized_keys是自己手动创建的文件,一定要将文件属性中同组和其他用户的w权限关掉。为了避免授信的用户修改该文件。如果存在对同组和其他人的w权限,即便配置了,互信也是不会生效的。 测试一下,如果没有问题的话不会提示你输入密码的.

ssh localhost

格式化HDFS文件系统

在使用HDFS之前,文件系统需要被格式化,运行以下命令

hdfs namenode -format

启动/停止守护进程

启动HDFS,YARN,和MapReduce守护进程按照以下顺序执行命令

start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver
注意:运行第一个命令start-dfs.sh 后面会提示你是否要连接,打yes即可.(第一次的时候还以为报错了呢....)

如果你在之前把配置文件放在其他目录了,可以申明HADOOP_CONF_DIR 变量或者可以启动的之后指定该目录

start-dfs.sh --config path-to-config-directory start-yarn.sh --config path-to-config-directory mr-jobhistory-daemon.sh --config path-to-config-directory start historyserver
执行完毕以后我们会有两个namenode,一个datanode(HDFS),一个resource manager,一个node manager (YARN),以及history server(MapReduce) 你可以通过日志文件来查看启动是否成功(Hadoop安装目录里面)或者通过web UIs查看 :

http://localhost:50070/  namenode http://localhost:8088/ resource manager http://localhost:19888/ history server

当然,输入命令jps也可以看到哪些进程正在运行

image

要停止进程可按照以下顺序执行命令

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

创建用户目录

伪分布式部署完成后还是感觉用特殊账号账号运行hadoop方便些,因此把hadoop移动到/uer/local ,并把目录权限都赋给hadoop用户

useradd -m hadoop -s /bin/bash passwd hadoop
运行visudo命令然后设置hadoop运行命令的权限(sudo) [![image](http://www.bihell.com/wp-content/uploads/2016/01/image_thumb-17.png "image")](http://www.bihell.com/wp-content/uploads/2016/01/image-17.png)
mv hadoop-2.6.3 /usr/local/hadoop chown -R hadoop:hadoop /usr/local/hadoop
创建用户目录

% hadoop fs -mkdir -p /user/$USER

0条评论
avatar