CentOS6.5 x64 Hadoop学习过程

来源:互联网 发布:手机麻将辅助软件 编辑:程序博客网 时间:2024/05/17 22:09

CentOS6.5 x64 Hadoop学习过程

George Jiang jhz

一.搭建环境简介

本次搭建采用的是CentOS6.5的64位版本,在VmWare中搭建的,Hadoop使用是Hadoop 2.2.0 stable version。搭建中由于Apache官网给出的是32位版本的Hadoop,所以此次搭建中还包含了对Hadoop源代码编译的过程。

二.搭建前的准备

1.  网络下载的VMware-workstation-full-10.0.1-1379776

2.  Apache官网的CentOS-6.5-x86_64-bin-DVD1.iso

3.  Apache官网的hadoop-2.2.0-src.tar.gz

4.  Apache官网的apache-maven-3.2.1-bin.tar.gz

5.  Oracle官网的jdk-7u51-linux-x64.rpm

6.  Google官网的protobuf-2.5.0.tar.gz

三.对于准备工作的解释

1.  采用jdk1.7版本的原因:

Jdk1.8版本的javadoc功能具有jdk8新特性,根据网络搜索,采用jdk1.8版本,可能会在javadoc处出现问题,所以选择jdk1.7版本。详见“hadoop 2_2_0 在 windows8_1 64bit、jdk1_8的编译问题 - 无限天空 - 博客频道 - CSDN_NET.mht”

2.  对于编译所需文件的解释:

64位系统必须先对Hadoop源代码编译,以产生可运行的文件结果集,此过程所需的组件:apache-maven-3.2.1-bin.tar.gz和protobuf-2.5.0.tar.gz

四.编译环境搭建

1.  安装VmWare,略

2.  安装CentOS虚拟机,此处要注意的是:推荐把根目录“/”大小设置为10G,否则可能会对编译过程有影响(3G试验过,编译时报错,no space left);同时,推荐把总硬盘设置成50G空间

3.  Java环境搭建

⑴java –version查看一下目前系统的jdk版本

⑵yum remove java卸载系统默认版本的jdk

⑶rpm –ivh {rpm版本的jdk文件名}

              ⑷此时jdk已被安装至/usr/java/jdk1.7.1_51中

            ⑸设置环境变量,vim /etc/profile,在末尾处添加:

        export JAVA_HOME=/usr/java/jdk1.7.0_51

         export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

         exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

              ⑹source /etc/profile

4.  Maven安装

⑴安装目录定为/opt,cp apache-maven-3.2.1-bin.tar.gz/opt

⑵unzip apache-maven-3.2.1-bin.tar.gz,并cd进入

⑶在/etc/profie里配置环境变量

export MAVEN_HOME=/opt/apache-maven-3.2.1 

exportPATH=$PATH:$MAVEN_HOME/bin 

⑷验证配置是否成功: mvn –version

如果成功,会出现以下类似:

1. Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800)  

2. Maven home: /opt/maven3.1.1  

3. Java version: 1.7.0_45, vendor: Oracle Corporation  

4. Java home: /opt/jdk1.7/jre  

5. Default locale: en_US, platform encoding: UTF-8  

6. OS name: "linux", version: "2.6.32-358.el6.x86_64", arch: "amd64", family: "unix"

 

由于maven国外服务器可能连不上,先给maven配置一下国内镜像,

在maven目录下,conf/settings.xml,在<mirrors></mirros>里添加,

原本的不要动

1. <mirror>  

2.      <id>nexus-osc</id>  

      <mirrorOf>*</mirrorOf>  

4.   <name>Nexusosc</name>  

5.   <url>http://maven.oschina.net/content/groups/public/</url>  

6. </mirror> 

⑹同样,在<profiles></profiles>内新添加

1. <profile>  

2.        <id>jdk-1.7</id>  

3.        <activation>  

4.          <jdk>1.7</jdk>  

5.        </activation>  

6.        <repositories>  

