Hadoop 环境设置


Hadoop 受到 GNU/Linux 平台及其版本的支持。因此,我们必须安装 Linux 操作系统来搭建 Hadoop 环境。如果你有 Linux 以外的操作系统,你可以在其中安装 Virtualbox 软件,并在 Virtualbox 中安装 Linux。

安装前设置


在将 Hadoop 安装到 Linux 环境之前,我们需要使用以下命令设置 Linux ssh (安全壳)。请按照以下步骤设置 Linux 环境。

创建用户

一开始,建议为 Hadoop 创建一个单独的用户,将 Hadoop 文件系统与 Unix 文件系统隔离开来。按照以下步骤创建用户:

  • 使用命令“su”打开根目录。

  • 使用命令“useradd username”从 root 帐户创建一个用户。

  • 现在你可以使用命令“su username”打开一个现有的用户帐户。

打开 Linux 终端并键入以下命令以创建用户。

$ su 
    password:
# useradd hadoop 
# passwd hadoop 
    New passwd:
    Retype new passwd

SSH 设置和密钥生成


SSH 设置需要在集群上执行不同的操作,例如启动、停止、分布式守护进程 shell 操作。要对Hadoop的不同用户进行身份验证,需要为Hadoop用户提供公钥/私钥对,并与不同的用户共享。

以下命令用于使用 SSH 生成键值对。将 id_rsa.pub 中的公钥复制到 authorized_keys 中,并分别提供所有者对 authorized_keys 文件的读写权限。

$ ssh-keygen -t rsa 
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
$ chmod 0600 ~/.ssh/authorized_keys 

安装 Java


Java 是 Hadoop 的主要学习前提。首先,你应该使用命令“java -version”验证系统中是否存在 java。 java version 命令的语法如下所示。

$ java -version 

如果一切正常,它将为你提供以下输出。

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)  

如果你的系统中未安装 java,请按照以下步骤安装 java。

步骤 1

通过访问以下链接下载 java (JDK <最新版本> - X64.tar.gz) www.oracle.com

Then jdk-7u71-linux-x64.tar.gz 将下载到你的系统中。

步骤 2

通常你会在 Downloads 文件夹中找到下载的 java 文件。验证并提取 jdk-7u71-linux-x64.gz 使用以下命令创建文件。

$ cd Downloads/ 
$ ls 
jdk-7u71-linux-x64.gz 

$ tar zxf jdk-7u71-linux-x64.gz 
$ ls 
jdk1.7.0_71   jdk-7u71-linux-x64.gz 

步骤 3

要使所有用户都可以使用 java,你必须将其移动到位置“/usr/local/”。打开 root,然后键入以下命令。

$ su 
password: 
# mv jdk1.7.0_71 /usr/local/ 
# exit 

步骤 4

用于设置 PATH and JAVA_HOME 变量,添加以下命令 ~/.bashrc file.

export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin 

现在将所有更改应用到当前正在运行的系统中。

$ source ~/.bashrc

步骤 5

使用以下命令配置 java 替代品:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

现在从终端验证 java -version 命令,如上所述。

下载 Hadoop


使用以下命令从 Apache 软件基础下载并提取 Hadoop 2.4.1。

$ su 
password: 
# cd /usr/local 
# wget http:// apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz 
# tar xzf hadoop-2.4.1.tar.gz 
# mv hadoop-2.4.1/* to hadoop/ 
# exit 

Hadoop 操作模式


下载 Hadoop 后,你可以以三种支持的模式之一操作 Hadoop 集群:

  • 本地/独立模式 : 在你的系统中下载Hadoop后,默认配置为独立模式,可以作为单个java进程运行。

  • 伪分布式模式 : 是单机分布式仿真。每个 Hadoop 守护进程,例如 hdfs、yarn、MapReduce 等,都将作为一个单独的 java 进程运行。这种模式对开发很有用。

  • 全分布式模式 :这种模式是完全分布式的,最少两台或多台机器作为一个集群。我们将在接下来的章节中详细介绍这种模式。

以独立模式安装 Hadoop


在这里我们将讨论安装 Hadoop 2.4.1 在独立模式下。

没有运行守护进程,一切都在单个 JVM 中运行。 Standalone 模式适合在开发过程中运行 MapReduce 程序,因为它易于测试和调试它们。

设置 Hadoop

你可以通过附加以下命令来设置 Hadoop 环境变量 ~/.bashrc file.

export HADOOP_HOME=/usr/local/hadoop 

在继续之前,你需要确保 Hadoop 工作正常。只需发出以下命令:

$ hadoop version 

如果你的设置一切正常,那么你应该会看到以下结果:

Hadoop 2.4.1 
Subversion https:// svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4 

这意味着你的 Hadoop 的独立模式设置工作正常。默认情况下,Hadoop 配置为在单台机器上以非分布式模式运行。

例子

让我们看一个简单的 Hadoop 示例。 Hadoop 安装提供了以下示例 MapReduce jar 文件,它提供了 MapReduce 的基本功能,可用于计算,如 Pi 值、给定文件列表中的字数等。

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar 

让我们有一个输入目录,我们将在其中推送一些文件,我们的要求是计算这些文件中的单词总数。要计算总字数,我们不需要编写 MapReduce,只要 .jar 文件包含字数统计的实现。你可以使用相同的 .jar 文件尝试其他示例;只需发出以下命令即可通过 hadoop-mapreduce-examples-2.2.0.jar 文件检查支持的 MapReduce 功能程序。

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar 

步骤 1

在输入目录中创建临时内容文件。你可以在任何你想工作的地方创建这个输入目录。

