[计算机软件及应用]Hadoop使用手册第一版 修订版.doc

上传人:音乐台 文档编号:1991538 上传时间:2019-01-28 格式:DOC 页数:34 大小:931KB
返回 下载 相关 举报
[计算机软件及应用]Hadoop使用手册第一版 修订版.doc_第1页
第1页 / 共34页
[计算机软件及应用]Hadoop使用手册第一版 修订版.doc_第2页
第2页 / 共34页
[计算机软件及应用]Hadoop使用手册第一版 修订版.doc_第3页
第3页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]Hadoop使用手册第一版 修订版.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]Hadoop使用手册第一版 修订版.doc(34页珍藏版)》请在三一文库上搜索。

1、华中科技大学魏立 徐水波012-3-4 d 2012-7-29Hadoop使用手册 -Hadoop安装部署及应用 目录第一部分 Hadoop安装与部署3第一节 Hadoop部署31.准备资源32.安装流程43.配置流程44.可能遇到问题5第二节 单机伪分布61.配置文件62.格式化 HDFS73.启动Hadoop监护进程74.复制输入文件到HDFS75.运行wordcount例子76.输出结果77.停止Hadoop系统7第三节 完全分布81.系统规划安排82.修改hosts83.配置ssh84.配置masters和slaves95.配置文件96.运行准备107.运行例子108.关闭Hadoop

2、进程119.说明1110.扩展至集群搭建11第四节 在eclipse下使用Hadoop121.下载Eclipse包122.解压Eclipse包123.修改Eclipse权限124.Eclipse环境配置125.拷贝hadoop插件136.准备输入文件147.启动Eclipse148.设置Hadoop安装文件夹路径149.新建Map/Reduce项目1410.导入wordcount例子1411.运行例子1412.查看结果15第二部分 Hadoop的小应用实例15数据去重151.前言152.实例的描述153.设计思路164.源代码165.运行过程与结果186.源代码分析24第三部分 Hadoop大

3、型应用介绍25第一节 音乐社区网站Last.fm举例251.Last.fm使用Hadoop的理由262.Last.fm在Hadoop应用上产生图表的处理过程263.总结29第二节 Rackspace系统日志分析举例291.日志292.收集和存储303.日志的MapReduce模型304.总结32第一部分 Hadoop安装与部署第一节 Hadoop部署1.准备资源注意:如果下的包不一致,请在安装与配置阶段注意修改对应参数。由于Ubuntu和Eclipse包过大,通过官网下载速度也相当快,这里就不发布共享了,我把Hadoop和JDK共享到我的网盘( http:/ ),以便下载。(1) Ubuntu

4、系统(具体版本不限) 说明: 到官网上下载Ubuntu镜像,可以刻盘安装,也可以用wubi安装,这里选择32位或64位直接决定着jdk包的选择(建议选32位),选择32位,则后面jdk选择i586系列,选择64位则jdk选择x64系列,安装ubuntu时请断网(不断网会Ubuntu安装过程中会更新,导致安装时间过长)操作,之后配置请联网。(2) Hadoop 0.20.2包说明:到http:/mirror.uoregon.edu/apache/hadoop/common/hadoop-0.20.2/下载hadoop-0.20.2.tar.gz包即可。(3) Java6-jdk包 说明:这里我下

5、载的是后缀为bin的文件。(4) SSH包说明:在终端中输入 sudo apt-get install ssh ,联网下载安装,安装过程中可能由于网络原因,出现安装问题,这个问题一段时间后网络状况好可安装成功。也可以通过更改Ubuntu的源来解决这个问题。(5) Eclipse包 说明:到www.eclipse.org/downloads/处下载Linux版本的安装包或者直接在ubuntu软件中心内下载安装eclipse。推荐在Ubuntu平台下下载,不要在Window上下载,容易出问题,在实验中遇到过这样的问题,可能与平台兼容性有关。 2.安装流程(括号内容为说明,请复制前面的代码到终端执行

6、) a.安装JDK 在终端中输入 (1)sudo mkdir /usr/Java (新建Java文件夹) sudo cp jdk的路径 /usr/Java (jdk的路径可以采用直接将文件拖入终端而后显示的方式) (2)cd /usr/Java (进入到Java目录下) sudo chmod u+x jdk-6u26-dlj-linux-i586.bin (改变文件权限为可执行)(3)sudo ./jdk-6u26-dlj-linux-i586.bin (执行安装,不停的回车,显示完协议后,提示是否同意协议,输入yes) b.安装Hadoop (1)sudo cp hadoop的路径 /usr