7.          <repository>  

8.            <id>nexus</id>  

9.            <name>local private nexus</name>  

10.           <url>http://maven.oschina.net/content/groups/public/</url>  

11.           <releases>  

12.             <enabled>true</enabled>  

13.           </releases>  

14.           <snapshots>  

15.             <enabled>false</enabled>  

16.           </snapshots>  

17.         </repository>  

18.       </repositories>  

19.       <pluginRepositories>  

20.         <pluginRepository>  

21.           <id>nexus</id>  

22.          <name>local private nexus</name>  

23.           <url>http://maven.oschina.net/content/groups/public/</url>  

24.           <releases>  

25.             <enabled>true</enabled>  

26.           </releases>  

27.           <snapshots>  

28.             <enabled>false</enabled>  

29.           </snapshots>  

30.         </pluginRepository>  

31.       </pluginRepositories>  

32.     </profile>  

 

5.Protobuf安装

⑴对protoc进行编译安装前先要装几个依赖包:gcc,gcc-c++,make如果已经安装的可以忽略

1. yum install gcc  

2. yum intall gcc-c++  

3. yum install make  

 ⑵安装

1. tar -xvf protobuf-2.5.0.tar.gz  

2. cd protobuf-2.5.0  

3. ./configure --prefix=/opt/protoc/  

4. make && make install  

⑶此处要注意的是:请将第3条和第4条命令准确键入

⑷在/etc/profie里配置环境变量

export PROTOBUF=/opt/protoc

export PATH=$PATH:$PROTOBUF/bin

6. 需要安装cmake,openssl-devel,ncurses-devel依赖

1. yum install cmake  

2. yum install openssl-devel  

3. yum install ncurses-devel  

7.  Hadoop编译

⑴将hadoop-2.2.0-src.tar.gz放在/opt下,并tar –xvf解压

⑵编译clean

1. cd hadoop2.2.0-src  

2. mvn clean install–DskipTests   

 ⑶编译,之后等待build success

1. mvn package-Pdist,native -DskipTests -Dtar 

     ⑷编译后的路径:hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0

 

1.  [root@localhost bin]#./hadoop version

2. Hadoop 2.2.0

3. SubversionUnknown -r Unknown

4. Compiled by rooton 2013-11-22T08:47Z

5. Compiled withprotoc 2.5.0

6. From source withchecksum 79e53ce7994d1628b240f09af91e1af4

7. This command wasrun using /data/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar

 

8. [root@localhosthadoop-2.2.0]#filelib//native/*

9. lib//native/libhadoop.a:        current ar archive

10.lib//native/libhadooppipes.a:   current ar archive

11.lib//native/libhadoop.so:       symbolic link to `libhadoop.so.1.0.0'

12.lib//native/libhadoop.so.1.0.0:<SPAN style="COLOR: #ff0000">ELF 64-bit LSB sharedobject,x86-64, version 1</SPAN> (SYSV), dynamically linked, not stripped

8.  编译后的路径:hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0下的hadoop-2.2.0可以拷贝出来使用了,复制给slave等

五.进行测试

1.  创建新用户

useradd hadoop

2.  Vim/etc/sysconfig/network

修改主机名:master

3.  Vim/etc/hosts

添加主机名master

之后,reboot一下,查看名称是否都更改完成

4.  Ssh免密码登陆设置

⑴rpm –qa|grep ssh查看一下是否缺失openssh-clients;如果缺失,yum一下

六.单机模式测试

1.  确认JDK 配置成功

2.  无密码SSH登录

   由于是单节点的应用,只要实现localhost的无密码ssh登录即可,这个比较简单:

⑴cd ~

      ssh-keygen -t rsa

      [hadoop@master ~]$ cd.ssh/  (注意“~”目录下,即/root)

      [hadoop@master .ssh]$ cpid_rsa.pub authorized_keys    

            [hadoop@master .ssh]$ chmod 600 authorized_keys

   ⑵验证是否成功:

