Hadoop的配置及运行WordCount

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hadoop的配置及运行WordCount
目录
Hadoop的配置及运行WordCount (1)
一、环境: (1)
二、步骤: (1)
1 JDK及SSH安装配置: (1)
1.1 卸载Fedora自带的OpenJDK,安装Oracle的JDK (1)
1.2 配置SSH (2)
2 Hadoop安装配置: (4)
2.1 下载并配置Hadoop的JDK环境 (4)
2.2 为系统配置Hadoop环境变量 (5)
2.3 修改Hadoop的配置文件 (6)
2.4 初始化HDFS文件系统,和启动Hadoop (8)
2.5 关闭HDFS (11)
3 运行WordCount: (11)
3.1 下载和编译WordCount示例 (11)
3.2 建立文本文件并上传至DFS (13)
3.3 MapReduce执行过程显示信息 (14)
结尾: (15)
一、环境:
计算机Fedora 20、jdk1.7.0_60、Hadoop-2.2.0
二、步骤:
1 JDK及SSH安装配置:
1.1 卸载Fedora自带的OpenJDK,安装Oracle的JDK
*由于Hadoop,无法使用OpenJDK,所以的下载安装Oracle的JDK。

1.1.1、以下为卸载再带的OpenJDK:
然后到/technetwork/java/javase/downloads/index.html下载jdk,可以下载rpm格式的安装包或解压版的。

rpm版本的下载完毕后可以运行安装,一般会自动安装在/usr/java/的路径下面。

接下来就配置jdk的环境变量了。

1.1.2、进入到系统的环境变量配置文件,加入以下内容:(按i进行编辑,编辑完毕按ESC,输入:wq,回车即保存退出)
截图如下:Java环境变量配置
输入这个回车即可保存退出
java –version,检测配置是否成功。

如下结果则Java 配置安装成功。

1.2 配置SSH
搭建hadoop分布式集群平台,为了实现通讯之间的可靠,防止远程管理过程中的信息泄露问题。

配置ssh(安全外壳协议)是必不可少的步骤,以下为ssh的配置过程:
1.2.1、由于Fedora自带安装了ssh,不过默认没有开启。

下面查看系统的ssh:
如上图已经安装了ssh,下面我们通过sudo service sshd start打开ssh服务,service sshd status 未查看ssh的状态。

[master@localhost ~]$ sudo service sshd start
Redirecting to /bin/systemctl start sshd.service
[master@localhost ~]$ service sshd status
1.2.2、如上开启之后我们就要配置localhost:如果还没有密钥公钥对生成,则先用ssh-keygen指令生成一个密钥对。

就可以生成不需要密码的密钥公钥对了,从而实现自动访问。

如下的生成内容:
1.2.3、利用cp id_rsa.pub authorized_keys(把公钥复制一份,并改名为authorized_keys,这步执行完,应该ssh localhost可以无密码登录本机了,可能第一次要密码),这样可以将authorized_keys发给其他主机,以便认证登陆了。

authorized_keys id_rsa id_rsa.pub
2 Hadoop安装配置:
2.1 下载并配置Hadoop的JDK环境
2.1.1、用Firefox键入/dyn/closer.cgi/hadoop/common/找了中意的源,下载相对稳定版本的hadoop。

下载后路径一般为/home/master/下载/。

接下来解压修改配置文件,加入jdk的路径。

由于安装的为hadoop_2.2.0则hadoop-env.sh文件位于/ hadoop-2.2.0/etc/hadoop路径之下,好像老版本的在/hadoop-1.2.1/conf/当中,如果找不到可以搜索hadoop-env.sh。

2.1.2、打开文件后在最后加入jdk路径:export JAVA_HOME=/usr/java/jdk1.7.0_60
以下为实现截图:
2.2 为系统配置Hadoop环境变量
此为配置系统环境变量:
最后加上:export HADOOP_HOME=/home/master/hadoop-2.2.0/
*附加:如果为了安全起见,不让系统其他用户共享这个环境变量可以选择配置用户变量(配置bash环境变量)
在在PATH处加上:
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/hadoop-2.2.0/bin:/usr/java/jdk1.7.0_60/bin [master@localhost ~]$ source ~/.bash_profile
环境变量配置完成,通过echo $PATH查看路径配置
输入hadoop查看Hadoop配置成功(需要重启)
2.3 修改Hadoop的配置文件
*以下配置文件主要设置为了完成实验吧,如果要更详细的,可以上网查阅相关hadoop配置文件说明。

*以下为配置成伪分布式主要还是因为完成实验,测试hadoop。

2.3.1、配置HDFS的地址及端口号(core-site.xml):
加入HDFS地址及端口:
如果不配置,则默认使用8020端口。

修改core-site.xml(伪分布式使用IP地址而不是主机名或localhost的好处是不需要修改/etc/hosts,当然全分布式还是需要修改的)。

描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。

DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。

独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。

hadoop.tmp.dir hadoop文件系统依赖的基础配置,很多路径都依赖它,如果hdfs-site.xml 中不配置namenode和datanode的存放位置,默认就放在这个路径中。

