版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1Hadoop2.0大家族概述6.2ZooKeeper6.3Hbase6.4Pig6.5Hive6.6Oozie6.7Flume6.8Mahout6.9小结6.7Flume6.7.1Flume简介6.7.2Flume入门Flume核心思想是数据流46.7FlumeFlume逻辑结构线上进程不断产生日志Flume读取并发现日志Web效劳器A线上进程不断产生日志Flume读取并发现日志Web效劳器B某效劳cSlave1某效劳cSlave0Flume接收并存入HDFScMaster其他效劳某效劳cSlave2云端集群56.7FlumeFlume逻辑结构SourceSinkChannelWebserverHDFS用户可以将Flume看成是两台机器之间通过网络互相传送数据Flume定制了大量的数据源〔Thrift、Shell〕与数据汇〔Thrift、HDFS、Hbase〕通过使用“管道〞,Flume能够确保不会丧失一条数据,提供了数据高可靠性66.7FlumeFlume组成SourceChannelSinkFlume76.7FlumeFlume组成SourceChannelSink它负责读取原始数据,目前Flume支持大量类型用户可以自定义Source,使用时在配置文件里声明即可。它负责将从Source端传来的数据存入ChannelFlume的分用、复用和过滤功能即在于此它负责从Channel中取出并发送数据Sink内部都是使用netty来发送数据的6.7Flume6.7.1Flume简介6.7.2Flume入门96.7FlumeFlume部署[root@iClient~]#sudoyuminstallflume-ng-agent#在iClient上部署Flume集群中只有一台机器部署Flume就可以接收数据了,此外下面的例题中还要有一台机器做为数据源,负责向Hadoop集群发送数据,故须在cMaster与iClient上部署Flume。〔1〕部署Flume接收端:[root@cMaster~]#sudoyuminstallflume-ng-agent#在cMaster上部署Flume〔2〕部署Flume发送端:106.7FlumeFlume访问接口Flume提供了命令行接口和程序接口,无论是命令行还是程序接口,都必须使用Flume配置文档,这也是Flume架构思想之一——配置型工具。按要求完成问题:进入Flume命令行,查看常用命令。要求发送端iClient使用telnet向cMaster发送数据,而接收端cMaster开启44444端口接收数据,并将收到的数据显示于命令行。要求发送端iClient将本地文件“/home/joe/source.txt〞发往接收端cMaster,而接收端cMaster将这些数据存入HDFS。根据问题③,接收端cMaster开启接收数据的Flume效劳,既然此效劳能接收iClient发来的数据,它必然也可以接收iHacker机器〔黑客〕发来的数据,问如何尽量减少端口攻击,并保证数据平安。【例6-7】11直接在iClient上执行如下命令即可:6.7FlumeFlume访问接口对于问题①[root@iClient~]#flume-ng#查看Flume常用命令首先需要在cMaster上按要求配置并开启Flume,接着在iClient上使用telnet向cMaster发送数据,具体过程参见如下几步。对于问题②在cMaster上以root权限,新建文件“/etc/flume/conf/flume.conf〞,并填入如下内容:12#命令此处agent名为a1,并命名此a1的sources为r1,channels为c1,sinks为k1a1.sources=r1a1.channels=c1a1.sinks=k1#定义sources相关属性:即此sources在cMaster上开启44444端口接收以netcat协议发来的数据a1.sources.r1.type=netcata1.sources.r1.bind=cMastera1.sources.r1.port=44444#定义channels及其相关属性,此处指定此次效劳使用memory暂存数据a1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100#定义此sink为logger类型sink:即指定sink直接将收到的数据输出到控制台a1.sinks.k1.type=logger#将sources关联到channels,channels关联到sinks上a1.sources.r1.channels=c1a1.sinks.k1.channel=c16.7FlumeFlume访问接口136.7FlumeFlume访问接口接着在cMaster上使用此配置以前台方式开启Flume效劳:[root@cMaster~]#flume-ngagent-c/etc/flume-ng/-f/etc/flume-ng/conf/flume.conf-na1此时,接收端cMaster已经配置好并开启了,接下来需要开启发送端,在iClient上执行:[root@iClient~]#telnetcMaster44444此时向此命令行里随意输入数据并回车,telnet会将这些数据发往cMaster,再次回到cMaster上执行命令的那个终端,会发现刚刚在iClient里输入的数据发送到了cMaster的终端里。如果想退出iClient终端里的telnet,按Ctrl+]组合键〔即同时按住Ctrl键和]键〕,回到telnet后输入“quit〞命令回车即可,至于退出cMaster上的Flume,直接按Ctrl+C组合键。14首先,在cMaster上新建文件“/etc/flume-ng/conf/flume.conf.hdfs〞,并填入如下内容:#命令此处agent名为a1,并命名此a1的sources为r1,channels为c1,sinks为k1a1.sources=r1a1.sinks=k1a1.channels=c1#定义sources类型及其相关属性#即此sources为avro类型,且其在cMaster上开启4141端口接收avro协议发来的数据a1.sources.r1.type=avroa1.sources.r1.bind=cMastera1.sources.r1.port=4141#定义channels类型其实相关属性,此处指定此次效劳使用memory暂存数据a1.channels.c1.type=memory6.7FlumeFlume访问接口对于问题③15接着,在iClient上新建文件“/root/businessLog〞,并填入如下内容:6.7FlumeFlume访问接口cccccccccccccccccccccssssssssssssssssssssssssttttttttttttttttttttttttttttttttttooooooooooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrr#定义此sink为HDFS类型的sink,且此sink将接收的数据以文本方式存入HDFS指定目录a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=/user/joe/flume/cstorArchivea1.sinks.k1.hdfs.fileType=DataStream#将sources关联到channels,channels关联到sinks上a1.sources.r1.channels=c1a1.sinks.k1.channel=c116#命令此处agent名为a1,并命名此a1的sources为r1,channels为c1,sinks为k1a1.sources=r1a1.channels=c1a1.sinks=k1#定义sources类型及其相关属性,此sources为exce类型#其使用Linuxcat命令读取文件/root/businessLog,接着将读取到的内容写入channela1.sources.r1.type=execa1.sources.r1mand=cat/root/businessLog#定义channels及其相关属性,此处指定此次效劳使用memory暂存数据a1.channels.c1.type=memoryiClient上还要新建文件“/etc/flume-ng/conf/flume.conf.exce〞,并填入如下内容:6.7FlumeFlume访问接口17#定义此sink为avro类型sink,即其用avro协议将channel里的数据发往cMaster的4141端口a1.sinks.k1.type=avroa1.sinks.k1.hostname=cMastera1.sinks.k1.port=4141#将sources关联到channels,channels关联到sinks上a1.sources.r1.channels=c1a1.sinks.k1.channel=c16.7FlumeFlume访问接口至此,发送端iClient和接收端的Flume都已配置完成。现在需要做的是在HDFS里新建目录,并分别开启接收端Flume效劳和发送端Flume效劳,步骤如下。18问题④属于开放性问题,请读者参考官方文档,讨论并解决。6.7FlumeFlume访问接口在cMaster上开启Flume,其中“flume-ng…a1〞命令表示使用配置启动Flume,参数a1即是配置文件里第一行定义的那个a1。[root@cMaster~]#sudo-ujoehdfsdfs-mkdirflume#HDFS里新建目录/user/joe/flume[root@cMaster~]#sudo-ujoeflume-ngagent-c/etc/flume-ng/-f/etc/flume-ng/conf/flume.conf.hdfs-na1最后,在iClient上开启发送进程,与上一条命令类似,这里的a1,即定义的a1:[root@iClient~]#flume-ngagent-c/etc/flume-ng/-f/etc/flume-ng/conf/flume.conf.exce-na1此时,用户在iClient端口里翻开“cMaster:50070〞,依次进入目录“/user/joe/flume/cstorArchive〞,将会查看到从iClient上传送过来的文件。6.1Hadoop2.0大家族概述6.2ZooKeeper6.3Hbase6.4Pig6.5Hive6.6Oozie6.7Flume6.8Mahout6.9小结6.8Mahout6.8.1Mahout简介6.8.2Mahout入门216.8MahoutMahout简介Mahout算法分类聚类协同过滤矩阵类型的二进制数据文本类型转换6.8Mahout6.8.1Mahout简介6.8.2Mahout入门23作为Hadoop的一个客户端,Mahout只要在集群中或集群外某台客户机上部署即可,实验中选择在iClient上部署Mahout。6.8MahoutMahout部署
[root@iClient~]#sudoyuminstallmahout24Mahout提供了程序和命令行接口,通过参考Mahout已有的大量机器学习算法,程序员也可实现将某算法并行化。6.8MahoutMahout访问接口要求以joe用户运行Mahout例如程序naivebayes,实现下载数据,建立学习器,训练学习器,最后使用测试数据针对此学习器进行性能测试。【例6-8】解:首先须下载训练数据集和测试数据,接着运行训练MR和测试MR,但是,Mahout里的算法要求输入格式为Value和向量格式的二进制数据,故中间还须加一些步骤,将数据转换成要求格式的数据,下面的脚本naivebayes.sh可以完成这些动作。25#!/bin/sh#新建本地目录,新建HDFS目录mkdir-p/tmp/mahout/20news-bydate/tmp/mahout/20news-all&&hdfsdfs-mkdirmahout#下载训练和测试数据集curl:///jrennie/20Newsgroups/20news-bydate.tar.gz\#将数据集解压、合并,并上传至HDFScd/tmp/mahout/20news-bydate&&tarxzf/tmp/mahout/20news-bydate.tar.gz&&cdcp-R/tmp/mahout/20news-bydate/*/*/tmp/mahout/20news-allhdfsdfs-put/tmp/mahout/20news-allmahout/20news-all#使用工具类seqdirectory将文本数据转换成二进制数据mahoutseqdirectory-imahout/20news-all-omahout/20news-seq-ow#使用工具类seq2sparse将二进制数据转换成算法能处理的矩阵类型二进制数据mahoutseq2sparse-imahout/20news-seq-omahout/20news-vectors-lnorm-nv-wttfidf6.8MahoutMahout访问接口26#将总数据随机分成两局部,第一局部约占总数据80%,用来训练模型#剩下的约20%作为测试数据,用来测试模型mahoutsplit-imahout/20news-vectors/tfidf-vectors--trainingOutputmahout/20news-train-vectors\--testOutputmahout/20news-test-vectors\--randomSelectionPct40--overwrite--sequenceFiles-xmsequential#训练NaiveBayes模型mahouttrainnb-imahout/20news-train-vectors-el-omahout/model-limahout/labelindex-ow#使用训练数据集对模型进行自我测试〔可能会产生过拟合〕mahouttestnb-imahout/20news-train-vectors-mmahout/model-lmahout/labelindex\-ow-omahout/20news-testing#使用测试数据对模型进行测试mahouttestnb-imahout/20news-test-vectors-mmahout/model-lmahout/labelindex\-ow-omahout/20news-testing6.8MahoutMahout访问接口27限于篇幅,脚本写得简陋,执行时,切记须在iClient上,以joe用户身份执行,且只能执行一次。再次执行时,先将所有数据全部删除,执行方式如下:[root@iClient~]#cpnaivebayes.sh/home/joe[root@iClient~]#chownjoe.joenaivebayes.sh[root@iClient~]#sudo–ujoechmod+xnaivebayes.sh[root@iClient~]#sudo–ujoeshnaivebayes.sh脚本执行时,用户可以翻开Web界面“cMaster:8088〞,查看正在执行的Mahout任务;还可以通过Web界面“cMaster:50070〞,定位到“/user/joe/mahout/〞查看目录变化。6.8MahoutMahout访问接口6.1Hadoop2.0大家族概述6.2ZooKeeper6.3Hbase6.4Pig6.5Hive6.6Oozie6.7Flume6.8Mahout6.9小结296.9小结本章讲解了最重要的分布式组件,对于这些组件,建议用户深入学习Hbase与Hive;如果您是位程序员,除了MR编程外,建议学习ZooKeeper与Flume编程;算法开发人员最好能熟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度危险化学品储存安全合同书模板3篇
- 教育领域中的农业科技应用与实践
- 二零二五年度车库门行业信息化建设与支持合同4篇
- 生物医学工程专业人才需求与培养方案
- 二零二五年度尊享不过户二手房买卖合同3篇
- 2025年度个人所得税赡养老人专项附加扣除协议执行细则3篇
- 2025年度个人二手房购房合同范本及税费代缴服务协议3篇
- AI驱动的智能医疗设备进展报告
- 科技驱动的小学道德与法治教育变革
- 珠海广东珠海市斗门区人民法院特邀调解员招聘10人笔试历年参考题库附带答案详解
- 口腔医学中的人工智能应用培训课件
- 工程质保金返还审批单
- 【可行性报告】2023年电动自行车项目可行性研究分析报告
- 五月天歌词全集
- 商品退换货申请表模板
- 实习单位鉴定表(模板)
- 六西格玛(6Sigma)详解及实际案例分析
- 机械制造技术-成都工业学院中国大学mooc课后章节答案期末考试题库2023年
- 数字媒体应用技术专业调研方案
- 2023年常州市新课结束考试九年级数学试卷(含答案)
- 正常分娩 分娩机制 助产学课件
评论
0/150
提交评论