首页 > 代码库 > CentOS 7下安装Hadoop2.2

CentOS 7下安装Hadoop2.2

这里就介绍CentOS的安装了,直接进入Hadoop2.2伪分布模式安装。

1.安装包下载

1.1.下载JDK1.7

目前JDK的版本是jdk1.8.0_25,这里下载的是jdk1.7.0_67。

下载页面:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

 

1.2.下载Hadoop2.2

目前Hadoop的最新版本是hadoop2.5,这里下载的是Hadoop2.2

下载页面:http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/

 

2.安装Hadoop2.2

2.1.配置安装环境

2.1.1.创建hadoop用户

使用root账号登陆CentOS,执行一下操作:

# /usr/sbin/groupaddhadoop

创建hadoop用户,隶属于hadoop组

# /usr/sbin/useradd -ghadoophadoop

修改hadoop用户的密码为hadoop:

# passwd hadoop

 

2.1.2.配置hadoop用户

编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,设置静态IP地址信息。

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.15.136

NETMASK=255.255.255.0

GATEWAY=192.168.15.2

使修改的参数立即生效:

先关闭:

#  /sbin/ifdown eth0

再启动:

# /sbin/ifup eth0

 

编辑/etc/hostname文件,设置主机名称

# vi /etc/hostname

Master.Hadoop

 

编辑/etc/hosts文件,设置主机名称与IP映射关系

# vi /etc/hosts

192.168.15.136Master.Hadoop

 

2.1.3.创建软件目录

创建u01目录,用于安装hadoop软件。

mkdir-p /u01/hadoop

chown -Rhadoop:hadoop /u01/hadoop/

chmod -R775 /u01/hadoop/

 

hadoop数据存放目录

mkdir-p /data/hadoop

chown-R hadoop:hadoop /data/hadoop

chmod-R 775 /data/hadoop

以上都是使用root账号进行操作,接下以hadoop用户登陆,开始安装hadoop2.2

 

2.1.4.上传安装包

以hadoop用户登陆CentOS,使用FTP工具将安装包上传到/u01/hadoop/目录。

 

2.2.安装JDK

由于下载JDK是免安装版,只需解压到指定的目录就完成了安装,将JDK安装到/u01/hadoop/jdk目录下。

# tar-zxvf jdk-7u67-linux-x64.tar.gz

# mv jdk1.7.0_67/ /u01/hadoop/jdk

配置JDK环境变量

vi .bash_bash_profile

export JAVA_HOME=/u01/hadoop/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH

(注意:在配置PATH环境变量时,一定要将$JAVA_HOME/bin放置在$PATH前面。这样就不会使用系统默认的JDK)

执行source命令,立即生效JDK环境变量

# source .bash_profile

查看JDK是否安装成功!

# java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

出现以上的信息,表明JDK安装成功!

 

2.3.安装Hadoop2.2

Hadoop有三种运行模式:单机模式、伪分布式与完全分布式。伪分布式是只有一个节点的集群。这里只介绍伪分布式的安装,主要用户学习。

 

2.3.1.配置SSH免密码登陆

Hadoop需要通过SSH来启动Slave节点的守护进程,即使安装伪分布式也需要SSH。我在安装CentOS的时候,就已经安装了SSH。只需要配置免密码登陆就可以了。如果没有安装SSH的话,就先安装SSH后,再进入下面的步骤。

在hadoop用户的home目录执行以下命令:

$ ssh-keygen -t dsa -P ‘ ‘ -f ~/.ssh/id_dsa

(注解:ssh-keygen表示生成密钥;-t指定密钥类型;-P 提供密语;-f生成的密钥文件)

$ cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ chmod600 ~/.ssh/authorized_keys

 

验证是否可以免密码登陆

$ sshlocalhost
Last login: Sat Oct 25 07:42:43 2014

出现这样的信息,表示SSH配置成功。

 

2.3.2.hadoop2.2安装与配置

hadoop的安装过程非常简单,只需要解压到指定的目录就可以了,其实hadoop的安装步骤主要是在配置文件。将hadoop安装包解压到/u01/hadoop/hadoop目下。

tar-zxvf hadoop-2.2.0.tar.gz

mv  hadoop-2.2.0 /u01/hadoop/hadoop

主要配置这五个文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

 

进入hadoop配置文件目录

cd /u01/hadoop/hadoop/etc/hadoop/

