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/
步骤 5: 验证集群的所有应用程序
访问集群所有应用的默认端口号为8088。使用以下url访问该服务。
http:// 本地主机:8088/