Hadoop 2.2.0 单节点安装

来源:互联网 发布:mysql select into 表 编辑:程序博客网 时间:2024/04/30 00:26

Hadoop 2.2.0已经发布,网上有很多教程说明安装的过程,不过总有些问题存在……这里把我安装的过程分享一下。

建议采用Ubuntu 12.04.3 LTS Server x64版本或者其他长期支持版本。

另外,如果是虚拟机环境,使用32位版本的Ubuntu即可。

建议在安装前,将系统升级到最新:

[plain] view plaincopyprint?
  1. $sudo apt-get update  
  2. $sudo apt-get upgrade  

准备工作

java

建议采用Oracle Java JDK6以上版本。

[plain] view plaincopyprint?
  1. $chmod 755 jdk-7u45-linux-x64.bin  
  2. ./jdk-7u45-linux-x64.bin  
  3. mv jdk1.7.0_45 /opt  

则JAVA_HOME地址可以如下配置,在/etc/profile中修改:

[plain] view plaincopyprint?
  1. $ sudo vim /etc/profile  
在末尾加入:
[plain] view plaincopyprint?
  1. export JAVA_HOME=/opt/jdk1.7.0_45  
  2. export JRE_HOME=$JAVA_HOME/jre  
  3. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib  
  4. export PATH=$PATH:$JAVA_HOME/bin  
注:如果是32位的Linux,请安装jdk-7u45-linux-i58632Java

hadoop 2.2.0

从Apache官方可以下载到Hadoop 2.2.0的发布代码,或者在CNNIC下载:
[plain] view plaincopyprint?
  1. 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 plaincopyprint?
  1. $sudo chown cloud:cloud /opt  
然后将下载的压缩包解压并放到/opt下:

[plain] view plaincopyprint?
  1. $ tar xzvf hadoop-2.2.0.tar.gz  
  2. $ mv hadoop-2.2.0 /opt  
然后建议使用软连接:
[plain] view plaincopyprint?
  1. $ ln -s /opt/hadoop-2.2.0 /opt/hadoop  

ssh本地互通

配置公钥,使用默认配置即可:

[plain] view plaincopyprint?
  1. $ sshgen  
  2. $ cd ~/.ssh  
  3. $ cat id_rsa.pub >> authorized_keys  

然后执行以下命令:

[plain] view plaincopyprint?
  1. $ ssh localhost  
首次连接需要输入yes确认,之后每次执行上述ssh命令应当不用输入密码。

全局变量

在/etc/profile的末尾加入:

[plain] view plaincopyprint?
  1. export HADOOP_HOME=/opt/hadoop  
  2. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin  

确保可以在任意位置执行hadoop命令。

然后将配置文件启用:

[plain] view plaincopyprint?
  1. $ source /etc/profile 

目录配置

创建Hadoop的数据存储目录,并修改属主权限:

[plain] view plaincopyprint?
  1. $ sudo mkdir /hadoop  
  2. $ sudo chown cloud:cloud /hadoop  
  3. $ mkdir -p /hadoop/dfs/data
  4. $ mkdir -p /hadoop/dfs/name
  5. $ mkdir -p /hadoop/tmp

配置Hadoop

配置hadoop-env.sh

修改hadoop-env.sh文件:

[plain] view plaincopyprint?
  1. $ cd /opt/hadoop/etc/hadoop  
  2. $ vim hadoop-env.sh  

将默认的JAVA_HOME修改为:

[plain] view plaincopyprint?
  1. export JAVA_HOME=/opt/jdk1.7.0_45  

配置core-site.xml

修改core-site.xml文件:

[plain] view plaincopyprint?
  1. $cd /opt/hadoop/etc/hadoop  
  2. $vim core-site.xml  

<configuration>标签中(即嵌套在该标签中)加入以下内容:

