设置 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。SUSE 和 RedHat 等流行的 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 应用程序了。