7、/local (将hadoop-0.20.2tar.gz拖入终端后即可显示hadoop的路径) (2)cd /usr/local (进入到local目录) sudo tar -xzf hadoop-0.20.2.tar.gz (解压hadoop-0.20.2.tar.gz) (3)sudo mv hadoop-0.20.2 hadoop (将解压后的文件夹名改为hadoop) (4)sudo addgroup hadoop sudo adduser -ingroup hadoop hadoop (创建一个名为hadoop的用户和用户组,并使之有更多权限) sudo -i (获取root权限)

8、sudo gedit /etc/sudoers 在 root ALL=(ALL) ALL 下面添加 hadoop ALL=(ALL) ALL 一行,然后保存关闭gedit。 reboot 重启机器,并用hadoop用户登录。3.配置流程 a.配置Java环境变量 在终端输入 (1)sudo gedit /etc/profile (用gedit打开etc下的profile文件) 在文件最后加入如下两行export CLASSPATH=.:/usr/Java/jdk1.6.0_26/lib:/usr/Java/jdk1.6.0_26/jre/lib:$CLASSPATH export PATH=.

9、:/usr/Java/jdk1.6.0_26/bin:/usr/Java/jdk1.6.0_26/jre/bin:/usr/local/ha doop/bin:$PATH (hadoop是一行,此处排版不下) (2)在终端输入sudo -i 获得root权限,输入java -version,看Java安装是否成功,出现 问题请参考第一部分第一节最后可能遇到问题Java相关问题部分 b.配置hadoop环境变量 在终端输入 (1)cd /usr/local/hadoop/conf (进入到conf文件目录下) (2)sudo gedit hadoop-env.sh (打开 hadoop-env.

10、sh) (3)添加以下两行: export JAVA_HOME=/usr/Java/jdk1.6.0_26 export HADOOP_HOME=/usr/local/hadoop c.创建ssh-key 在终端输入 (1)sudo apt-get install ssh (装载ssh服务) (2)ssh-keygen -t rsa -P (执行后要求给出key保存的路径,直接复制()内系统给出的默认位置即可,照本文档来做,应该给出的是/home/hadoop/.ssh/id_rsa) (3)cat /home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/

11、authorized_keys sudo /etc/init.d/ssh reload (将此ssh-key添加到信任列表中,并启用此ssh-key)4.可能遇到问题 a.Ubuntu相关问题 (1)问题:无权限 解决方法:sudo i 获取root权限 (2)问题:文件无法保存 解决方法:以root权限打开,即sudo -i后 sudo gedit 文件路径打开 或 用sudo nautilus命令后在新窗口下直接打开文件 b.Java相关问题 在安装后的jdk文件夹中有一些pack文件,由于没有unpack为jar文件导致如下错误: (1)问题:出现Error occurred durin

12、g initialization of VM java/lang/NoClassDefFound 解决办法:用cd命令 cd /usr/Java/jdk1.6.0_26/lib 进入lib文件夹中, 再用unpack命令 unpack200 tools.pack tools.jar 用cd命令 cd /usr/Java/jdk1.6.0_26/jre/lib 进入jre/lib文件夹中, 再用unpack命令 unpack200 rt.pack rt.jar (2)问题:发现无法识别SocketFactory类 解决办法: 用cd命令 cd /usr/Java/jdk1.6.0_26/jre/

13、lib 进入jre/lib文件夹中, 再用unpack命令 unpack200 jsse.pack jsse.jar 其余pack有问题,也可以如上解包。 c.修改sudoer出问题导致sudo命令不能用 重启机器进入recoverymode(修复模式),长按shift键,在shell菜单选择root进入,在rootubuntu下输入 passwd 命令,设置root账户密码并确认,退出以root账户登录,找到sudoer文件修改至正确状态,再重新登录即可。按照以上部署完后,hadoop还不能运行,还需要对hadoop进行配置,而单机伪分布和完全分布hadoop配置不一样,下面分为两节分别介绍