[html] view plaincopyprint?
  1. <property>  
  2.   <name>hadoop.tmp.dir</name>  
  3.   <value>/hadoop/tmp</value>  
  4.   <description>temporary directories.</description>  
  5. </property>  
  6. <property>  
  7.   <name>fs.defaultFS</name>  
  8.   <value>hdfs://192.168.1.100:9000</value>  
  9.   <description>The name of the defaultfile system. Either the literal string "local" or a host:port forNDFS.  
  10.   </description>  
  11.   <final>true</final>  
  12. </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 plaincopyprint?
  1. $ vim hdfs-site.xml  

<configuration>标签中(即嵌套在该标签中)加入以下内容:

[html] view plaincopyprint?
  1. <property>  
  2.   <name>dfs.namenode.name.dir</name>  
  3.   <value>file:/hadoop/dfs/name</value>  
  4.   <description>Determineswhere on the local filesystem the DFS name node should store the name table.</description>  
  5.   <final>true</final>  
  6. </property>  
  7.   
  8. <property>  
  9.   <name>dfs.datanode.data.dir</name>  
  10.   <value>file:/hadoop/dfs/data</value>  
  11.   <description>Determineswhere on the local filesystem an DFS data node should store its blocks.  
  12.   </description>  
  13.   <final>true</final>  
  14. </property>  
  15.   
  16. <property>  
  17.   <name>dfs.replication</name>  
  18.   <value>1</value>  
  19. </property>  
  20.   
  21. <property>  
  22.   <name>dfs.permissions</name>  
  23.   <value>false</value>  
  24. </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 plaincopyprint?
  1. $ cp mapred-site.xml.template mapred-site.xml  
  2. $ vim mapred-site.xml  

<configuration>标签中(即嵌套在该标签中)加入以下内容:

[html] view plaincopyprint?
  1. <property>  
  2.   <name>mapreduce.framework.name</name>  
  3.   <value>yarn</value>  
  4. </property>  
  5.   
  6. <property>  
  7.   <name>mapred.system.dir</name>  
  8.   <value>file:/hadoop/mapred/system</value>  
  9.   <final>true</final>  
  10. </property>  
  11.   
  12. <property>  
  13.   <name>mapred.local.dir</name>  
  14.   <value>file:/hadoop/mapred/local</value>  
  15.   <final>true</final>  
  16. </property>  

配置yarn-site.xml

执行以下命令:

[plain] view plaincopyprint?
  1. $ vim yarn-site.xml  

<configuration>标签中(即嵌套在该标签中)加入以下内容:

[html] view plaincopyprint?
  1. <property>  
  2.   <name>yarn.nodemanager.aux-services</name>  
  3.   <value>mapreduce_shuffle</value>  
  4.   <description>shuffle service that needsto be set for Map Reduce to run </description>  
  5. </property>  
  6.   
  7. <property>  
  8.   <name>yarn.resourcemanager.hostname</name>  
  9.   <value>192.168.1.100</value>  
  10.   <description>hostanem of RM</description>  
  11. </property>  

yarn.resourcemanager.hostname配置后,其他端口号将使用默认。详见:

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

初始化

格式化NameNode:

[plain] view plaincopyprint?
  1. $ hdfs namenode -format  

启动DFS

分别按顺序执行以下命令:

[plain] view plaincopyprint?
  1. $ hadoop-daemon.sh start namenode  
  2. $ hadoop-daemon.sh start datanode  

使用jps查看进程是否启动:

[plain] view plaincopyprint?
  1. $ jps  

并在以下网页检查:
[plain] view plaincopyprint?
  1. http://202.117.16.170:50070/dfshealth.jsp  

启动Yarn

[plain] view plaincopyprint?
  1. $ yarn-daemon.sh start resourcemanager  
  2. $ yarn-daemon.sh start nodemanager  

异常处理

如果发生任何启动异常,关闭进程后,需要清空数据:
[plain] view plaincopyprint?
  1. $ rm -rf /hadoop/dfs/*/*
  2. $ rm -rf /hadoop/tmp/*  
然后重新执行格式化:
[plain] view plaincopyprint?
  1. $ hdfs namenode -format 
0 0
原创粉丝点击