e、编辑 /etc/hosts
由于 Hadoop 有时会使用 hostname 访问系统中的其他计算机,而 hostname 有时会解析错误,所以比较笨的方法是在 /etc/hosts 里增加每一台计算机的名称和IP地址。比如:
192.168.0.10 master 192.168.0.100 data001 192.168.0.101 data002 192.168.0.102 data003
3、复制已配置好的 Hadoop 到每一台计算机
首先要保证从 namenode 计算机能够使用 ssh public key 方式登录到其他的每一台计算机(当前示例是1台自己和3台 datanode),实现的方法是在 namenode 计算机使用 ssh-keygen 命令生成 ssh public key,对于红帽系 Linux 发行版可能还需要运行 ssh-add 命令,然后使用 ssh-copy-id 的方法把这个 key 复制到每一台计算机,然后使用 ssh 登录一次所有计算机(包括自己)。
接下来就可以使用 scp 命令复制配置好的 Hadoop 程序到每一台 datanode 计算机了,Hadoop 程序的存放位置必须一致,比如在 namenode 计算机中Hadoop程序位于 /usr/local/hadoop,那么其他计算机也应该存放在这里。
4、设置 namenode 特有的配置
因为我们可以在 namenode 控制所有计算机的 Hadoop 启动或者关闭,所以需要列出有哪些计算机是受控制的。
a、编辑 conf/master 文件,写入如下1行
192.168.0.10
这一行表示要启动的 secondaryNameNode 位于 192.168.0.10 这台计算机(跟 nameNode 同用一台)
b、编辑 conf/slaves 文件,写入如下3行
192.168.0.100
192.168.0.101
192.168.0.102
这表示当前 Hadoop 系统一共有3台 datanode。
5、格式化 namenode
这一步只需做一遍,切换到 Hadoop 程序目录,运行:
$ bin/hadoop namenode -format
6、启动 hadoop
$ bin/start-dfs.sh
这时应该看到启动了 namenode, secondaryNamenode 以及3个 datanode。
$ bin/start-mapred.sh
这时应该看到启动了 jobTracker 和 3个taskTracker。
上面的两个命令也可以用一个命令代替:bin/start-all.sh
7、测试一个分布式计算
在 Hadoop 程序目录里附带了一个统计一个文件里每个单词出现次数的示例,下面将会用它来测试。
首先你需要准备几个纯文本文件(比如有文件 /tmp/text/hello.txt 和 /tmp/text/world.txt ),把他写入到 Hadoop。
$ bin/hadoop fs -copyFromLocal /tmp/text text
这样就会在 Hadoop 里创建了一个 text 文件夹,并且把 hello.txt 和 world.txt 复制到其中了。可以运行 ls 命令查看 Hadoop 里面的文件:
$ bin/hadoop fs -ls
然后运行示例程序
$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount text text-output
运行完毕之后使用 ls 命令可以查看运行结果:
$ bin/hadoop fs -ls text-output
你可以根据示例的源码修改成自己的程序,并且运行测试一下。
8、Web 监控页面
访问 :50070 可以查看 namenode 的总体运行情况以及已连入的 datanode 列表
访问 :50030 可以查看 jobTracker 的运行情况以及各个 taskTracker 的运行情况和日志
9、关闭Hadoop系统
$bin/stop-all.sh
10、新增加一台 datanode 到系统
如果某台 datanode 重启了,为了让它重新加入 Hadoop 系统,需要在 datanode 计算机上运行:
$ bin/hadoop -daemon.sh start datanode
假如系统需要扩容或者换了一台新机器,这时只需把之前配置好的 Hadoop 复制过来,然后运行上面一行命令即可。假如新增了IP地址或者IP地址发生改变,记得还要在 conf/slaves 文件里作相应的增改。
最后,需要成功配置 Hadoop 可能会有些意外问题,最好的解决方法是查看 Hadoop 的日志,一般来根据日志提供的线索都能把问题解决。
参考资料
1、Hadoop中文文档
2、Hadoop 命令手册
3、Running Hadoop On Ubuntu Linux (Single-Node Cluster)
4、Running Hadoop On Ubuntu Linux (Multi-Node Cluster)