Hadoop 单机/伪分布式安装
Hadoop
2019-06-09
609
0
本文安装过程参考 Hadoop – The Definitive Guide,4th Edition 附录Installing Apache Hadoop. 对其进行了翻译并增加了部署细节及修正部分小坑.
准备
装一个适当版本的Java ,可以访问Hadoop wiki 参考,看了一下最新可用的是1.7版本
yum search java | grep -i --color 'JDK'查看Java所在目录
yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64
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也可以看到哪些进程正在运行
要停止进程可按照以下顺序执行命令
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) [](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