Hadoop 2.2.0已经发布,网上有很多教程说明安装的过程,不过总有些问题存在……这里把我安装的过程分享一下。
建议采用Ubuntu 12.04.3 LTS Server x64版本或者其他长期支持版本。
另外,如果是虚拟机环境,使用32位版本的Ubuntu即可。
建议在安装前,将系统升级到最新:
[plain] view plain copy print ?
- $sudo apt-get update
- $sudo apt-get upgrade
准备工作
java
建议采用Oracle Java JDK6以上版本。
[plain] view plain copy print ?
- $chmod 755 jdk-7u45-linux-x64.bin
- ./jdk-7u45-linux-x64.bin
- mv jdk1.7.0_45 /opt
则JAVA_HOME地址可以如下配置,在/etc/profile中修改:
[plain] view plain copy print ?
- $ sudo vim /etc/profile
在末尾加入:
[plain] view plain copy print ?
- 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。
hadoop 2.2.0
从Apache官方可以下载到Hadoop 2.2.0的发布代码,或者在CNNIC下载:
[plain] view plain copy print ?
- http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
CNNIC相对速度较快。附件中也提供该文件的下载。
Hadoop路径配置
建议将Hadoop安装在/opt下,所以将/opt的属主修改为实际用户(本文以cloud用户为例):
[plain] view plain copy print ?
- $sudo chown cloud:cloud /opt
然后将下载的压缩包解压并放到/opt下:
[plain] view plain copy print ?
- $ tar xzvf hadoop-2.2.0.tar.gz
- $ mv hadoop-2.2.0 /opt
然后建议使用软连接:
[plain] view plain copy print ?
- $ ln -s /opt/hadoop-2.2.0 /opt/hadoop
ssh本地互通
配置公钥,使用默认配置即可:
[plain] view plain copy print ?
- $ sshgen
- $ cd ~/.ssh
- $ cat id_rsa.pub >> authorized_keys
然后执行以下命令:
[plain] view plain copy print ?
- $ ssh localhost
首次连接需要输入yes确认,之后每次执行上述ssh命令应当不用输入密码。
全局变量
在/etc/profile的末尾加入:
[plain] view plain copy print ?
- export HADOOP_HOME=/opt/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
确保可以在任意位置执行hadoop命令。
然后将配置文件启用:
[plain] view plain copy print ?
- $ source /etc/profile
目录配置
创建Hadoop的数据存储目录,并修改属主权限:
[plain] view plain copy print ?
- $ sudo mkdir /hadoop
- $ sudo chown cloud:cloud /hadoop
- $ mkdir -p /hadoop/dfs/data
- $ mkdir -p /hadoop/dfs/name
- $ mkdir -p /hadoop/tmp
配置Hadoop
配置hadoop-env.sh
修改hadoop-env.sh文件:
[plain] view plain copy print ?
- $ cd /opt/hadoop/etc/hadoop
- $ vim hadoop-env.sh
将默认的JAVA_HOME修改为:
[plain] view plain copy print ?
- export JAVA_HOME=/opt/jdk1.7.0_45
配置core-site.xml
[plain] view plain copy print ?
- $cd /opt/hadoop/etc/hadoop
- $vim core-site.xml
在<configuration>标签中(即嵌套在该标签中)加入以下内容:
[html] view plain copy print ?
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/hadoop/tmp</value>
- <description>temporary directories.</description>
- </property>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://192.168.1.100:9000</value>
- <description>The name of the defaultfile system. Either the literal string "local" or a host:port forNDFS.
- </description>
- <final>true</final>
- </property>
更多配置信息,参考:
http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/core-default.xml
配置hdfs-site.xml
修改hdfs-site.xml:
[plain] view plain copy print ?
- $ vim hdfs-site.xml
在<configuration>标签中(即嵌套在该标签中)加入以下内容:
[html] view plain copy print ?
- <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>
更多hdfs-site.xml的配置信息,参考:
http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
配置mapred-site.xml
默认不存在此文件,需要创建:
[plain] view plain copy print ?
- $ cp mapred-site.xml.template mapred-site.xml
- $ vim mapred-site.xml
在<configuration>标签中(即嵌套在该标签中)加入以下内容:
[html] view plain copy print ?
- <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>
配置yarn-site.xml
执行以下命令:
[plain] view plain copy print ?
- $ vim yarn-site.xml
在<configuration>标签中(即嵌套在该标签中)加入以下内容:
[html] view plain copy print ?
- <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>192.168.1.100</value>
- <description>hostanem of RM</description>
- </property>
yarn.resourcemanager.hostname配置后,其他端口号将使用默认。详见:
http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
初始化
格式化NameNode:
[plain] view plain copy print ?
- $ hdfs namenode -format
启动DFS
分别按顺序执行以下命令:
[plain] view plain copy print ?
- $ hadoop-daemon.sh start namenode
- $ hadoop-daemon.sh start datanode
使用jps查看进程是否启动:
[plain] view plain copy print ?
- $ jps
并在以下网页检查:
[plain] view plain copy print ?
- http://202.117.16.170:50070/dfshealth.jsp
启动Yarn
[plain] view plain copy print ?
- $ yarn-daemon.sh start resourcemanager
- $ yarn-daemon.sh start nodemanager
异常处理
如果发生任何启动异常,关闭进程后,需要清空数据:
[plain] view plain copy print ?
- $ rm -rf /hadoop/dfs/*/*
- $ rm -rf /hadoop/tmp/*
然后重新执行格式化:
[plain] view plain copy print ?
- $ hdfs namenode -format