</configuration>
2.3.2、修改HDFS文件的备份方式(hdfs-site.xml)
.dir指定name镜像文件存放目录,如不指定则默认为core-site中配置的tmp 目录。

dfs.data.dir数据存放的目录,如果不写默认为core-site中配置的tmp目录。

dfs.replication数据节点冗余备份的数量,它决定着系统里面的文件块的数据备份个数。

对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。

少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失),实验可以相对的小一点。

2.3.3、配置JobTracker的地址及端口(mapred-site.xml)
mapred.job.tracker -JobTracker的主机(或者IP)和端口。

</configuration>
2.4 初始化HDFS文件系统,和启动Hadoop
2.4.1、初始化HDFS文件系统
2.4.2、启动Hadoop
即运行start-all.sh,由于hadoop_2.2.0在/home/master/hadoop-2.2.0/sbin/路径中,老版本不在这里面,如果找不到可以搜索一下。

不过新版本可以分别运行,start-dfs.sh或start-yarn.sh(另一种MapReduce 新框架Yarn),这里只用hdfs即可,可以直接start-dfs.sh。

然后通过jps查看jvm运行程序。

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令搜索。

如上图,DataNode,NodeManager,ResourceManager,NameNode,Jps,SecondaryNameNode 这几个都应该显示运行才行,如果少了或如果连接被拒绝,请查看Hadoop的hadoop-env.sh 中的JAVA_HOME是否配置,如果配置正确,则查看ssh是否打开。

2.4.3、利用hdfs dfsadmin –report查看日志文件中有没有报错。

如果没有报错,说明Hadoop已经启动成功了。

[master@localhost hadoop]$ hdfs dfsadmin -report
2.4.4、以下为通过Web页面查看节点的状态:
2.5 关闭HDFS
stop-all 都停止dfs和mapred ,stop-dfs只停止dfs服务,看你开启的了。

好像新版本建议这两个分开开启和关闭吧。

[master@localhost hadoop]$ /home/master/hadoop-2.2.0/sbin/stop-dfs.sh
3 运行WordCount:
3.1 下载和编译WordCount示例
用Firefox键入/dyn/closer.cgi/hadoop/common/找了中意的源,然
后在相关版本的目录下找到hadoop-2.2.0-src.tar.gz的源码压缩包下载,hadoop-2.2.0安装文件里面没有包含WordCount.java的示例,而是在hadoop-2.2.0-src里面。

3.1.1、WordCount.java路径如下:(也可以用搜索查找)
/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-
examples/src/main/java/org/apache/hadoop/examples/WordCount.java
接下来就是在Home下新建一个hadoop文件方便解压后进一步编译,不过这一步纯属自愿。

3.1.2、将WordCount.java拷贝到用户目录新建的hadoop文件中:
mapreduce-examples/src/main/java/org/apache/hadoop/examples/WordCount.java ~/hadoop/
3.1.3、编译WordCount.java
由于编译这个文件需要几个hadoop的class文件。

以下为编译的classpath:
3.1.4、javac编译WordCount.java,在Home下新建一个class放置生成的class,也可以放在hadoop文件中。

WordCount.java -d ~ /class
3.1.5、将生成的class,打包成jar
3.2 建立文本文件并上传至DFS
*由于测试的是WordCount,只用新建普通文本文件即可,这里主要为完成实验。

3.2.1、创建本地示例文件
可以用gedit建file1.txt并将文本记录到里面,或是用命令行echo建文件及输入内容。

首相创建一个file文件,保存示例文本文件。

3.2.2、在HDFS上创建输入文件夹
先用hadoop fs –ls如果提示没有路径或文件,则我们需要先创建一个DFS的默认工作路径/user/{$USER}。

一般初次都需要这个设置。

(本机用户名{$USER}为master,以下需要一步步设置,我也不太清楚这是为什么~)
3.2.3、将本地file中的文件上传到DFS的input目录下
[master@localhost hadoop]$ hadoop fs -ls input
*以上存在一些问题,如果hadoop fs –ls提示无路径或文件请加上/斜杠,最好直接表明/user/master/input这样的路径,不过初次之后都只需要hadoop fs –ls input就可以显示input 内的内容了,完全不知道这是为什么。

所以出错就检查是不是/user/master/input这样的路径。

如果建的错误了可以用以下命令删除路径:(可多尝试几次)
3.3 MapReduce执行过程显示信息
*备注:以input作为输入目录,output目录作为输出目录。

3.3.1、执行WordCount
*其中:
hadoop jar为直线“jar”命令
/home/master/hadoop/WordCount.jar为WordCount.jar所在路径
org.apache.hadoop.examples.WordCount为WordCount.jar中WordCount.class的路径,类似java中调用函数那样import,指定类的位置,其间用点(.)隔开。

*以上没有提示错误则成功运行了WordCount示例。

如果出现错误提示,其中出现Input path does not exist这样的提示,那么有可能是DFS的路径配置有错误,请跳到[2.3将本地file中的文件上传到DFS的input目录下]内容重新配置DFS文件存储。

结尾:
感谢!。

相关文档
最新文档