14、。第二节 单机伪分布 在第一节配置完成的基础上,进行下面单机伪分布的配置与操作。出现权限问题,可试着用sudo -i获得root权限运行一下。1.配置文件 在终端输入 (1) cd /usr/local/hadoop/conf (进入conf配置目录下) (2) sudo gedit core-site.xml (编辑core-site.xml) 之间内容替换如下: fs.default.name hdfs:/localhost:9000 (3) sudo gedit hdfs-site.xml (编辑hdfs-site.xml) 之间内容替换如下: dfs.replication 1 (4)

15、 sudo gedit mapred-site.xml (编辑mapred-site.xml) 之间内容替换如下: mapred.job.tracker localhost:9001 2.格式化 HDFS (1)cd /usr/local/hadoop (进入hadoop所在目录) (2)sudo bin/hadoop namenode -format (格式化HDFS)3.启动Hadoop监护进程 (1)sudo chown -hR hadoop /usr/local/hadoop (2)bin/start-all.sh (启动Hadoop)4.复制输入文件到HDFS (1)sudo ged

16、it /tmp/test.txt (打开后随便输入一些内容,如bu li ni wo li ta ni bu li ta,然后保存退出) (2)hadoop dfs -copyFromLocal /tmp/test.txt firstTest (将准备的测试文件上传到dfs文件系统中的firstTest目录下)5.运行wordcount例子 hadoop jar hadoop-0.20.2-examples.jar wordcount firstTest result (运行wordcount,对firstTest下的所有文件执行wordcount,将统计结果输出到result文件夹中)6.输

17、出结果 hadoop dfs -cat result/part-r-00000 (输出结果)7.停止Hadoop系统 bin/stop-all.sh (停止Hadoop)第三节 完全分布 在两台计算机完成第一节配置的基础上,进行下面完全分布的配置与操作。(默认对所有机器执行下面操作,明确指出操作对象仅为master或slave节点机器的步骤除外)1.系统规划安排(这里我用的是无线网络,具体配置的时候在网络连接的连接信息中查看IP,修改为自己的IP) Node User IP地址 IP身份 Namenode hadoop 10.10.25.217 master Jobtracker hadoop

18、 10.10.25.217 master Datanode hadoop 10.10.25.54 slave 说明:Namenode和JobTracker为同一台主机,采用master的IP,Datanode采用slave的IP。2.修改hosts 在终端输入 sudo gedit /etc/hosts 添加下面两行数据 10.10.25.217 master 10.10.25.54 slave3.配置ssh (1)在所有slave节点(10.10.25.54)上的终端上执行下面两句命令,这里即复制master机器上的公钥到slave上。 scp hadoop10.10.25.217:/hom

19、e/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/id_rsa.pub cat /.ssh/id_rsa.pub /.ssh/authorized_keys (将Namenode公钥加入受信列表) (2) 在master节点(10.10.25.217)上的终端上执行下面这句命令 scp hadoop10.10.25.217:/home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/1_rsa.pub (这里改名以示区分) cat /.ssh/1_rsa.pub /.ssh/authorized_keys (将Namenod

20、e公钥加入受信列表) 说明:由于JobTracker和Namenode为用一台主机,所以相当于将自己的id_rsa.pub追加到自己的受信列表。4.配置masters和slaves 在终端输入 (1)cd /usr/local/hadoop/conf (进入conf目录) (2)sudo gedit masters (编辑masters) 将文件内容替换为 10.10.25.217 (这里其实加入的是Namenode和JobTracker的IP,不过是同一台,IP是同一个) (3)sudo gedit slaves (编辑slaves) 10.10.25.54 (这里加入的是所有slave的I

21、P)5.配置文件 在终端输入 (1) cd /usr/local/hadoop/conf (进入conf配置目录下) (2) sudo gedit core-site.xml (编辑core-site.xml) 之间内容替换如下:(这里10.10.25.217为Namenode的IP) fs.default.name hdfs:/10.10.25.217:9000 (3) sudo gedit hdfs-site.xml (编辑hdfs-site.xml) 之间内容替换如下: dfs.replication 1 dfs.name.dir /home/hadoop/hdfs/name dfs.d

