Hadoop开发周期(四):发布和运行MapReduce TODO
在将MapReduce发布到全发布模式下运行,需要先在单机模式下运行看能否正常通过,以提前发现bug。
1 单机模式单机模式不需要配置Hadoop文件,关于Hadoop安装见文章Hadoop开发周期(一):基础环境安装 。将编写的MapReduce查询打包,输入一下命令
hadoop jar wordcount.jar input output
说明:wordcount.jar为包含运行作业main函数类的jar包。
input文件夹下放置输入的文件。output为输出的目录,在运行job前需保证该目录不存在,否则会报错。以单词统计为例运行过程如下
运行结果文件夹如下
NameNode --------------10.3.11.30 (Master--NameNode)
DataNode-1-------------10.3.11.31(Slave1—DataNode)
DataNode-2-------------10.3.11.46 (Slave2—DataNode)
1)设置主机名为了以后方便,在/etc/hosts里面增加各个节点的ip地址和hostname[root@localhost ~]# vi /etc/sysconfig/network
修改文件内容如下:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=NameNode
[root@localhost ~]# hostname NameNode
查看主机名是否修改成功
[root@localhost ~]# hostname
NameNode
2)创建用户hadoop,密码...
[root@NameNode ~]# userdel -r datanode1
[root@NameNode ~]# useradd -m hadoop
[root@NameNode ~]# passwd hadoop
3)IP 地址及别名配置为了能够使用别名来访问服务器,需要在 /etc/hosts 文件中进行 IP 地址及别名对应关系的配置。
[root@NameNode ~]# vi /etc/hosts
10.3.11.11NameNode
10.3.11.12DataNode-1
10.3.11.13 DataNode-2
在从服务器上的 /etc/hosts 文件中的配置如下(以 DataNode-1 为例,DataNode-2 同理):
[root@DataNode-1 ~]# vi /etc/hosts
10.3.11.11NameNode
10.3.11.12DataNode-1
4)创建/etc/hosts.equiv文件[root@NameNode ~]# vi /etc/hosts.equiv
NameNode
DataNode-1
DataNode-2
在完成上述配置服务器的配置后,在 NameNode上进行 ping DataNode-1 来验证别名与 IP 地址是否已经建立起了对应关系。如果能够拼通则表明配置成功。
[root@DataNode-1 ~]# ping -c 1 DataNode-1
2.2 ssh配置配置SSH,实现集群节点间账户无密码RSH方式登录(NameNode启动其他服务器上的进程免去登陆这一环节)。配置方法如下:
登入NameNode节点,产生密钥;
将NameNode节点的公开密钥分发到各节点。
1)在~目录下创建文件夹
mkdir .ssh2) 开始配置ssh免登陆:注意,这个操作只在NameNode上操作。
ssh-keygen -t rsa // 接下来一路回车,则ok
cp id_rsa.pub authorized_keys //进入.ssh目录3) 分发密钥
[hadoop@NameNode ~]#scp ~/.ssh/id_rsa.pub hadoop@DataNode-1:/home/hadoop/.ssh
[hadoop@NameNode hadoop-0.20.2]$ viconf/hadoop-env.sh
# Set Hadoop-specific environment variables here.
# The only required environment variable isJAVA_HOME. All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it iscorrectly defined on
# remote nodes.
# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/home/hadoop/jdk
# Extra Java CLASSPATH elements. Optional.
# export HADOOP_CLASSPATH=
# The maximum amount of heap to use, in MB. Defaultis 1000.
# export HADOOP_HEAPSIZE=2000
# Extra Java runtime options. Empty by default.
# export HADOOP_OPTS=-server
# Command specific options appended to HADOOP_OPTSwhen specified
exportHADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_NAMENODE_OPTS"
配置slaves 文件,在其中添加有几个数据结点,本文的配置如下所示:
$vi slaves
DataNode-1
DataNode-2
配置masters 文件,在其中添加 namenode 结点,本文的配置如下所示:$vi masters
NameNode
在完成上述配置后,即已经完成了架构的部署。即有一台 master 及多台 slaves 。
配置 core-site.xml 文件
[hadoop@NameNode ~]$scp -r /home/hadoop/hadoop-1.0.4/ DataNode-1:/home/hadoop/hadoop-1.0.4[hadoop@NameNode hadoop-0.20.2]$ bin/hadoop namenode -format
10/10/18 00:12:48 INFOnamenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host =ubuntu/127.0.1.1
STARTUP_MSG: args =[-format]
STARTUP_MSG: version =0.20.2
STARTUP_MSG: build =https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707;compiled
by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
Re-format filesystemin /usr/local/hadoop/filesystem/name ? (Y or N)Y
10/10/18 00:12:53
INFOnamenode.FSNamesystem:fsOwner=root,root,adm,dialout,fax,cdrom,tape,audio,dip,video,plugdev,fuse,lpadmin,ne
tdev,admin,sambashare
10/10/18 00:12:53 INFOnamenode.FSNamesystem: supergroup=supergroup
10/10/18 00:12:53 INFOnamenode.FSNamesystem: isPermissionEnabled=true
10/10/18 00:12:53 INFOcommon.Storage: Image file of size 94 saved in 0 seconds.
10/10/18 00:12:53 INFOcommon.Storage: Storage directory /usr/local/hadoop/filesystem/name has beensuccessfully
formatted.
10/10/18 00:12:53 INFOnamenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shuttingdown NameNode at ubuntu/127.0.1.1
************************************************************/
不出意外,应该会提示格式化成功。如果不成功,就去 hadoop/logs/ 目录下去查看日志文件 . 注意这里的交互式问题一定要输入大写的 Y 。2)启动hadoop
hadoop@NameNodehadoop-0.20.2]$ bin/start-all.sh
* start-all.sh 启动所有的 Hadoop 守护进程。包括 namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的 Hadoop
* start-mapred.sh 启动Map/Reduce 守护。包括 Jobtracker 和 Tasktrack
* stop-mapred.sh 停止Map/Reduce 守护
* start-dfs.sh 启动Hadoop DFS 守护 .Namenode 和 Datanode
* stop-dfs.sh 停止DFS 守护
3) 查看启动情况在成功启动后,在主服务器上通过如下地址进行访问:
http://10.3.11.11:50070 即可以查看当前有几个数据结点,它们的状态如何。
http://10.3.11.11:50030 即可以查看当前的 job 及 Task 的工作状态。