您的位置:首页 > Web前端

Fedora20搭建伪Hadoop集群,运行Wordcount程序

2014-01-04 13:20 471 查看
虚拟机搭建伪hadoop集群,运行wordcount程序:

一、安装JDK1.6.0

1. 在Oracal网站上下载jdk-6u11-linux-x64.bin到/usr/programFiles/jvm

2. ./jdk-6u11-linux-x64.bin 运行安装JDK1.6.0

3 修改/etc/profile的环境变量:

exportJAVA_HOME=/usr/programFiles/jvm/jdk1.6.0_11

exportCLASSPATH=".:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH"

exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

执行source /etc/profile

有可能要重启一下虚拟机

4. 按这些命令选择要用的jdk版本:

sudoupdate-alternatives --install /usr/bin/java java /usr/jvm/jdk1.7.0_40/bin/java 300
sudoupdate-alternatives --install /usr/bin/javac javac /usr/jvm/jdk1.7.0_40/bin/javac300
sudoupdate-alternatives --config java
5. 执行java –version查看当前jdk版本,应该为jdk1.6.0

二、安装、启动SSH,配置SSH无密码连接

1. 安装、启动SSH:

查看是否安装:rpm –qa | grep ssh

查看ssh服务是否开启: service sshd status

若关闭则启动ssh服务:service sshd start 或systemctl start sshd.service

设置开机启动ssh服务:systemctl enable sshd.service

2. 配置ssh无密码连接:

原因:实际上,在H adoop的安装过程中,是否免密码登录是无关紧要的,但是如果不配置免密码登录,每次启动Hadoop都需要输入密码以登录到每台机器的DataNode
上,考虑到一般的Hadoop集群动辄拥有数百或上千台机器,因此一般来说都会配置SSH的免密码登录!在此我们选择配置SSH为免密码登录模式!!

方法:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

ssh-keygen代表生成秘钥; -t(注意区分大小写)表示指定生成的秘钥类型;dsa是dsa密钥认证的意思。即秘钥类型;-P用于提供密语;-f指定生成的秘钥文件。(其中~
代表当前用户文件夹,如home/wade ),这条命令会在.ssh文件夹下创建id_dsa及id_dsa.pub两个文件,这是SSH的一对私钥和秘钥,类似于锁和钥匙。

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

这条命令用于把公钥加到用于认证的公钥文件中。这里的authorized_keys是用于认证的公钥文件。

3. 检验:ssh localhost,出现如下显示则说明SSH已正常运行



三、配置Hadoop环境

下载hadoop-1.0.1.tar.gz到/usr/programFiles中,

网址:http://archive.apache.org/dist/hadoop/common/hadoop-1.0.1/

解压 tar xzvf hadoop-1.0.1.tar.gz 得到文件夹hadoop-1.0.1

修改环境变量 vi /etc/profile

export HADOOP_HOME=/usr/programFiles/hadoop-1.0.1

export PATH=$PATH:$HADOOP_HOME/bin

四、搭建Hadoop伪分布式集群

1. 进入hadoop安装目录下conf文件夹(我的是/usr/programFiles/hadoop-1.0.1/conf) 配置hadoop配置文件:

1) hadoop-env.sh

找到某行:# export JAVA_HOME = ... 去掉“#”并把JAVA_HOME设置为jdk安装路径:export JAVA_HOME =/usr/programFiles/jvm/jdk1.6.0_11

2) core-site.xml

在configuration标签之间添加如下内容:



说明:hadoop分布式文件系统的两个重要的目录结构,一个是namenode上名字空间的存放地方,一个是datanode数据块的存放地方,还有一些其他的文件存放地方,这
些存放地方都是基于hadoop.tmp.dir目录的,比如namenode的名字空间存放地方就是${hadoop.tmp.dir}/dfs/name,
datanode数据块的存放地方就
${hadoop.tmp.dir}/dfs/data,所以设置好hadoop.tmp.dir目录后,其他的重要目录都是在这个目录下面,这是一个根目录。我设置的是 /usr/programFiles/hadoop-
1.0.1/hadooptmpdir ,当然这个目录必须是存在的。
3) hdfs-site.xml 添加如下内容:



4) mapered-site.xml 添加如下内容:



2. 主机名和IP解析配置,下面三个文件中主机名要保持一致
1) /etc/hosts



在伪分布式模式下master和slave为同一个机子。这里主机名可以随便取,但是一定要和127.0.0.1的对应,所以我这里写master。

2) /etc/hostname

内容为master(主机名)

3) /etc/sysconfig/network添加如下内容:



3. Hadoop启动
1) 格式化namenode:
进入hadoop安装目录下的bin目录,此为/usr/programFiles/bin执行
Hadoop namenode -format



2)启动hadoop所有进程:

还是在bin目录下执行start-all.sh

3)执行完之后用jps查看hadoop进程



说明:

1.secondaryname是namenode的一个备份,里面同样保存了名字空间和文件到文件块的map关系。建议运行在另外一台机器上,这样master死掉之后,还可以通过
secondaryname所在的机器找回名字空间,和文件到文件块得map关系数据,恢复namenode。

2.启动之后,在/usr/local/hadoop/hadoop-1.0.1/hadooptmp下的dfs文件夹里会生成 data目录,这里面存放的是datanode上的数据块数据,因为笔者用的是单机,所以
name 和 data 都在一个机器上,如果是集群的话,namenode所在的机器上只会有name文件夹,而datanode上只会有data文件夹。

4. 在执行hadoop相关命令时候,总是出现:

Warning: $HADOOP_HOME is deprecated

解决方法如下:

在hadoop-env.sh ,添加一个环境变量:export HADOOP_HOME_WARN_SUPPRESS=true

5. 在web页面下查看hadoop运行情况

Localhost:50070

Localhost:50030

五、运行wordcount例程

1. 在hadoop安装目录下创建文件夹:

在/usr/programFiles/hadoop-1.0.1下创建test_wordCount_0103

在test_wordCount_0103文件夹下创建file0、file1文件,分别写入一些单词。

2. 在HDFS分布式文件系统中创建目录input:

bin/hadoop fs –mkdirinput

3. 离开hodoop的安全模式:#bin/hadoop dfsadmin –safemode leave

注:Hadoop的安全模式相关命令:#bin/hadoop dfsadmin –safemode enter/leave/get/wait

Hadoop的HDFS系统在安全模式下只能进行“读”操作!不能进行文件等的删除,创建和更新操作!

4. 将数据从Linux文件系统复制到HDFS分布式文件系统中

bin/hadoop fs –put /usr/programFiles/hadoop-1.0.1/test_wordCount_0103input

5. 执行wordcount例程:

bin/hadoop jarhadoop-examples-1.0.1.jar wordcount input output






6. 查看输出结果

bin/hadoopdfs -cat output/*

参考:
/article/7704892.html

http://wojiaolongyinong.iteye.com/blog/1946817
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: