当前位置:文档之家› Hadoop环境搭建及wordcount实例运行

Hadoop环境搭建及wordcount实例运行

Hadoop
环境概述
虚拟平台:VirtualBox4.2.0
Linux版本:Ubuntu10.04
Hadoop版本:hadoop-0.20.2
JDK版本:1.6.0
Hadoop环境规划:一台namenode主机master,两台datanode主机salve1、slave2,master主机IP为111.111.111.2,slave1主机IP为111.111.111.3,slave2主机IP为111.111.111.4。
ssh_5.3p1-3ubuntu3_all.deb
依次安装即可
dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb
dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb
dpkg -i ssh_5.3p1-3ubuntu3_all.deb
14/02/20 15:59:58 INFO mapred.JobClient: Running job: job_201402201551_0003
14/02/20 15:59:59 INFO mapred.JobClient: map 0% reduce 0%
14/02/20 16:00:07 INFO mapred.JobClient: map 100% reduce 0%
111.111.111.2 master
111.111.111.3 slave1
111.111.111.4 slave2
然后按以下步骤配置master到slave1之间的ssh信任关系
用户@主机:/执行目录
操作命令
说明
hadoop@master:/home/hadoop
ssh-keygen -t rsa
111.111.111.2
slaves文件添加如下内容:
111.111.111.3
111.111.111.4
5.修改以下3个XML配置文件
首先hadoop-env.sh中添加如下语句:
export JAVA_HOME=/usr/jdk1.6.0_30
core-site.xml添加如下语句在<configuration></configuration>之间:
启动ssh server
/etc/init.d/ssh start
启动后ps -ef|grep ssh
存在sshd进程即表明ssh服务安装成功。
配置
以master主机到slave1主机的ssh信任关系配置过程为例。
先以root身份登录两台主机,修改/etc/hosts文件为以下内容:
127.0.0.1 localhost
这个命令将为用户hadoop生成密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,保存在/home/hadoop/.ssh目录下。
hadoop@slave1:/home/hadoop
其中wordcount为程序主类名,input和output分别为输入、输出文件夹。
运行结果如下:
hadoop@master:~$ hadoop jar /usr/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount input output
14/02/20 15:59:58 INFO input.FileInputFormat: Total input paths to process : 2
完了重启网络/etc/init.d/networking restart
4.测试网络
在物理主机ping虚拟机:
在虚拟机ping物理机:

打开虚拟机的设置界面,添加共享文件夹,如下图所示:
已root身份登录虚拟机
创建挂载目录:
mkdir /mnt/share
挂载共享目录:
mount -t vboxsf vmshared /mnt/share
3.在/etc/profile中增加hadoop环境变量:
export HADOOP_HOME=/usr/hadoop-0.20.2
export PATH=$PATH:$HADOOP_HOME/bin
4.修改hadoop的配置文件,在/usr/hadoop-0.20.2/conf下
masters文件添加如下内容:
到/download/explain.php?fileid=19826494下载以下三个文件
openssh-client_5.3p1-3ubuntu3_i386.deb
openssh-server_5.3p1-3ubuntu3_i386.deb
把slave1的公钥拷贝到master的authorized_keys,中间会有提示输入hadoop@slave1的密码
hadoop@master:/home/hadoop
scp~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys
把authorized_keys文件拷回slave1
访问http://111.111.111.2:50030/查看mapreduce状态:
用hadoop dfsadmin -report命令查看hadoop各节点状态:
worldcount
worldcount实例相当于hadoop上的Hello Wolrd程序,是hadoop入门的必学例子。该实例的编译程序已打包在hadoop安装目录/usr/hadoop-0.20.2/hadoop-0.20.2-examples.jar文件中,可以直接启动来测试输出结果。
vmshared是共享文件夹的名字。
注意执行mount命令时当前目录一定不能是挂载目录/mnt/share。
如下图,物理主机D:\vmshared目录下的文件已在虚拟机的/mnt/share下共享。
离线安装
由于我的虚拟机在内网,无法通过apt-get来在线安装ssh服务,下面介绍一下离线安装openssh-server服务。
6.把配置好的hadoop复制到slave主机
scp -rp /usr/hadoop-0.20.2slave1:/home/hadoop
ssh slave1
su root
cp -R /home/hadoop/hadoop-0.20.2/usr/
chown -R hadoop:hadoop/usr/hadoop-0.20.2/
依次选择打开“属性”-“internet协议”,设置该网卡的IP。为了避免与公司的内网IP冲突,这里设置为111.111.111.1,点击确定。如下图所示:
3.设置ubuntu的网卡IP,第一个网卡eth0设置为dhcp获取ip,第二个网卡eth1设置为静态ip。/etc/network/interfaces文件配置如下:
此时master到slave1的shh信任关系已经配好。进入hadoop@master:/home/hadoop/.ssh目录,可以看到以下4个文件:
hadoop@masterFra bibliotek~/.ssh$ ls
authorized_keys id_rsa id_rsa.pub known_hosts
master到slave2的信任关系如法炮制。注意如果IP有变更的话ssh信任关系需要重新配置。
hdfs-site.xml添加如下语句在<configuration></configuration>之间:
replication默认为3,如果不修改,datanode少于三台就会报错
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name></name>
<value>hdfs://111.111.111.2:9000</value>
</property>
<property>
<name>fs.tmp.dir</name>
<value>/home/hadoop/tmp</value>
1.创建本地示例文件
以hadoop身份登录master,在/home/hadoop/file目录下创建file1.txt和file2.txt,内容分别如下:
2.在HDFS上创建输入文件夹input
3.上传本地文件到HDFS的input目录下
4.运行例子
运行命令如下:
hadoop jar /usr/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount input output
slave2如法复制。
7.格式化hadoop文件系统,启动hadoop
cd $HADOOP_HOME/bin
./hadoop namenode -format #格式化文件系统
./start-all.sh #启动namenode上的hadoop
不熟悉hadoop命令的可以直接敲入hadoop然后回车看命令的用法
export JAVA_HOME=/usr/jdk1.6.0_30
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
相关主题