ssh localhost

Last login: Sat Jan 18 10:17:19 2014

这样就表示SSH无密码登录成功了。

3.  Hadoop安装配置

①下载发布包

打开官方下载链接http://hadoop.apache.org/releases.html#Download ,选择2.2.0版本的发布包下载 后解压到指定路径下:micmiu$tar -zxf hadoop-2.2.0.tar.gz -C /usr/local/share,那么本文中HADOOP_HOME =/usr/local/share/hadoop-2.2.0/。

②配置系统环境变量 vim ~/.profile ,添加如下内容:

exportHADOOP_HOME="/usr/local/share/hadoop-2.2.0"

export HADOOP_PREFIX=${HADOOP_HOME}

export HADOOP_COMMON_HOME=${HADOOP_PREFIX}

export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}

export HADOOP_YARN_HOME=${HADOOP_PREFIX}

exportHADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop/"

export YARN_CONF_DIR=${HADOOP_CONF_DIR}

export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

③修改 <HADOOP_HOME>/etc/hadoop/hadoop-env.sh

export JAVA_HOME=系统中JDK实际路径

④修改 <HADOOP_HOME>/etc/hadoop/core-site.xml

在<configuration>节点下添加或者更新下面的配置信息:

<!-- 新变量f:s.defaultFS代替旧的:fs.default.name -->

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://localhost:9000</value>

  <description>Thename of the default file system.</description>

</property>

<property>

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

<value>/home/hadoop/temp</value>

  <description>A base for other temporary directories.这个地方很重要,文件夹要事先创建好,否则无法启动namenode</description>

</property>

<property>

  <name>io.native.lib.available</name>

  <value>false</value>

  <description>default value is true:Should native hadoop libraries,if present, be used.</description>

  </property>

⑤修改 <HADOOP_HOME>/etc/hadoop/hdfs-site.xml

在<configuration>节点下添加或者更新下面的配置信息:

<property>

  <name>dfs.replication</name>

  <value>1</value>

  <!-- 如果是单节点配置为1,如果是集群根据实际集群数量配置-->

</property>

⑥修改 <HADOOP_HOME>/etc/hadoop/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>

⑦修改 <HADOOP_HOME>/etc/hadoop/mapred-site.xml

默认没有mapred-site.xml文件,copy  mapred-site.xml.template 一份为 mapred-site.xml即可

在<configuration>节点下添加或者更新下面的配置信息:

<property>

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

  <value>yarn</value>

  <final>true</final>

</property>

4.  启动及演示

⑴启动Hadoop

①首先执行hdfs namenode -format :

②然后执行 start-dfs.sh :

③jps,查看是否有以下进程:

   NameNode

   DataNode

   SecondaryNameNode

   Jps

④再执行 start-yarn.sh :

⑤jps,查看是否有以下进程:

   NodeManager

   ResourceManager

   NameNode

   DataNode

   Jps

   SecondaryNameNode

⑥启动日志没有错误信息,并确认上面的相关进程存在,就表示启动成功了。

⑵演示

①演示hdfs 一些常用命令,为wordcount演示做准备:

hdfs dfs -ls /

hdfs dfs -mkdir /user

hdfs dfs -ls /

hdfs dfs -mkdir -p /user/George/wordcount/in

hdfs dfs -ls /user/George/wordcount

②本地创建一个文件 George-word.txt, 写入如下内容:

 Hi George welcome to Hadoop

Hi George welcome to BigData

Hi George welcome to world

more see micmiu.com

③把George-word.txt 文件上传到hdfs:

hdfs dfs -put George-word.txt /user/George/wordcount/in

 

④然后cd 切换到Hadoop的根目录下执行:

 

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarwordcount /user/George/wordcount/in/user/George/wordcount/out

 

ps: /user/George/wordcount/out 目录不能存在 否则运行报错。

 

看到类似如下的日志信息:

0 0
原创粉丝点击