先决条件
1.先决条件,先安装好hadoop、sun-jdk、ssh etc
2.jdk1.5+,必须安装。
3.ssh本息安装并且保证sshd一直运行。
准备工作
操作系统:ubuntu
我有两台机器:分别是 172.21.77.119 ,和172.21.78.63 两台物理ubuntu服务器。
准备机器:一台master、若干台slave。我这里是一台 172.21.78.63
172.21.77.119 node1 #master
172.21.78.63 node2 #(slave1)
主机信息:
机器名 | IP地址 | 作用 |
Node1 | 172.21.77.119 | NameNode、JobTracker |
Node2 | 172.21.78.63 | DataNode、TaskTracker |
在所有的机器上都建立相同的目录,也可以新建相同的用户。
我新建hadoop的目录放在/usr/local/hadoop
这个目录。
配置
在上面章节ssh-keygen -t -p ""
复制node1的authorized_keys 到node2.
scp authorized_keys node2:/home/hadoop/.ssh/
hadoop@feixiang:~/.ssh$ scp authorized_keys node2:/home/hadoop/.ssh/
authorized_keys 100% 397 0.4KB/s 00:00
改动你的 authorized_keys 文件的许可权限:
[hadoop@hadoop .ssh]$chmod 644 authorized_keys
检查下能不能配置成功,从hadoop机器上ssh到node2和node3,如果不须要输入密码则配置成功,如果还须要请检查上面的配置能不能正确。
scp拷贝hadoop目录到所有的node机器上。
然后在master机器上,启动所有节点。
bin/start-all.sh
hadoop@feixiang:/usr/local/hadoop$ bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-namenode-feixiang.out
node2: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-datanode-feixiang2.out
node1: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-secondarynamenode-feixiang.out
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-jobtracker-feixiang.out
node2: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-tasktracker-feixiang2.out
启动成功。
测试
NameNode - http://172.21.77.119:50070/dfshealth.jsp node1
JobTracker - http://172.21.78.63:50030/ node2
3) 使用netstat –nat查看端口49000和49001是否正在使用。
4) 使用jps查看进程
要想检查守护进程是否正在运行,可以使用 jps 命令(这是用于 JVM 进程的ps 实用程序)。这个命令列出 5 个守护进程及其进程标识符。
5)将输入文件拷贝到分布式文件系统:
$ bin/hadoop fs -mkdir input
$ bin/hadoop fs -put conf/core-site.xml input
运行发行版提供的示例程序:
$ bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+'
6.补充
Q: bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+' 什么意思啊?
A: bin/hadoop jar(使用hadoop运行jar包) hadoop-0.20.2_examples.jar(jar包的名字) grep (要使用的类,后边的是参数)input output 'dfs[a-z.]+'
整个就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。
Q: 什么是grep?
A: A map/reduce program that counts the matches of a regex in the input.
查看输出文件:
将输出文件从分布式文件系统拷贝到本地文件系统查看:
$ bin/hadoop fs -get output output
$ cat output/*
或者
在分布式文件系统上查看输出文件:
$ bin/hadoop fs -cat output/*
统计结果:
root@v-jiwan-ubuntu-0:~/hadoop/hadoop-0.20.2-bak/hadoop-0.20.2#bin/hadoop fs -cat output/part-00000
3 dfs.class
2 dfs.period
1 dfs.file
1 dfs.replication
1 dfs.servers
1 dfsadmin