命令行一键启动 Hadoop 集群
一直误以为 Hadoop 的安装运行那么麻烦是不可避免的,其实并非如此。
Hadoop 提供了一种算得上是“开箱可用”的集群启动方式,可以用来快速实验和测试,这个方法就是“迷你集群”,下文用 MiniCluster指代。
引用官网:
使用 MiniCluster 命令行,用户可以使用一个命令就可以启动和关闭一个小而全的 Hadoop 集群,不需要配置任何的环境变量或者配置文件,这个集群包含了 HDFS 和 YARN/MapReduce。
不过从实际操作来看,还是需要稍微配置一点东西的,但很少。
本文基于 Hadoop 2.7.0,在 Mac 上测试,Java 已安装。
参考的官方文档:https://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/CLIMiniCluster.html
但是完全按照文档没有走通,因此有一些 workaround。
概述
运行一个 Hadoop MiniCluster 的步骤如下:
下载并解压 Hadoop 安装包;
配置
HADOOP_CLASSPATH
环境变量;运行 MiniCluster;
下载安装
下载解压命令:
唯一需要解释的是,为什么选择 2.7.0 版本:
因为我想稍微研究一下 Hadoop 2.x 版本,因此不考虑 3.x
工作中我们使用的是 2.6.0 版本,有些功能是不支持的,因此大版本就在 2.7 - 2.10 中选择,比较倾向于小版本,因为复杂度会相对低一些
搜索了一下,比如:https://www.pervasivecomputing.net/hadoop/hadoop-version
如果这个版本不合适,后面再换
配置环境变量
这一步没有显式的写在官方文档里,如果直接执行下一步,会报 ClassNotFound 的错误。
我希望把 Hadoop 安装包里所有的 JAR 包都添加到 HADOOP_CLASSPATH 中,具体做法是,在你的 .bashrc
或 .zshrc
中添加如下内容:
在配置过程中,也搜到了别的配置方法,但是不太行:
暂时不去深究原因。
运行 MiniCluster
在 Hadoop 的安装目录下,执行:
输出的日志如下(省略了一部分):
从日志里可以看到启动了一个 NameNode,一个 DataNode 、一个 ResourceManager 和一个 NodeManager,每个角色的服务使用了随机的端口,为了方便使用,我们来指定一下 NN 和 RM 的端口:
下面分别测试一下HDFS和YARN。
上传下载文件
把安装目录下的 README.txt
上传到个人目录下:
再把它下载下来:
运行 WordCount
创建输入目录并准备数据:
运行:
任务基本瞬间完成,查看输出:
但是如果你通过 http://localhost:8088 去查看任务的话,会发现任务列表是空的,这是因为MapReduce任务默认是通过MapReduce集群来运行的,并不是YARN集群,如果要使用YARN集群来运行MR任务的话,需要新建 ./etc/hadoop/mapreduce-site.xml
文件,文件内容为:
重启集群,再重新提交任务,就可以在YARN的任务列表里找到MR任务:
本文完。
公众号:dashujuxuetu
版权声明: 本文为 InfoQ 作者【大数据学徒】的原创文章。
原文链接:【http://xie.infoq.cn/article/271644ffa7201ebfecff223ef】。文章转载请联系作者。
评论