Hadoop 单节点 伪分布 安装札记

实验环境
CentOS 6.X
Hadoop 2.6.0
JDK    1.8.0_65

目的
这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。

先决条件
支持平台
    GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。
    Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。

安装软件
如果你的集群尚未安装所需软件,你得首先安装它们。
以 CentOS 为例:
# yum install ssh rsync -y
# ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。


创建用户
# useradd -m hadoop -s /bin/bash  # 创建新用户hadoop

Hosts解析
# cat /etc/hosts| grep ocean-lab
192.168.9.70    ocean-lab.ocean.org  ocean-lab

安装jdk
JDK – Oracle.com/technetwork/java/javase/downloads/index.html
首先安装JAVA环境
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2F%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm"
# rpm -Uvh jdk-8u65-linux-x64.rpm

配置 Java
# echo "export JAVA_HOME=/usr/java/jdk1.8.0_65" >> /home/hadoop/.bashrc
# source /home/hadoop/.bashrc
# echo $JAVA_HOME
/usr/java/jdk1.8.0_65


下载安装hadoop
为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版。
运行Hadoop集群的准备工作
# wget


解压所下载的Hadoop发行版。编辑 conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径。

# tar xf hadoop-2.6.0.tar.gz -C /usr/local

#### mv /usr/local/hadoop-2.6.0 /usr/local/hadoop

尝试如下命令:
# bin/hadoop
将会显示hadoop 脚本的使用文档。

现在你可以用以下三种支持的模式中的一种启动Hadoop集群:
    单机模式
    伪分布式模式
    完全分布式模式

单机模式的操作方法

默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子包括 wordcount、terasort、join、grep 等。
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

# mkdir input
# cp conf/*.xml input
# ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep ./input/ ./ouput 'dfs[a-z.]+'
# cat output/*
若执行成功的话会输出很多作业的相关信息,最后的输出信息如下图所示。作业的结果会输出在指定的 output 文件夹中,通过命令 cat ./output/* 查看结果,符合正则的单词 dfsadmin 出现了1次:
[10:57:58][hadoop@ocean-lab hadoop-2.6.0]$ cat ./ouput/*
1 dfsadmin


注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。
否则会报如下错误
INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/usr/local/hadoop-2.6.0/ouput already exists
若出现提示 “INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknowHostException”,这需要执行如下命令修改 hosts 文件,为你的主机名增加IP映射:
# cat /etc/hosts| grep ocean-lab
192.168.9.70    ocean-lab.ocean.org  ocean-lab


伪分布式模式的操作方法

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。
节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

在设置 Hadoop 伪分布式配置前,我们还需要设置 HADOOP 环境变量,执行如下命令在 ~/.bashrc 中设置
# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop-2.6.0
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source ~/.bashrc

配置

使用如下的 etc/hadoop/core-site.xml

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/39c8e2e98c866d4346d70f7164d84143.html