指定JDK的home目录:

#vi hadoop-env.sh

exportJAVA_HOME=/u01/hadoop/jdk

 

Hadoop核心配置文件:

$ vi core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://Master.Hadoop:9000</value>

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

       <value>file:/data/hadoop/tmp</value>

        <description>Abase for othertemporary directories.</description>

    </property>

</configuration>

 

(注释:fs.defaultFS指定HDFS的地址及端口,hadoop.tmp.dir可选配置)

 

$ vi hdfs-site.xml

<configuration>

    <property>

       <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

       <name>dfs.namenode.name.dir</name>

       <value>file:/data/hadoop/dfs/name</value>

    </property>

    <property>

       <name>dfs.datanode.data.dir</name>

       <value>file:/data/hadoop/dfs/data</value>

    </property>

     <property>

       <name>dfs.namenode.checkpoint.dir</name>

       <value>file:/data/hadoop/dfs/namesecondary</value>

    </property>  

</configuration>

 

(注解:dfs.replication指定HDFS文件的备份方式默认3,由于是伪分布式,因此需要修改为1。其他为可选项)

 

$ vi mapred-site.xml

<configuration>

    <property>

       <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

    <property>

       <name>yarn.app.mapreduce.am.staging-dir</name>

        <value>/data/hadoop/staging</value>

    </property>

</configuration>

 

(注解:mapreduce.framework.name配置mapreduce框架,其他可选)

 

viyarn-site.xml

<configuration>

    <!-- Site specific YARN configurationproperties -->

    <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>

    <property>

       <name>yarn.resourcemanager.hostname</name>

        <value>Master.Hadoop</value>

    </property>

</configuration>

(注解:配置YARN信息)

 

2.3.3.配置Hadoop环境变量

export JAVA_HOME=/u01/hadoop/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
export HADOOP_HOME=/u01/hadoop/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

2.3.4.格式HDFS文件系统

在启动Hadoop前,需要格式化Hadoop的HDFS文件系统,如果配置Hadoop环境变量,可以直接执行hadoop命令。否则,进入Hadoop的bin目录执行文件格式命令:

$ hadoop namenode -format

此时,Hadoop整个安装与配置过程完成了。

 

3.启动Hadoop

进入Hadoop的sbin目录,启动Hadoop,验证是否安装成功!

# ./start-all.sh

使用java的jps命令查看是否有hadoop的进程

# jps

10197 NameNode
10769 ResourceManager
10579 SecondaryNameNode
11156 Jps
10898 NodeManager
10344 DataNode

出现以上进程,说明Hadoop安装成功。

(注意:Hadoop2.0使用YARN管理代替了JobTracke和TaskTracker,因此这里只有ResourceManager进程,没有JobTracke和TaskTracker两个进程了)

 

打开浏览器,输入:

http://localhost:50070/

如果能够查看信息说明Hadoop安装成功了

 

4.运行WordCount实例

创建测试两侧文件file1.txt,file2.txt

$ vi file1.txt

welcome to hadoop

hello world!

$ vi file2.txt

hadoop hello

 

在HDFS上创建输入input输入目录:

$ hdfs dfs -mkdir /input

 

将file1.txt与file2.txt文件上传到HDFS的input目录

$ hdfs dfs -put file1.txt /input
$ hdfs dfs -put file2.txt /input

查看刚才上传的两个文件

$ hdfs dfs -put file2.txt /input
14/10/25 14:43:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@Master ~]$ hdfs dfs -ls /input
14/10/25 14:43:43 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
-rw-r--r--   1 hadoop supergroup         31 2014-10-25 14:43 /input/file1.txt
-rw-r--r--   1 hadoop supergroup         13 2014-10-25 14:43 /input/file2.txt

 

执行hadoop自带的WordCount程序,统计单词数

$ cd $HADOOP_HOME/share/hadoop/mapreduce

$ hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount  /input /output

执行没报错,查看运行结果:

$ hdfs dfs -ls /outputpart-r-00000
14/10/25 14:54:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: `/outputpart-r-00000‘: No such file or directory
[hadoop@Master mapreduce]$ hdfs dfs -cat /output/part-r-00000
14/10/25 14:54:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hadoop 2
hello 2
to 1
welcome 1
world! 1

 统计结果正确!

CentOS 7下安装Hadoop2.2