转载

Hadoop入门进阶课程3--Hadoop2.X 64位编译

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan   。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237

【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs ,下载该 PDF 文件

1      搭建环境

部署节点操作系统为 CentOS ,防火墙和 SElinux 禁用,创建了一个 shiyanlou 用户并在系统根目录下创建 /app 目录,用于存放 Hadoop 等组件运行包。因为该目录用于安装 hadoop 等组件程序,用户对 shiyanlou 必须赋予 rwx 权限(一般做法是 root 用户在根目录下创建 /app 目录,并修改该目录拥有者为 shiyanlou(chownR shiyanlou:shiyanlou /app )。

Hadoop 搭建环境:

l   虚拟机操作系统: CentOS6.6   64 位,单核, 1G 内存

l   JDK 1.7.0_55 64

l   Hadoop 2.2.0 64 位(该部署包为第 2 个实验所编译完成)

2      部署 Hadooop 2.X

2.1    配置 Hadoop 环境

Apache 网站上提供 Hadoop2.X 安装包只支持 32 位操作系统安装,在 64 位服务器安装会出现 3.1 的错误异常。这里我们使用上一步骤编译好的 hadoop-2.2.0-bin.tar.gz 文件作为安装包(也可以在 /home/shiyanlou/install-pack 目录中找到 hadoop-2.2.0.tar.gz 安装包)

2.1.1     下载并解压 hadoop 安装包

解压缩并移动到 /app 目录下

cd /home/shiyanlou/install-pack

tar -xzf hadoop-2.2.0.tar.gz

mv hadoop-2.2.0 /app

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.2     Hadoop 目录下创建子目录

hadoop-2.2.0 目录下创建 tmpnamedata 目录

cd /app/hadoop-2.2.0

mkdir tmp

mkdir hdfs

mkdir hdfs/name

mkdir hdfs/data

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.3     配置 hadoop-env.sh

1.      打开配置文件 hadoop-env.sh

cd /app/hadoop-2.2.0/etc/hadoop

sudo vi hadoop-env.sh

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.      加入配置内容,设置了 hadoopjdkhadoop/bin 路径

export HADOOP_CONF_DIR=/app/hadoop2.2.0/etc/hadoop

export JAVA_HOME=/app/lib/jdk1.7.0_55

export PATH=$PATH:/app/hadoop-2.2.0/bin

Hadoop入门进阶课程3--Hadoop2.X 64位编译

3.      编译配置文件 hadoop-env.sh ,并确认生效

source hadoop-env.sh

hadoop version

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.4     配置 yarn-env.sh

打开配置文件 yarn-env.sh ,设置了 hadoopjdk 路径,配置完毕后使用 source yarn-env.sh 编译该文件

export JAVA_HOME=/app/lib/jdk1.7.0_55

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.5     配置 core-site.xml

1.      使用如下命令打开 core-site.xml 配置文件

cd /app/hadoop-2.2.0/etc/hadoop

sudo vi core-site.xml

2.      在配置文件中,按照如下内容进行配置

<configuration>

  <property>

    <name>fs.default.name</name>

    <value>hdfs://hadoop:9000</value>

  </property>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://hadoop:9000</value>

  </property>

  <property>

    <name>io.file.buffer.size</name>

    <value>131072</value>

  </property>

  <property>

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

    <value>file:/app/hadoop-2.2.0/tmp</value>

    <description>Abase for other temporary directories.</description>

  </property>

  <property>

    <name>hadoop.proxyuser.hduser.hosts</name>

    <value>*</value>

  </property>

  <property>

    <name>hadoop.proxyuser.hduser.groups</name>

    <value>*</value>

  </property>

</configuration>

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.6     配置 hdfs-site.xml

1.      使用如下命令打开 hdfs-site.xml 配置文件

cd /app/hadoop-2.2.0/etc/hadoop

sudo vi hdfs-site.xml

2.      在配置文件中,按照如下内容进行配置

<configuration>

  <property>

   <name>dfs.namenode.secondary.http-address</name>

   <value>hadoop:9001</value>

  </property>

  <property>

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

   <value>file:/app/hadoop-2.2.0/hdfs/name</value>

  </property>

  <property>

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

   <value>file:/app/hadoop-2.2.0/hdfs/data</value>

  </property>

  <property>

    <name>dfs.replication</name>

   <value>1</value>

  </property>

  <property>

   <name>dfs.webhdfs.enabled</name>

   <value>true</value>

  </property>

</configuration>

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.7     配置 mapred-site.xml

1.      默认情况下不存在 mapred-site.xml 文件,可以从模板拷贝一份,并使用如下命令打开 mapred-site.xml 配置文件

cd /app/hadoop-2.2.0/etc/hadoop

cp mapred-site.xml.template mapred-site.xml

sudo vi mapred-site.xml

2.      在配置文件中,按照如下内容进行配置

<configuration>

  <property>

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

    <value>yarn</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop:10020</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop:19888</value>

  </property>

</configuration>

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.8     配置 yarn-site.xml

1.      使用如下命令打开 yarn-site.xml 配置文件

cd /app/hadoop-2.2.0/etc/hadoop

sudo vi yarn-site.xml

2.      在配置文件中,按照如下内容进行配置

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

  <property>

    <name>yarn.resourcemanager.address</name>

    <value>hadoop:8032</value>

  </property>

  <property>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>hadoop:8030</value>

  </property>

  <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>hadoop:8031</value>

  </property>

  <property>

    <name>yarn.resourcemanager.admin.address</name>

    <value>hadoop:8033</value>

  </property>

  <property>

    <name>yarn.resourcemanager.webapp.address</name>

    <value>hadoop:8088</value>

  </property>

</configuration>

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.9     配置 slaves 文件

slaves 配置文件中设置从节点,这里设置为 hadoop ,与 Hadoop1.X 区别的是 Hadoop2.X 不需要设置 Master

cd /app/hadoop-2.2.0/etc/hadoop

vi slaves

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.1.10          格式化 namenode

cd /app/hadoop-2.2.0/bin

./hdfs namenode -format

Hadoop入门进阶课程3--Hadoop2.X 64位编译

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.2    启动 Hadoop

2.2.1     启动 hdfs

cd /app/hadoop-2.2.0/sbin

./start-dfs.sh

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.2.2     验证当前进行

使用 jps 命令查看运行进程,此时在 hadoop 上面运行的进程有: namenodesecondarynamenodedatanode 三个进行

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.2.3     启动 yarn

cd /app/hadoop-2.2.0/sbin

./start-yarn.sh

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.2.4     验证当前进行

使用 jps 命令查看运行进程,此时在 hadoop 上运行的进程除了: namenodesecondarynamenodedatanode ,增加了 resourcemanagernodemanager 两个进程:

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.3    测试 Hadoop

2.3.1     创建测试目录

cd /app/hadoop-2.2.0/bin

./hadoop fs -mkdir -p /class3/input

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.3.2     准备测试数据

./hadoop fs -copyFromLocal ../etc/hadoop/* /class3/input

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.3.3     运行 wordcount 例子

cd /app/hadoop-2.2.0/bin

./hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /class3/input /class3/output

Hadoop入门进阶课程3--Hadoop2.X 64位编译

Hadoop入门进阶课程3--Hadoop2.X 64位编译

2.3.4     查看结果

使用如下命令查看运行结果:

./hadoop fs -ls /class3/output/  

./hadoop fs -cat /class3/output/part-r-00000 | less

Hadoop入门进阶课程3--Hadoop2.X 64位编译

3      问题解决

3.1    CentOS 64bit 安装 Hadoop2.2.0 中出现文件编译位数异常

在安装 hadoop2.2.0 过程中出现如下异常: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Hadoop入门进阶课程3--Hadoop2.X 64位编译

通过分析是由于 lib/native 目录中有些文件是在 32 位编译,无法适应 CentOS 64 位环境造成

Hadoop入门进阶课程3--Hadoop2.X 64位编译

有两种办法解决:

l   重新编译 hadoop ,然后重新部署

l   暂时办法是修改配置,忽略有问题的文件

Hadoop入门进阶课程3--Hadoop2.X 64位编译

正文到此结束
Loading...