Hadoop环境搭建及wordcount实例运行

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.创建本地示例文件
以hadoop身份登录master,在/home/hadoop/file目录下创建file1.txt和file2.txt,内容分别如下:
2.在HDFS上创建输入文件夹input
3.上传本地文件到HDFS的iΒιβλιοθήκη Baiduput目录下
4.运行例子
运行命令如下:
hadoop jar /usr/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount input output
表明java已成功安装。
安装
1.以root身份登录master,把hadoop安装文件hadoop-0.20.2.tar.gz拷到/usr目录下,直接解压安装即可,此时hadoop安装在/usr/hadoop-0.20.2下,如下图所示:
2.把hadoop安装目录的所有者和用户组改为hadoop用户:
hdfs-site.xml添加如下语句在<configuration></configuration>之间:
replication默认为3,如果不修改,datanode少于三台就会报错
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
安装
以root身份登录各个主机,把JDK二进制安装文件jdk-6u30-linux-i586.bin拷到/usr目录下,直接在该目录运行文件:
./jdk-6u30-linux-i586.bin
JDK会解压安装在当前目录,即/usr/jdk1.6.0_30
vi /etc/profile
增加java环境变量:
此时master到slave1的shh信任关系已经配好。进入hadoop@master:/home/hadoop/.ssh目录,可以看到以下4个文件:
hadoop@master:~/.ssh$ ls
authorized_keys id_rsa id_rsa.pub known_hosts
master到slave2的信任关系如法炮制。注意如果IP有变更的话ssh信任关系需要重新配置。
vmshared是共享文件夹的名字。
注意执行mount命令时当前目录一定不能是挂载目录/mnt/share。
如下图,物理主机D:\vmshared目录下的文件已在虚拟机的/mnt/share下共享。
离线安装
由于我的虚拟机在内网,无法通过apt-get来在线安装ssh服务,下面介绍一下离线安装openssh-server服务。
slave2如法复制。
7.格式化hadoop文件系统,启动hadoop
cd $HADOOP_HOME/bin
./hadoop namenode -format #格式化文件系统
./start-all.sh #启动namenode上的hadoop
不熟悉hadoop命令的可以直接敲入hadoop然后回车看命令的用法
VirtualBox
1.设置virtualbox中的ubuntu使用两个网卡,一个网卡是网络地址转换(NAT)网卡,使用dhcp的方式获取ip,用来访问外网;另外一个网卡是Host-Only网卡,用来与物理主机之间的互相访问。入下图所示:
2.设置virtualbox的Host-Only虚拟网卡IP
打开网络设置界面,右键点击VirtualBox Host-Only Network网卡,入下图所示:
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%
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。
</property>
mapred-site.xml添加如下语句在<configuration></configuration>之间:
<property>
<name>mapred.job.tracker</name>
<value>111.111.111.2:9001</value>
</property>
把slave1的公钥拷贝到master的authorized_keys,中间会有提示输入hadoop@slave1的密码
hadoop@master:/home/hadoop
scp~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys
把authorized_keys文件拷回slave1
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
用jps命令看hadoop状态:
Slave状态:
正常情况下,namenode主机至少需要有NameNode、SecondaryNameNode、JobTracker三个进程,datanode主机至少需要有DataNode和TaskTracker两个进程。
访问http://111.111.111.2:50070/查看hdfs状态:
ssh-keygen -t rsa
同上
hadoop@master:/home/hadoop
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
把公用密匙添加到authorized_keys文件中
hadoop@master:/home/hadoop
ssh slave1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
到http://ishare.games.sina.com.cn/download/explain.php?fileid=19826494下载以下三个文件
openssh-client_5.3p1-3ubuntu3_i386.deb
openssh-server_5.3p1-3ubuntu3_i386.deb
这个命令将为用户hadoop生成密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,保存在/home/hadoop/.ssh目录下。
hadoop@slave1:/home/hadoop
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文件添加如下内容:
hadoop@master:~$ java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)
启动ssh server
/etc/init.d/ssh start
启动后ps -ef|grep ssh
存在sshd进程即表明ssh服务安装成功。
配置
以master主机到slave1主机的ssh信任关系配置过程为例。
先以root身份登录两台主机,修改/etc/hosts文件为以下内容:
127.0.0.1 localhost
其中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
<property>
<name>fs.default.name</name>
<value>hdfs://111.111.111.2:9000</value>
</property>
<property>
<name>fs.tmp.dir</name>
<value>/home/hadoop/tmp</value>
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/
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>之间:
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
依次选择打开“属性”-“internet协议”,设置该网卡的IP。为了避免与公司的内网IP冲突,这里设置为111.111.111.1,点击确定。如下图所示:
3.设置ubuntu的网卡IP,第一个网卡eth0设置为dhcp获取ip,第二个网卡eth1设置为静态ip。/etc/network/interfaces文件配置如下:
完了重启网络/etc/init.d/networking restart
4.测试网络
在物理主机ping虚拟机:
在虚拟机ping物理机:

打开虚拟机的设置界面,添加共享文件夹,如下图所示:
已root身份登录虚拟机
创建挂载目录:
mkdir /mnt/share
挂载共享目录:
mount -t vboxsf vmshared /mnt/share
访问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文件中,可以直接启动来测试输出结果。
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
切换为hadoop用户:
相关文档
最新文档