用 Linux 和 Apache Hadoop 进行云计算(4)

设置 Apache Hadoop

现在在 Linux VM 上设置 Hadoop 集群,然后就可以在 Hadoop 集群上运行 MapReduce 应用程序。

Apache Hadoop 支持三种部署模式:

要想以单独或伪分布模式设置 Hadoop,请参考 Hadoop 的网站。在本文中,我们只讨论以全分布模式设置 Hadoop。

准备环境

在本文中,我们需要三台 GNU/Linux 服务器;一个作为主节点,另外两个作为从节点。


表 1. 服务器信息
服务器 IP   服务器主机名   角色  
9.30.210.159   Vm-9-30-210-159   主节点(NameNode 和 JobTracker)  
9.30.210.160   Vm-9-30-210-160   从节点 1 (DataNode 和 TaskTracker)  
9.30.210.161   Vm-9-30-210-161   从节点 2 (DataNode 和 TaskTracker)  

每台机器都需要安装 Java SE 6 和 Hadoop 二进制代码。更多信息见 参考资料。本文使用 Hadoop version 0.19.1。

还需要在每台机器上安装 SSH 并运行 sshd。SUSERedHat 等流行的 Linux 发行版在默认情况下已经安装了它们。

设置通信

更新 /etc/hosts 文件,确保这三台机器可以使用 IP 和主机名相互通信。

因为 Hadoop 主节点使用 SSH 与从节点通信,所以应该在主节点和从节点之间建立经过身份验证的无密码的 SSH 连接。在每台机器上执行以下命令,从而生成 RSA 公共和私有密钥。

ssh-keygen –t rsa  

这会在 /root/.ssh 目录中生成 id_rsa.pub。重命名主节点的 id_rsa.pub(这里改名为 59_rsa.pub)并把它复制到从节点。然后执行以下命令,把主节点的公共密钥添加到从节点的已授权密钥中。

cat /root/.ssh/59_rsa.pub >> /root/.ssh/authorized_keys  

现在尝试使用 SSH 连接从节点。应该可以成功连接,不需要提供密码。

设置主节点

把 Hadoop 设置为全分布模式需要配置 <Hadoop_home>/conf/ 目录中的配置文件。

在 hadoop-site.xml 中配置 Hadoop 部署。这里的配置覆盖 hadoop-default.xml 中的配置。


表 2. 配置属性
属性   解释  
fs.default.name   NameNode URI  
mapred.job.tracker   JobTracker URI  
dfs.replication   复制的数量  
hadoop.tmp.dir   临时目录  

hadoop-site.xml

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="https://www.linuxidc.com/configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://9.30.210.159:9000</value> </property> <property> <name>mapred.job.tracker</name> <value>9.30.210.159:9001</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp/</value> </property> </configuration>  

通过配置 hadoop-env.sh 文件指定 JAVA_HOME。注释掉这一行并指定自己的 JAVA_HOME 目录。

export JAVA_HOME=<JAVA_HOME_DIR>  

在 master 文件中添加主节点的 IP 地址。

9.30.210.159  

在 slave 文件中添加从节点的 IP 地址。

9.30.210.160 9.30.210.161  

设置从节点

把 hadoop-site.xml、hadoop-env.sh、masters 和 slaves 复制到每个从节点;可以使用 SCP 或其他复制工具。

对 HDFS 进行格式化

运行以下命令对 HDFS 分布式文件系统进行格式化。

<Hadoop_home>/bin/hadoop namenode -format  

检查 Hadoop 集群

现在,可以使用 bin/start-all.sh 启动 Hadoop 集群。命令输出指出主节点和从节点上的一些日志。检查这些日志,确认一切正常。如果弄乱了什么东西,可以格式化 HDFS 并清空 hadoop-site.xml 中指定的临时目录,然后重新启动。

访问以下 URL,确认主节点和从节点是正常的。

NameNode: :50070 JobTracker: :50030  

现在,已经在云中设置了 Hadoop 集群,该运行 MapReduce 应用程序了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyjxps.html