22、ata.dir /home/hadoop/hdfs/data (4) sudo gedit mapred-site.xml (编辑mapred-site.xml) 之间内容替换如下:(这里10.10.25.217为JobTracker的IP) mapred.job.tracker 10.10.25.217:9001 6.运行准备(以后的6、7、8、9步都在master上运行) 在master终端上输入 (1)格式化HDFS cd /usr/local/hadoop sudo bin/hadoop namenode format (2)启动HDFS和Map-Reduce bin/start-df

23、s.sh (该命令访问Namenode上的slaves文件,启动里面所有主机的DataNode,在本机启动Namenode,在本机和JobTracker上启动SecondNameNode) bin/start-mapred.sh (启动Map-Reduce) 7.运行例子 (1)新建文件 sudo gedit /tmp/new.txt (打开后随便输入一些内容,如bu li ni wo li ta ni bu li ta,然后保存退出) (2)上传文件到DFS (在/usr/local/hadoop目录下,就不用cd了) bin/hadoop dfs -put /tmp/new.txt tes

24、tin/a (要删除testin文件可用 bin/hadoop dfs -rmr testin) (3)执行wordcount hadoop jar hadoop-0.20.2-examples.jar wordcount testin/ testout/ (4)输出结果 hadoop dfs -cat testout/part-r-00000 (输出结果)8.关闭Hadoop进程 bin/stop-mapred.sh (关闭Map-Reduce) bin/stop-dfs.sh (关闭HDFS)9.说明 (1)可以在运行准备完成后,输入jps命令查看java进程的产生。 (2)bin/had

25、oop dfs -命令 参数 命令 用途 cat 显示文件 get 把HDFS上的文件下载到本地 put 向HDFS上载数据文件 rmr 删除 cp 复制 mkdir 新建目录(3)如果第二次运行出错,请用sudo -i,获取root权限,然后用sudo rm -r /home/hadoop/hdfs删除hdfs以及sudo rm -r /tmp 清空临时文件 (4)出现权限问题,用sudo -i在root下运行多数可通过10.扩展至集群搭建 如果需要实现集群搭建,即具有多个slave节点,这里只需注意在上述几步中作部分修改即可。(1)第2步 修改hosts 10.10.25.217 mast

26、er 10.10.25.54 slave1 10.10.25.55 slave2 把所有的slave节点IP和master的IP写进hosts(2)第4步 配置masters和slaves 里面的第3项 修改slaves 10.10.25.54 10.10.25.55 把所有的slave节点IP写进slaves其余说明在10.10.25.54(slave)上配置的部分,其余的slave也要如此配置。 第四节 在eclipse下使用Hadoop 1.下载Eclipse包 在http:/download.eclipse.org/eclipse/downloads/drops4/R-4.2-2012

27、06081400/ 处下载eclipse,这里我用的是32位的UBuntu系统,下载的是eclipse-SDK-4.2-linux-gtk.tar.gz ,如果是64位,请下载对应的eclipse包。下载完毕后,在终端输入sudo nautilus后,获得root权限,将下载文件剪切到/home/hadoop 目录下。2.解压Eclipse包 cd /home/hadoop sudo tar xzf eclipse-SDK-4.2-linux-gtk.tar.gz 3.修改Eclipse权限 sudo chown -R hadoop:hadoop eclipse4.Eclipse环境配置(1)

28、 在Eclipse下安装hadoop-plugina.复制 hadoop安装目录/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar 到 eclipse安装目录/plugins/ 下。其终端代码如下:cp /usr/local/hadoop/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar /home/hadoop/eclipse/pluginsb.重启eclipse,配置hadoop installation directory。 如果安装插件成功,打开Window-Pr

29、eferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。(2) 配置Map/Reduce Locationsa.在Window-Show View中打开Map/Reduce Locations。 在Map/Reduce Locations中新建一个Hadoop Location。在这个View中,右键-New Hadoop Location。在弹出的对话框中你需要配置Location name,如myubuntu,还有Map/Reduce Master和DFS Master。这里面的Hos

