Hadoop – 环境设置
Hadoop – 环境设置
Hadoop 受 GNU/Linux 平台及其风格的支持。因此,我们必须安装一个 Linux 操作系统来搭建 Hadoop 环境。如果您有 Linux 以外的操作系统,您可以在其中安装 Virtualbox 软件并在 Virtualbox 中安装 Linux。
预安装设置
在将 Hadoop 安装到 Linux 环境之前,我们需要使用ssh(Secure Shell)设置 Linux 。按照下面给出的步骤设置 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中,分别为owner提供对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
访问以下链接www.oracle.com下载 java (JDK <最新版本> – X64.tar.gz)
然后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
第四步
要设置PATH和JAVA_HOME变量,请将以下命令添加到~/.bashrc文件中。
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 中运行。独立模式适合在开发过程中运行 MapReduce 程序,因为它易于测试和调试。
设置 Hadoop
您可以通过将以下命令附加到~/.bashrc文件来设置 Hadoop 环境变量。
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。
第 1 步 – 设置 Hadoop
您可以通过将以下命令附加到~/.bashrc文件来设置 Hadoop 环境变量。
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
第 2 步 – Hadoop 配置
您可以在“$HADOOP_HOME/etc/hadoop”位置找到所有 Hadoop 配置文件。需要根据您的 Hadoop 基础架构对这些配置文件进行更改。
$ cd $HADOOP_HOME/etc/hadoop
为了用java开发Hadoop程序,您必须通过将JAVA_HOME值替换为您系统中java的位置来重置hadoop-env.sh文件中的java环境变量。
export JAVA_HOME=/usr/local/jdk1.7.0_71
以下是您必须编辑以配置 Hadoop 的文件列表。
核心站点.xml
该芯-的site.xml文件包含信息,诸如读/写缓冲器的用于Hadoop的实例的端口号,分配给文件系统的存储器,存储器限制,用于存储数据,和大小。
打开 core-site.xml 并在 <configuration>、</configuration> 标记之间添加以下属性。
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
在HDFS-的site.xml文件中包含的信息,如复制数据的价值,名称节点的路径,你的本地文件系统的数据节点的路径。它意味着您要存储 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 = //home/hadoop/hadoopinfra/hdfs/namenode (hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
打开此文件并在此文件的 <configuration> </configuration> 标记之间添加以下属性。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value> </property> <property> <name>dfs.data.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value> </property> </configuration>
注意– 在上面的文件中,所有属性值都是用户定义的,您可以根据您的 Hadoop 基础架构进行更改。
纱线站点.xml
该文件用于将 yarn 配置到 Hadoop 中。打开 yarn-site.xml 文件并在此文件的 <configuration>、</configuration> 标记之间添加以下属性。
<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复制到mapred-site.xml文件。
$ cp mapred-site.xml.template mapred-site.xml
打开mapred-site.xml文件并在此文件的 <configuration>、</configuration> 标记之间添加以下属性。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
验证 Hadoop 安装
以下步骤用于验证 Hadoop 安装。
步骤 1 – 名称节点设置
使用命令“hdfs namenode -format”设置namenode,如下所示。
$ cd ~ $ hdfs namenode -format
预期结果如下。
10/24/14 21:30: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:30:56 INFO common.Storage: Storage directory /home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 ************************************************************/
第 2 步 – 验证 Hadoop dfs
以下命令用于启动dfs。执行此命令将启动您的 Hadoop 文件系统。
$ start-dfs.sh
预期输出如下 –
10/24/14 21:37: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]
第 3 步 – 验证纱线脚本
以下命令用于启动纱线脚本。执行此命令将启动您的纱线守护进程。
$ 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
第 4 步 – 在浏览器上访问 Hadoop
访问 Hadoop 的默认端口号是 50070。使用以下 url 在浏览器上获取 Hadoop 服务。
http://localhost:50070/
步骤 5 – 验证集群的所有应用程序
访问集群所有应用的默认端口号是8088。使用下面的url访问这个服务。
http://localhost:8088/