本节接着上节继续向大家介绍一下Hadoop入门方面的知识,主要内容有如何运行Hadoop程序和它的效率问题,欢迎大家一起来学习Hadoop入门,首先我们先看一下Hadoop的概念。
为泉港等地区用户提供了全套网页设计制作服务,及泉港网站建设行业解决方案。主营业务为网站设计制作、网站制作、泉港网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Hadoop简介
Hadoop一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。
一、运行Hadoop程序
Hadoop入门首先看一下如何运行Hadoop程序。Hadoop这方面的文档写得不全面,综合参考GettingStartedWithHadoop与NutchHadoopTutorial两篇后,再碰了很多钉子才终于完整的跑起来了,记录如下:
1.1local运行模式
完全不进行任何分布式计算,不动用任何namenode,datanode的做法,适合一开始做调试代码。
解压hadoop,其中conf目录是配置目录,hadoop的配置文件在hadoop-default.xml,如果要修改配置,不是直接修改该文件,而是修改hadoop-site.xml,将该属性在hadoop-site.xml里重新赋值。
hadoop-default.xml的默认配置已经是local运行,不用任何修改,配置目录里唯一必须修改的是hadoop-env.sh里JAVA_HOME的位置。
将编译好的HadoopGrep与RegMapper.class放入hadoop/build/classes/demo/hadoop/目录找一个比较大的log文件放入一个目录,然后运行hadoop/bin/hadoopdemo.hadoop.HadoopGreplog文件所在目录任意的输出目录grep的字符串。查看输出目录的结果,查看hadoop/logs/里的运行日志。在重新运行前,先删掉输出目录。我们看一下Hadoop入门中运行Hadoop程序的第二种模式。
1.2单机集群运行模式
现在来搞一下只有单机的集群.假设以完成3.1中的设置,本机名为hadoopserver
第1步.然后修改hadoop-site.xml,加入如下内容:
fs.default.name hadoopserver:9000 mapred.job.tracker hadoopserver:9001 dfs.replication 1
从此就将运行从local文件系统转向了hadoop的hdfs系统,mapreduce的jobtracker也从local的进程内操作变成了分布式的任务系统,9000,9001两个端口号是随便选择的两个空余端口号。
另外,如果你的/tmp目录不够大,可能还要修改hadoop.tmp.dir属性。
第2步.增加ssh不输入密码即可登陆。
因为Hadoop需要不用输入密码的ssh来进行调度,在不su的状态下,在自己的home目录运行ssh-keygen-trsa,然后一路回车生成密钥,再进入.ssh目录,cpid_rsa.pubauthorized_keys
详细可以man一下ssh,此时执行sshhadoopserver,不需要输入任何密码就能进入了。
3.格式化namenode,执行
bin/hadoopnamenode-format
4.启动Hadoop
执行hadoop/bin/start-all.sh,在本机启动namenode,datanode,jobtracker,tasktracker
5.现在将待查找的log文件放入hdfs,。
执行hadoop/bin/hadoopdfs可以看到它所支持的文件操作指令。
执行hadoop/bin/hadoopdfsputlog文件所在目录in,则log文件目录已放入hdfs的/user/user-name/in目录中
6.现在来执行Grep操作
hadoop/bin/hadoopdemo.hadoop.HadoopGrepinout
查看hadoop/logs/里的运行日志,重新执行前。运行hadoop/bin/hadoopdfsrmrout删除out目录。
7.运行hadoop/bin/stop-all.sh结束。单机集群运行模式介绍完毕,我们看一下Hadoop入门中运行Hadoop程序的第三种集群运行模式。
1.3集群运行模式
假设已执行完3.2的配置,假设第2台机器名是hadoopserver2
1.创建与hadoopserver同样的执行用户,将hadoop解压到相同的目录。
2.同样的修改haoop-env.sh中的JAVA_HOME及修改与3.2同样的hadoop-site.xml
3.将hadoopserver中的/home/username/.ssh/authorized_keys复制到hadoopserver2,保证hadoopserver可以无需密码登陆hadoopserver2
scp/home/username/.ssh/authorized_keysusername@hadoopserver2:/home/username/.ssh/authorized_keys
4.修改hadoop-server的hadoop/conf/slaves文件,增加集群的节点,将localhost改为
hadoop-server
hadoop-server2
5.在hadoop-server执行hadoop/bin/start-all.sh
将会在hadoop-server启动namenode,datanode,jobtracker,tasktracker
在hadoop-server2启动datanode和tasktracker
6.现在来执行Grep操作
hadoop/bin/hadoopdemo.hadoop.HadoopGrepinout
重新执行前,运行hadoop/bin/hadoopdfsrmrout删除out目录
7.运行hadoop/bin/stop-all.sh结束。
二、效率
经测试,Hadoop并不是万用灵丹,很取决于文件的大小和数量,处理的复杂度以及群集机器的数量,相连的带宽,当以上四者并不大时,hadoop优势并不明显。
比如,不用hadoop用java写的简单grep函数处理100M的log文件只要4秒,用了hadooplocal的方式运行是14秒,用了hadoop单机集群的方式是30秒,用双机集群10M网口的话更慢,慢到不好意思说出来的地步。本节关于Hadoop入门方面的内容就介绍到这里。
【编辑推荐】
网站栏目:Hadoop入门经典
网站URL:http://www.mswzjz.cn/qtweb/news20/261270.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能