30、t、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。如: b.配置完后退出。开启Hadoop守护进程,点击DFS Locations-myubuntu如果能显示文件夹(2)说明配置正确,如果显示拒绝连接,请检查你的配置。5.拷贝hadoop插件 cp /usr/local/hadoop/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar /home/hadoop/eclipse/plugins6.准备输入文件cd /home/hadoopsudo gedit testa.txt (在文档

31、内输入一些单词,如“ni wo ta wo ni ni”,然后保存关闭)7.启动Eclipse双击eclipse目录下eclipse文件。8.设置Hadoop安装文件夹路径在菜单项中选择Windows-Preferences,左边项中有Hadoop Map/Reduce项,点击进入选择hadoop安装目录为/usr/local/hadoop。 9.新建Map/Reduce项目点击菜单项File-Project,打开向导窗口,选择Map/Reduce Project项,Project name 输入wordcount,然后next,finish就行。10.导入wordcount例子在左边Work

32、Space中选中wordcount项下的src,点击右键选择import,选择General下的File System,点击Next,打开新对话框后,点击Browser按钮选择目录,具体为/usr/local/hadoop/src/examples,然后点击打开下方examples项,选择其子项org,即在其前面打勾,点击finish。11.运行例子点击面板上Run按钮右边的下拉三角形,选择Run Configuration,打开对话框后,在左边选择Java Application,建立新的Java程序,可以看到Project处已填有wordcount,将右边面板中Name改为WordCoun

33、t,在Main class处输入org.apache.hadoop.examples.WordCount ,在将标签Main切换到标签Argument,在Program arguments下写入 /home/hadoop/testa.txt /home/hadoop/testaout 。12.查看结果 进入目录/home/hadoop/testaout ,双击part-r-00000,弹开对话框,选择显示,可以看到结果为ni 3 ta 1 wo 2。第二部分 Hadoop的小应用实例在实现了第一部分的单机伪分布或完全分布的情况下,实现下面Hadoop的小应用-数据去重。数据去重1.前言“数据去

34、重“主要是为了掌握和利用“并行的思想“来对数据进行有意义的筛选。统计大数据集上的数据种类个数、从网站日志中计算访问地和邮件信息的过滤等这些看似庞杂的任务都会涉及数据去重。如此可见,数据去重在海量数据的处理效率上占有部分重要地位。2.实例的描述样例输入如下所示:(1)file1: 2012-3-1 a 2012-3-2 b 2012-3-3 c 2012-3-4 d 2012-3-5 a 2012-3-6 b 2012-3-7 c 2012-3-3 c(2)file2: 2012-3-1 b 2012-3-2 a 2012-3-3 b 2012-3-4 d 2012-3-5 a 2012-3-6

35、 c 2012-3-7 d 2012-3-3 c数据文件中的每行都是一个数据,对数据文件中的数据进行去重。样例输出预测如下所示: 2012-3-1 a 2012-3-1 b 2012-3-2 a 2012-3-2 b 2012-3-3 b 2012-3-3 c 2012-3-4 d 2012-3-5 a 2012-3-6 b 2012-3-6 c 2012-3-7 c 2012-3-7 d3.设计思路数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。我们自然而然会想到将同一个数据的所有记录都交给一台reduce机器,无论这个数据出现多少次,只要在最终结果中输出一次就

36、可以了。具体就是reduce的输入应该以数据作为key,而对value-list则没有要求。当reduce接收到一个时就直接将key复制到输出的key中,并将value设置成空值。在MapReduce流程中,map的输出经过shuffle过程聚集成后会交给reduce。所以从设计好的reduce输入可以反推出map的输出key应为数据,value任意。继续反推,map输出数据的key为数据,而在这个实例中每个数据代表输入文件中的一行内容,所以map阶段要完成的任务就是在采用Hadoop默认的作业输入方式之后,将value设置为key,并直接输出(输出中的value任意)。map中的结果经过sh

37、uffle过程之后交给reduce。reduce阶段不会管每个key有多少个value,它直接将输入的key复制为输出的key,并输出就可以了(输出中的value被设置成空了)。4.源代码程序代码如下所示:import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apac

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1