No.69
多机配置
Mr. 王:在关于 Hadoop 内容介绍的最后,我们来谈谈如何把 Hadoop 配置在多台计算机上。
小可 :嗯,到目前为止,所有的程序还都仅仅运行在一台计算机上。
Mr. 王 :在实际的 Hadoop 应用中,我们使用的往往是多台服务器组成的服务器阵列。有时还要使用多个机架,这些机架之间通过一个交换机相连,每个机架的内部还有多台服务器核心,这些服务器之间也通过交换机相连接。当我们要处理的数据量达到一定规模时,每个机架中会有几十台计算机参与到并行计算之中。
这里我们不介绍几十台计算机的情况,那样叙述起来太过麻烦,我们用只有 3 个节点的情况来描述,其实在基本配置上机器比较多的情况和 3 台机器的情况是非常类似的。不过在真正的 Hadoop 应用配置上,还有很多需要注意的问题,比如网络拓扑、守护进程、输入输出缓冲等,这里暂时不作介绍。
首先要把准备工作全都做好,这些准备工作和配置伪分布式环境是一样的,安装 Linux、安装 JDK、安装 SSH、下载和解压缩 Hadoop。
在伪分布式环境中,仅有的一台机器同时充当Master 和 Slave、NameNode 和 DataNode、JobTracker 和 TaskTracker。但在完全分布式环境下,这些角色必须确定。虽然 Hadoop 可以自动指定由哪些计算机来执行 Map 和 Reduce,但是上述这些角色还是需要我们手动确定的。我们先对这个分配做一个小小的计划。
小可 :嗯,我们把主机 M 设定为管理系统、检测整个工作、管理 HDFS 的机器,然后将S1 和 S2 分别设定为具体执行工作的“工人”。
Mr. 王 :接下来我们要让每台计算机都知道自己的主机名和 IP 地址。在 Linux 系统下,我们找到 /etc/hosts 这个文件,在里面加上 :
localhost 表示本地,本地的 IP 地址为 127.0.0.1。如果文件中有这个项目的话,不必更改它。
再找到 /etc/hostname 文件 :
接下来我们让计算机之间可以通过 SSH 互相免密码登录。关于如何生成 SSH 公密钥对我们前面已经解释过了,方法是一样的,只是这次我们要将authorized_keys 这个文件夹复制到S1、S2 中的 .ssh/ 文件夹里面去。
可以使用命令 :
然后试一下在主机上能不能登录到 S1 和 S2。
接下来修改 3 台机器的 Hadoop 配置文件。
对于 3 台计算机,首先在 Hadoop-env.sh 中添加 JAVA_HOME 环境变量。在文件中添加 :
然后修改配置文件 core-site.xml。
这一步我们编辑的是 Hadoop 的配置文件,在这里要指定 HDFS 的地址和端口号。
再修改 MapReduce 的配置文件。
这里我们要对 MapReduce 的 JobTracker 的地址和端口号进行配置。
最后修改配置文件 hdfs-site.xml。
这里我们修改的是 HDFS 的配置文件,要确定运行模式为完全分布式并且有两台计算机参与到实际的工作中来。
接下来在 conf/masters 中加入主机名 M,在conf/slaves 中加入主机名 S1,S2。:
在文件中写上
至此,一个由 3 个节点组成的 Hadoop 平台就已经构建完毕了。我们可以格式化 HDFS 并启动 Hadoop 了,与伪分布式一样,使用命令 :
下期精彩预告
经过学习,我们研究了多机配置涉及到的一些具体问题。在下一期中,我们将进一步了解适于迭代并行计算的平台——Spark的相关内容。更多精彩内容,敬请关注灯塔大数据,每周五不见不散呦!
文章作者:王宏志
文章编辑:天天