[更新中] 跟着官方指引文档入门 Hadoop —— 官方指引节选翻译
本文由 Apache Hadoop 官方入门文档(https://hadoop.apache.org/docs/stable/index.html)节选翻译而成。
译:一年又一年
声明:谢绝任何经营性、营利性用途转载或编辑,仅允许开放式转载,但敬请保留译者署名。(行为人包括企业、个人,经营性、营利性用途包括但不限于运营平台公开账号、因流量而间接获利)
英文原文修订时间:2018-11-13;版本: 2.9.2
入门综述
本文档将向您介绍如何入门使用 Hadoop。通过从 建立单节点(Single Node Setup)出发,展示如何以单节点建立 Hadoop 安装;随后进一步介绍 建立群集(Cluster Setup) 以了解如何以多节点建立 Hadoop 安装。
Hadoop: 建立单节点集群.
目标
本章将介绍如何建立和配置单节点 Hadoop 安装,以便能快速地实现运用 Hadoop MapReduce 及 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)执行简单操作。
运行要求
支持的平台
- GNU/Linux:可作为 Hadoop 的开发(development)和生产(production)平台。Hadoop 曾基于 GNU/Linux 平台演示过具有两千节点的集群。
- Windows:虽然 Windows 平台也受 Hadoop 支持,但是接下来的教程只针对 Linux。如果要在 Windows 平台配置 Hadoop,请参阅 wiki page。
要求的软件
Linux 下需要满足如下软件要求:
- 必须安装 Java™。推荐使用的 Java 版本可参阅 HadoopJavaVersions。
- 必须安装 ssh,并且 sshd 服务必须运行,以便能使用 Hadoop scripts 来管理远程 Hadoop 服务实例(remote Hadoop daemons)。
安装所需软件
如果集群(平台)没有安装上述要求的软件,应先安装。
以 Ubuntu Linux 为例:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
下载 Hadoop
您可从 Apache Download Mirrors 选取一镜像站,下载获取最新的 Hadoop 稳定发行版。
准备启动 Hadoop 集群(Cluster)
解压下载好的 Hadoop 分发版包。解压后,(在 Hadoop 的主目录下找到并)编辑 etc/hadoop/hadoop-env.sh
文件,按如下指示定义参数。
# set to the root of your Java installation
# 设置 Java 所在的主目录(先前 Java 所安装到的目录;主目录即可,无需到 bin 等下级目录)
export JAVA_HOME=/usr/java/latest
尝试在 shell 中(在 Hadoop 主目录下)执行如下命令:
$ bin/hadoop
如果正常,将显示 hadoop script 的使用说明。
至此已经做好了启动 Hadoop 集群前的准备了,接下来可以分别以三种模式启动 Hadoop 集群:
独立(Standalone)运作
默认配置下,Hadoop 被配置为非分布式模式,以 Java 单进程运行;非常便于调试。
下例将复制(先前)解压(生成)的 conf 目录,并作为 input,检索并输出显示每个匹配给定正则表达式(regular expression)的结果;输出结果将写到给定的输出目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
伪分布式(Pseudo-Distributed)运作
Hadoop 还能在一个节点(single-node)上以伪分布式模式(pseudo-distributed mode)运行。在该模式下,Hadoop 的每一个服务实例(daemon)将运行在独立的 Java 进程中。
配置
使用如下配置:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
设置 ssh 免密码登录(passphraseless ssh)
(译者注:关于 ssh 配置的这一小节,官方文档写得略仓促,上下文未提及 ssh 证书登录的意义,对于如何配置 ssh 证书登录的介绍亦不具体,建议读者自行拓展了解。)
检查是否可以 ssh 免密登录 localhost:
$ ssh localhost
如果无法 ssh 免密登录,执行如下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
执行
如下步骤将在本地(locally)运行 MapReduce 任务(job)。如果想在 YARN 上执行任务,请参阅 YARN on Single Node。
-
格式化文件系统(filesystem):
$ bin/hdfs namenode -format
-
启动 NameNode 服务实例(daemon) 和 DataNode 服务实例:
$ sbin/start-dfs.sh
Hadoop 服务实例日志将写到
$HADOOP_LOG_DIR
目录(默认为$HADOOP_HOME/logs
)。 -
访问浏览 NameNode 的 Web 管理接口(web interface);默认地址为:
-
NameNode -
http://localhost:50070/
-
NameNode -
-
使 HDFS 目录能够执行 MapReduce 任务:
$ bin/hdfs dfs -mkdir /user $ bin/hdfs dfs -mkdir /user/<username>
-
将输入文件复制到分布式文件系统(distributed filesystem):
$ bin/hdfs dfs -put etc/hadoop input
-
运行一些提供的处理示例(examples):
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output 'dfs[a-z.]+'
-
检查输出(output)文件:从分布式文件系统中将输出文件复制到本地文件系统并查看:
$ bin/hdfs dfs -get output output $ cat output/*
或者,
直接在分布式系统中查看输出文件:
$ bin/hdfs dfs -cat output/*
-
完成后,可停止服务实例(daemon):
$ sbin/stop-dfs.sh
单节点(Single Node)下使用 YARN
在伪分布式模式下,MapReduce 任务可以运行在 YARN 上,仅需设置几个参数并额外运行 ResourceManager 服务实例和 NodeManager 服务实例即可实现。
以下步骤在前文步骤 the above instructions 的基础上继续,假定前文 1. ~ 4. 步已经被执行。
-
如下配置参数(parameter):
etc/hadoop/mapred-site.xml
:<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
etc/hadoop/yarn-site.xml
:<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
-
启动 ResourceManager 服务实例(daemon)和 NodeManager 服务实例:
$ sbin/start-yarn.sh
-
访问浏览 ResourceManager 的 Web 管理接口(web interface);默认地址为:
-
ResourceManager -
http://localhost:8088/
-
ResourceManager -
-
运行一个 MapReduce 任务(job).
-
完成后,可停止服务实例(daemon):
$ sbin/stop-yarn.sh
完全分布式(Fully-Distributed)运作
欲了解如何配置完全分布式(fully-distributed)、真正有价值的(non-trivial)集群(cluster),请看 集群建立 Cluster Setup。
【待更新】
发表评论