阿帕奇Hadoop 2.6.5与之前的稳定 2.X.Y 版本相比有显着改进。该版本在HDFS和MapReduce方面有很多改进。本操作指南将帮助您在 CentOS/RHEL 7/6/5、Ubuntu 和其他基于 Debian 的操作系统上安装 Hadoop 2.6。本文不包括设置 Hadoop 的整体配置,我们只有开始使用 Hadoop 所需的基本配置。
第 1 步:安装 Java
Java 是在任何系统上设置 Hadoop 的主要要求,因此请确保使用以下命令在系统上安装了 Java。
# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
如果您的系统上尚未安装 Java,请先使用以下链接之一进行安装。
在 CentOS/RHEL 7/6/5 上安装 Java 8
在 Ubuntu 上安装 Java 8
第2步:创建Hadoop用户
我们建议为 Hadoop 工作创建一个普通(非 root)帐户。因此,使用以下命令创建一个系统帐户。
# adduser hadoop
# passwd hadoop
创建帐户后,还需要为自己的帐户设置基于密钥的 ssh。为此,请执行以下命令。
# su - hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
让我们验证基于密钥的登录。下面的命令不应要求输入密码,但第一次会提示将 RSA 添加到已知主机列表中。
$ ssh localhost
$ exit
步骤3.下载Hadoop 2.6.5
现在使用以下命令下载 hadoop 2.6.0 源存档文件。您还可以选择备用下载镜像以提高下载速度。
$ cd ~
$ wget http://www-eu.apache.org/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
$ tar xzf hadoop-2.6.5.tar.gz
$ mv hadoop-2.6.5 hadoop
步骤4.配置Hadoop伪分布式模式
4.1.设置 Hadoop 环境变量
首先,我们需要设置Hadoop使用的环境变量。编辑~/.bashrc文件并在文件末尾附加以下值。
export HADOOP_HOME=/home/hadoop/hadoop
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
现在编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件并设置JAVA_HOME环境变量。根据系统上的安装更改 JAVA 路径。
export JAVA_HOME=/opt/jdk1.8.0_131/
4.2.编辑配置文件
Hadoop有很多配置文件,需要根据需求进行配置以设置Hadoop基础设施。让我们从基本 Hadoop 单节点集群设置的配置开始。首先,导航到以下位置
$ cd $HADOOP_HOME/etc/hadoop
编辑 core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
编辑 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
编辑mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
编辑yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4.3.格式化名称节点
现在使用以下命令格式化名称节点,确保存储目录是
$ hdfs namenode -format
示例输出:
15/02/04 09:58:43 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = svr1.tecadmin.net/192.168.1.133
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.6.5
...
...
15/02/04 09:58:57 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted.
15/02/04 09:58:57 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
15/02/04 09:58:57 INFO util.ExitUtil: Exiting with status 0
15/02/04 09:58:57 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at svr1.tecadmin.net/192.168.1.133
************************************************************/
步骤5.启动Hadoop集群
现在使用 Hadoop 提供的脚本启动 Hadoop 集群。只需导航到 Hadoop sbin 目录并一一执行脚本即可。
$ cd $HADOOP_HOME/sbin/
Now run 启动dfs.sh script.
$ start-dfs.sh
示例输出:
15/02/04 10:00:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-svr1.tecadmin.net.out
localhost: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-svr1.tecadmin.net.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
RSA key fingerprint is 3c:c4:f6:f1:72:d9:84:f9:71:73:4a:0d:55:2c:f9:43.
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added '0.0.0.0' (RSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-svr1.tecadmin.net.out
15/02/04 10:01:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Now run 启动yarn.sh script.
$ start-yarn.sh
示例输出:
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-svr1.tecadmin.net.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-svr1.tecadmin.net.out
步骤 6. 在浏览器中访问 Hadoop 服务
Hadoop NameNode 默认在端口 50070 上启动。在您最喜欢的网络浏览器中通过端口 50070 访问您的服务器。
http://svr1.tecadmin.net:50070/
现在访问8088端口以获取有关集群和所有应用程序的信息
http://svr1.tecadmin.net:8088/
访问端口 50090 以获取有关辅助名称节点的详细信息。
http://svr1.tecadmin.net:50090/
访问50075端口,获取DataNode详细信息
http://svr1.tecadmin.net:50075/
步骤 7. 测试 Hadoop 单节点设置
7.1 –使用以下命令创建所需的 HDFS 目录。
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/hadoop
7.2 –现在使用以下命令将所有文件从本地文件系统 /var/log/httpd 复制到 hadoop 分布式文件系统
$ bin/hdfs dfs -put /var/log/httpd logs
7.3 –现在通过在浏览器中打开以下网址来浏览 hadoop 分布式文件系统。
http://svr1.tecadmin.net:50070/explorer.html#/user/hadoop/logs
7.4 –现在将hadoop分布式文件系统的日志目录复制到本地文件系统。
$ bin/hdfs dfs -get logs /tmp/logs
$ ls -l /tmp/logs/
您还可以检查本教程使用命令行运行 wordcount mapreduce 作业示例。