$ mkdir input 
$ cp $HADOOP_HOME/*.txt input 
$ ls -l input 

它将在你的输入目录中提供以下文件:

total 24 
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt 
-rw-r--r-- 1 root root   101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root  1366 Feb 21 10:14 README.txt 

这些文件已从 Hadoop 安装主目录复制。对于你的实验,你可以拥有不同的大型文件集。

步骤 2

让我们启动 Hadoop 进程,统计输入目录下所有可用文件的总字数,如下:

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar  wordcount input output 

步骤 3

步骤-2 将进行所需的处理并将输出保存在 output/part-r00000 文件中,你可以使用以下命令检查:

$cat output/* 

它将列出所有单词及其在输入目录中所有可用文件中可用的总计数。

"AS      4 
"Contribution" 1 
"Contributor" 1 
"Derivative 1
"Legal 1
"License"      1
"License");     1 
"Licensor"      1
"NOTICE”        1 
"Not      1 
"Object"        1 
"Source”        1 
"Work”    1 
"You"     1 
"Your")   1 
"[]"      1 
"control"       1 
"printed        1 
"submitted"     1 
(50%)     1 
(BIS),    1 
(C)       1 
(Don't)   1 
(ECCN)    1 
(INCLUDING      2 
(INCLUDING,     2 
.............

以伪分布式模式安装 Hadoop


按照下面给出的步骤以伪分布式模式安装 Hadoop 2.4.1。

第一步:搭建Hadoop

你可以通过附加以下命令来设置 Hadoop 环境变量 ~/.bashrc file.

export HADOOP_HOME=/usr/local/hadoop 
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 
export HADOOP_INSTALL=$HADOOP_HOME 

现在将所有更改应用到当前正在运行的系统中。

$ source ~/.bashrc 

第二步:Hadoop配置

你可以在“$HADOOP_HOME/etc/hadoop”位置找到所有 Hadoop 配置文件。需要根据你的 Hadoop 基础架构对这些配置文件进行更改。

$ cd $HADOOP_HOME/etc/hadoop

为了用java开发Hadoop程序,你必须重置java环境变量 hadoop-env.sh 通过替换文件 JAVA_HOME 值与系统中 java 的位置。

export JAVA_HOME=/usr/local/jdk1.7.0_71

以下是你必须编辑以配置 Hadoop 的文件列表。

核心站点.xml

The 核心站点.xml 文件包含诸如用于 Hadoop 实例的端口号、为文件系统分配的内存、存储数据的内存限制以及读/写缓冲区大小等信息。

打开 core-site.xml 并在 标记之间添加以下属性。

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs:// 本地主机:9000
    </property>
</configuration>

hdfs-site.xml

The hdfs-site.xml 文件包含复制数据的值、namenode 路径和本地文件系统的 datanode 路径等信息。这意味着你要存储 Hadoop 基础架构的地方。

让我们假设以下数据。

dfs.replication (data replication value) = 1 

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = // 主页/hadoop/hadoopinfra/hdfs/namenode

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = // 主页/hadoop/hadoopinfra/hdfs/datanode

打开此文件并在此文件的 标记之间添加以下属性。

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    
    <property>
        <name>dfs.name.dir</name>
        <value>file:// /home/hadoop/hadoopinfra/hdfs/namenode 
    </property>
    
    <property>
        <name>dfs.data.dir</name>
        <value>file:// /home/hadoop/hadoopinfra/hdfs/datanode 
    </property>
</configuration>

注意 : 在上面的文件中,所有的属性值都是用户定义的,你可以根据你的Hadoop基础设施进行更改。

纱线站点.xml

该文件用于将 yarn 配置到 Hadoop 中。打开 yarn-site.xml 文件并在该文件的 标记之间添加以下属性。

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

mapred-site.xml

该文件用于指定我们使用的 MapReduce 框架。默认情况下,Hadoop 包含一个 yarn-site.xml 模板。首先,需要从 mapred-site.xml.template to mapred-site.xml 文件使用以下命令。

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

Open mapred-site.xml 文件并在此文件的 标记之间添加以下属性。

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

验证 Hadoop 安装


以下步骤用于验证 Hadoop 安装。

第一步:名称节点设置

使用命令“hdfs namenode -format”设置名称节点,如下所示。

$ cd ~ 
$ hdfs namenode -format 

预期结果如下。

10/24/14 21现在将所有更改应用到当前正在运行的系统中。55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] 
STARTUP_MSG:   version = 2.4.1 
...
...
10/24/14 21现在将所有更改应用到当前正在运行的系统中。56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21现在将所有更改应用到当前正在运行的系统中。56 INFO namenode.NNStorageRetentionManager: Going to 
retain 1 images with txid >= 0 
10/24/14 21现在将所有更改应用到当前正在运行的系统中。56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21现在将所有更改应用到当前正在运行的系统中。56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

第二步:验证Hadoop dfs

以下命令用于启动 dfs。执行此命令将启动你的 Hadoop 文件系统。

$ start-dfs.sh 

预期输出如下:

10/24/14 21下载 Hadoop 后,你可以以三种支持的模式之一操作 Hadoop 集群:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

第三步:验证 Yarn 脚本

以下命令用于启动 yarn 脚本。执行此命令将启动你的纱线守护进程。

$ start-yarn.sh 

预期输出如下:

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out 

第四步:在浏览器上访问Hadoop

访问 Hadoop 的默认端口号是 50070。使用以下 url 在浏览器上获取 Hadoop 服务。

http:// 本地主机:50070/

Accessing Hadoop on Browser

步骤 5: 验证集群的所有应用程序

访问集群所有应用的默认端口号为8088。使用以下url访问该服务。

http:// 本地主机:8088/

Hadoop Application Cluster