本文是Hadoop2单节点安装的说明手册。包括Hadoop 2.2.0版本的在单个计算节点上Standalone模式的安装过程,主要用于测试开发目的。 生产环境的安装请参考其他文档。
系统需求
以下说明Hadoop 2.2.0安装的基本需求。
系统硬件
Intel x86_64服务器。
系统软件
建议采用Ubuntu 12.04.3 LTS Server x64版本或者其他长期支持版本。 另外,如果是虚拟机环境,使用32位版本的Ubuntu即可。
系统环境
建议在安装前,将系统升级到最新:
$ sudo apt-get update
$ sudo apt-get upgrade
安装与配置
Hadoop 2.2.0的安装开始之前,需要安装一些必要的组件。
准备工作
1.权限
建议将/opt修改为用户的:{用户名:用户组名}
$ sudo chown happy:happy /opt
2.Java
建议采用Oracle Java JDK6以上版本。
$ chmod 755 jdk-7u45-linux-x64.bin
./jdk-7u45-linux-x64.bin
mv jdk1.7.0_45 /opt
则JAVA_HOME地址可以如下配置,在/etc/profile中修改:
$ sudo vim /etc/profile
在末尾加入:
export JAVA_HOME=/opt/jdk1.7.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
注:如果是32位的Linux,请安装jdk-7u45-linux-i586的32位Java。 生效:
$ source /etc/profile
测试:
$ java -version
3.Hadoop 2.2.0
从Apache官方可以下载到Hadoop 2.2.0的发布代码,或者在CNNIC下载:
CNNIC相对速度较快。附件中也提供该文件的下载。
注:由于官方本的lib/native是32位,需要编译生成64位版本。所以建议直接 从本地其他服务器下载hadoop-2.2.0-x64.tar.gz
4.Hadoop路径配置
建议将Hadoop安装在/opt下,所以将/opt的属主修改为实际用户(本文以cloud用户为例):
$ sudo chown cloud:cloud /opt
然后将下载的压缩包解压并放到/opt下:
$ tar xzvf hadoop-2.2.0.tar.gz
$ mv hadoop-2.2.0 /opt
然后建议使用软连接:{对源文件建立符号链接,源文件可以是目录也可以是目录,在执行此命令前,/opt/hadoop中不存在hadoop-2.2.0文件,执行后将/opt/hadoop-2.2.0链接到}
$ ln -s /opt/hadoop-2.2.0 /opt/hadoop
5.ssh本地互通
Ubuntu桌面版没有sshd服务,需要先安装:
$ sudo apt-get install tasksel
$ sudo tasksel
选择安装SSH Server。
配置公钥,用ssh-keygen命令生成公钥,使用默认配置即可:参数 -t rsa 表示使用rsa算法进行加密,执行后,会在/home/当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)
$ cd ~
$ ssh-keygen -t rsa -P “”
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
然后执行以下命令:
$ ssh localhost
$ ssh hostname
$ ssh 0.0.0.0
首次连接需要输入yes确认,之后每次执行上述ssh命令应当不用输入密码。其中hostname是指/etc/hostname中本机的名称。
6.全局变量
在/etc/profile的末尾加入:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
确保可以在任意位置执行hadoop命令。 然后将配置文件启用:
$ source /etc/profile
7.目录配置
创建Hadoop的数据存储目录,并修改属主权限:
$ sudo mkdir /hadoop
$ sudo chown cloud:cloud /hadoop
$ mkdir /hadoop/dfs
$ mkdir /hadoop/tmp
配置Hadoop
默认的配置无法直接启动,需要对部分参数进行修改。 查看虚拟机ip
$ ifconfig
修改/etc/hosts
$ sudo vim /etc/hosts
1.加入namenode的ip地址及其对应的主机名
192.168.191.128 happy
2.配置hadoop-env.sh
修改hadoop-env.sh文件:
$ cd /opt/hadoop/etc/hadoop
$ vim hadoop-env.sh
将默认的JAVA_HOME修改为:
export JAVA_HOME=/opt/jdk1.7.0_45
3.配置core-site.xml
修改core-site.xml文件:
$ cd /opt/hadoop/etc/hadoop
$ vim core-site.xml
在
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://happy:9000</value>
<description>The name of the defaultfile system. Either the literal string "local" or a host:port forNDFS.
</description>
<final>true</final>
</property>
更多配置信息,参考:
4.配置hdfs-site.xml
修改hdfs-site.xml:
$ vim hdfs-site.xml
在
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/dfs/name</value>
<description>Determineswhere on the local filesystem the DFS name node should store the name table.</description>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/dfs/data</value>
<description>Determineswhere on the local filesystem an DFS data node should store its blocks.
</description>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
更多hdfs-site.xml的配置信息,参考:
5.配置mapred-site.xml
默认不存在此文件,需要创建:
$ cp mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
在
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:/hadoop/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/hadoop/mapred/local</value>
<final>true</final>
</property>
6.配置yarn-site.xml 执行以下命令:
$ vim yarn-site.xml
在
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>shuffle service that needsto be set for Map Reduce to run </description>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>happy</value>
<description>hostanem of RM</description>
</property>
yarn.resourcemanager.hostname配置后,其他端口号将使用默认。详见:
7./etc/hadoop下在sudo vim slave中将localhost改为主机名master。
初始化
格式化NameNode:
$ hdfs namenode -format
启动DFS
1.测试启动
启动Name Node:
$ hadoop-daemon.sh start namenode
启动Data Node:
$ hadoop-daemon.sh start datanode
使用jps查看进程是否启动:
$ jps
并在以下网页检查: http://happy:50070/dfshealth.jsp 应能看到节点启动。 2.一般启动
如果上述启动过程正常,则一般可以使用以下命令启动DFS:
$ start-dfs.sh
启动Yarn
1.测试启动
执行以下命令:
$ yarn-daemon.sh start resourcemanager
$ yarn-daemon.sh start nodemanager
2.一般启动
如果上述过程正常,则一般启动Yarn使用以下命令即可:
$ start-yarn.sh
异常处理
如果发生任何启动异常,关闭进程后,需要清空数据:[当有一个节点变换为三个节点的时候,注意先将所有节点中的dfs进行格式化]
$ rm -rf /hadoop/dfs/*
$ rm -rf /hadoop/tmp/*
然后重新执行格式化:
$ hdfs namenode -format