云计算分布式大数据Hadoop深入浅出案例驱动实战外训讲义说课讲解_第1页
云计算分布式大数据Hadoop深入浅出案例驱动实战外训讲义说课讲解_第2页
云计算分布式大数据Hadoop深入浅出案例驱动实战外训讲义说课讲解_第3页
云计算分布式大数据Hadoop深入浅出案例驱动实战外训讲义说课讲解_第4页
云计算分布式大数据Hadoop深入浅出案例驱动实战外训讲义说课讲解_第5页
已阅读5页,还剩209页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hadoop深入浅出案例驱动(qūdònɡ)实战中程(zhōnɡchénɡ)在线(北京)科技有限公司内部教程注意(zhùyì)保密第一页,共214页。Hive的安装和配置、原理(yuánlǐ)、开发课程目标Hadoop安装(ānzhuāng)、配置与管理HDFS原理及开发(kāifā),HDFS文件管理Map-Reduce原理及开发Hbase的安装和配置、原理、开发2第二页,共214页。课程(kèchéng)安排day1Step3云计算Hadoop安装(ānzhuāng)、配置大数据Hadoop介绍(jièshào)HDFS介绍(jièshào)与实战MapReduce介绍与实战Hbase介绍与实战Hive介绍与实战疑难解答day2day33第三页,共214页。提前准备Hadoop环境部署软件列表编号软件名称要求1VirtualBox-4.2.16-86992-Win.exe

2CentOS-6.3-x86_64-bin-DVD1.iso

3jdk-7u25-linux-x64.tar.gz

4SSHSecureShellClient-3.2.9.zip

5apache-tomcat-7.0.42-windows-x64.zip

6eclipse-jee-kepler-R-win32-x86_64.zip能够创建DynamicWebProject7hadoop-eclipse-plugin-1.0.4.jar

8tomcatPluginV33.zip

9struts--all.zip

10MySQL-server-5.5.33-1.linux2.6.x86_64.rpm

11MySQL-client-5.5.32-1.linux2.6.x86_64.rpm

12libaio-0.3.107-10.el6.x86_64.rpm

注意选择与操作系统相同数位的软件,如操作系统是64位的,软件也选择64位软件,否则选择32位的软件,建议使用64位操作系统第四页,共214页。提前准备Hadoop组件列表编号软件名称要求1hadoop-1.0.4.tar.gz

2hbase-0.94.4.tar.gz

3hive-0.9.0.tar.gz

从老师的机器上可以下载这些软件:http://ip/fs.php第五页,共214页。自我介绍1、工作年限;2、所在(suǒzài)部门;3、是否精通Linux;4、是否精通Java;5、是否安装过Hadoop;第六页,共214页。学习(xuéxí)Hadoop的目的Hadoop是IT行业一个(yīɡè)新的热点,是云计算大数据处理的一个(yīɡè)具体实现。Hadoop本身具有很高的技术含量,是IT工程师学习的首选。Hadoop商业价值日益增长,是商业企业大数据处理的首选。第七页,共214页。大数据时代(shídài)来临一分钟内,互联网发生(fāshēng)了什么?YouTube增加72小时视频Google进行200万次搜索Spotify增加14首新音乐新增域名70个iTunes下载音乐1.5万首新增网站571个每分钟发邮件2.04亿封LinkedIn职位搜索1.1万次亚马逊销售8.3万美元Snapchat分享照片10.4万张Twitter发“Tweets”27.8万则Flickr照片浏览2000万次Skype通话140万分钟Facebook增加350GB数据、增180个“赞”、每秒增加新帖子4.1万8第八页,共214页。古代,人们用牛来拉重物,当一头牛拉不动一根圆木时,他们不曾(bùcéng)想过培育更大更壮的牛。同样,我们也不需要尝试开发高级计算机,而应尝试着结合使用更多计算机系统。格蕾斯.霍珀第九页,共214页。大数据(shùjù)云计算(jìsuàn)大数据(shùjù)互联网营销10第十页,共214页。你准备(zhǔnbèi)好了吗?千载难逢(qiānzǎinánféng)的机会IT界的又一桶金11第十一页,共214页。开始(kāishǐ)云计算之旅第十二页,共214页。2023/2/6什么(shénme)是云计算?第十三页,共214页。2023/2/6什么(shénme)是云计算?搜索网络(wǎngluò)购物QQ微博微信……不识庐山真面目,只缘身在此山中第十四页,共214页。云计算(jìsuàn)历史2023/2/6网格(wǎnɡɡé)计算云计算(jìsuàn)云计算和网格计算在Google中的搜索趋势15第十五页,共214页。云计算(jìsuàn)发源(fāyuán)于搜索引擎平台,是互联网企业在创业阶段基于追求低成本、高性能、以及资源灵活分配与应用快速布署的考虑而开发出一种IT系统实现技术。云计算(jìsuàn)利用大规模低成本运算单元通过IP网络连接,以提供各种计算服务的IT技术。第十六页,共214页。2/6/202316云计算(jìsuàn)定义云计算就是通过(tōngguò)网络把信息技术当作服务来使用核心理念最典型代表:Google搜索引擎典型代表云计算是网格计算、分布式计算、并行计算、效用(xiàoyòng)计算、网络存储、虚拟化、负载均衡、网络技术等一些传统计算方法的融合体。核心理念:通过不断提高“云”的处理能力而减少用户终端的处理负担,使用户终端简化成一个单纯的输入输出设备。17第十七页,共214页。云计算(jìsuàn)特征按需自助服务广泛的网络接入Title服务可计量资源池快速弹性第十八页,共214页。2/6/2023云计算(jìsuàn)分类私有云公有云混合云InfrastructureasaService以服务的形式提供虚拟硬件资源,如虚拟主机/存储/网络等资源。用户无需购买服务器、网络设备、存储设备,只需通过互联网租赁(zūlìn)即可搭建自己的应用系统典型应用:AmazonWebService(AWS)PlatformasaService提供应用服务引擎,如互联网应用编程接口/运行(yùnxíng)平台等。用户基于该应用服务引擎,可以构建该类应用。典型应用:GoogleAppEngine,F,MicrosoftAzure服务平台Softwareasa

Service用户通过Internet(如浏览器)来使用软件。用户不必购买软件,只需按需租用软件典型应用:GoogleDoc,S,OracleCRMOnDemand,OfficeLiveWorkspace面向外部用户需求,通过开放网络提供云计算服务IDC,GoogleApp,Saleforce在线CRM大型企业按照云计算的架构搭建平台,面向企业内部需求提供云计算服务企业内部数据中心等兼顾以上两种情况的云计算服务AmazonWebServer等既为企业内部又为外部用户提供云计算服务按提供的服务类型按云服务的对象IAASPaaSSaaSIaaS分布存储分布计算第十九页,共214页。云计算(jìsuàn)核心技术第二十页,共214页。云计算(jìsuàn)产生的前提节约成本广泛的网络(wǎngluò)接入虚拟化技术的成熟计算能力提升大数据的出现竞争2023/2/6第二十一页,共214页。节约(jiéyuē)成本22第二十二页,共214页。广泛(guǎngfàn)的网络接入2023/2/6第二十三页,共214页。虚拟化技术(jìshù)的成熟2023/2/624第二十四页,共214页。虚拟化技术(jìshù)的成熟2023/2/625第二十五页,共214页。虚拟化技术(jìshù)的成熟2023/2/626第二十六页,共214页。计算能力提升(tíshēng)2023/2/627第二十七页,共214页。大数据(shùjù)的出现2023/2/628第二十八页,共214页。云计算(jìsuàn)产生原动力2023/2/629第二十九页,共214页。云计算(jìsuàn)发展现状2023/2/6第三十页,共214页。云参考(cānkǎo)架构--AWS2023/2/6第三十一页,共214页。云参考(cānkǎo)架构--Google2023/2/632第三十二页,共214页。BusinesssupportVirtualizationManagement(OpenStack、HMC、SVC/TPC、TSM)PhysicalresourcelayerCloudplatformusersCloudmanagementplatformUsermanagementBillingmanagement……ServicerequestmanagementRBACMonitoringandreportingOSSWorkflowmanagementConfigurationreal-timedataCallCenterCRMBankinterfaceMinicomputer(3computer)PC

Server(10computer)Storage(2computer)LoadbalancingSecurity,disasterrecovery,backup,virtualizationMinicomputer(3computer)PC

Server(10computer)Storage(1computer)云参考(cānkǎo)架构33第三十三页,共214页。云计算(jìsuàn)的价值第三十四页,共214页。云部署(bùshǔ)35第三十五页,共214页。以分钟时间部署(bùshǔ)复杂企业应用36第三十六页,共214页。以分钟时间部署(bùshǔ)复杂企业应用37第三十七页,共214页。以分钟时间部署(bùshǔ)复杂企业应用38第三十八页,共214页。谁需要(xūyào)云计算2023/2/639第三十九页,共214页。Hadoop集群搭建(dājiàn)40第四十页,共214页。三种运行(yùnxíng)模式安装简单,几乎不用作任何配置(pèizhì),但仅限于调试用途在单节点(jiédiǎn)上同时启动namenode、datanode、jobtracker、tasktracker、secondarynamenode等5个进程,模拟分布式运行的各个节点(jiédiǎn)。正常的Hadoop集群,由多个各司其职的节点构成。单机模式伪分布模式完全分布式模式第四十一页,共214页。安装和配置(pèizhì)步骤参考(cānkǎo)《Hadoop-1.0.0集群安装.pdf》42第四十二页,共214页。VirtualBox安装(ānzhuāng)虚拟机设置虚拟网卡为host-only模式(móshì)共享主机网卡配置虚拟机VirtualBoxHost-OnlyEthernetAdapter网卡IP为第四十三页,共214页。虚拟机NetworkAdapterBridged(桥接模式)Bridged(桥接模式):默认使用VMnet0,不提供DHCP服务,需要(xūyào)手动配置IP、网关、子网掩码等第四十四页,共214页。虚拟机NetworkAdapterNAT(网络地址转换模式(móshì))NAT(网络地址转换模式(móshì)):默认使用VMnet8,提供DHCP服务45第四十五页,共214页。虚拟机NetworkAdapterHost-only(主机模式)Host-only(主机模式):默认使用VMnet1,提供DHCP服务当要组成一个(yīɡè)与物理网络相隔离的虚拟网络时,无疑非常适合使用Host-only模式。46第四十六页,共214页。安装(ānzhuāng)Linux操作系统安装的过程(guòchéng)中选择OpenSSH支持47第四十七页,共214页。LinuxShellvimkdirtarchmodchowncpmv第四十八页,共214页。SSH安装(ānzhuāng)安装SSHyuminstallssh启动SSHservicesshdstart设置(shèzhì)开机运行chkconfigsshdon第四十九页,共214页。SSH无密码(mìmǎ)登录hduser@master:~$ssh-keygen-trsa-P""hduser@master:~$cat$HOME/.ssh/id_rsa.pub>>$HOME/.ssh/authorized_keyshduser@master:~$sshmaster.hadoophduser@master:~$ssh-copy-id-i$HOME/.ssh/id_rsa.pubhduser@slave1.hadoophduser@master:~$ssh-copy-id-i$HOME/.ssh/id_rsa.pubhduser@slave2.hadoop第五十页,共214页。Java安装(ānzhuāng)#mkdir/usr/local/java#cd/usr/local/java#chmodu+xjdk-6u30-linux-i586.bin#./jdk-6u30-linux-i586.bin#vi/etc/profile添加环境变量exportJAVA_HOME=/usr/java/jdk1.6.0_30/exportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportHADOOP_HOME=/usr/local/hadoopexportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin执行#source/etc/profile,使环境变量立即(lìjí)生效51第五十一页,共214页。禁用(jìnyònɡ)IPV6在所有机器上操作(cāozuò)#vi/etc/modprobe.d/anaconda.conf添加如下行installipv6/bin/true重新启动系统生效第五十二页,共214页。CloneMaster虚拟机选择重新初始化网卡选项完全Clone启动新的虚拟机修改(xiūgǎi)hostname修改(xiūgǎi)网卡,让网卡生效,能ping通Master第五十三页,共214页。CloneMaster配置(pèizhì)网卡1)必须确认克隆(clone)的CentOS6的各个网卡的MAC是否有重复或与其它虚拟主机重复,最好利用其网卡工具刷新一下,生成新的MAC。使用vi命令,打开/etc/sysconfig/network-scripts/下的ifcfg-eth*(*代表0~n个网卡序号),把这个新的MAC修改进去。2)修改/etc/udev/rules.d/70-persistent-net.rules文件,删除原来的eth0那一段,把后增加的eth1改为eth0。如果有多块网卡以此类推(yǐcǐlèituī);如果只有一行,则把“eth1”改为eth0即可。3)使用start_udev命令重新检测硬件;4)用servicenetworkrestart命令重启下网络。54第五十四页,共214页。HDFS重要(zhòngyào)配置项<!--core-site.xml--><configuration><property><name>hadoop.tmp.dir</name><value>/app/hadoop/tmp</value><description>Abaseforothertemporarydirectories.</description></property>55第五十五页,共214页。HDFS重要(zhòngyào)配置项<!--core-site.xml--><property><name></name><value>hdfs://master.hadoop:9000</value><description></description></property></configuration>第五十六页,共214页。HDFS重要(zhòngyào)配置项<!--mapred-site.xml--><configuration><property><name>mapred.job.tracker</name><value>master.hadoop:9001</value><description>ThehostandportthattheMapReducejobtrackerrunsat.If"local",thenjobsarerunin-processasasinglemapandreducetask.</description></property></configuration>第五十七页,共214页。HDFS重要(zhòngyào)配置项<!--hdfs-site.xml--><configuration><property><name>dfs.replication</name><value>3</value><description></description></property></configuration>第五十八页,共214页。修改(xiūgǎi)配置文件$vi$HADOOP_HOME/conf/masters修改(xiūgǎi)localhost为master.hadoop$vi$HADOOP_HOME/conf/slaves修改(xiūgǎi)localhost为master.hadoop添加slave1.hadoopslave2.hadoop59第五十九页,共214页。创建(chuàngjiàn)hadoop.tmp.dir目录#mkdir-p/app/hadoop/tmp#chownhduser:hadoop/app/hadoop/tmp#...andifyouwanttotightenupsecurity,chmodfrom755to750...#chmod750/app/hadoop/tmp第六十页,共214页。部署(bùshǔ)slave节点将master.hadoop上安装配置(pèizhì)完成的hadoop文件夹复制到slave1.hadoop和slave2.hadoop:hduser@master:hadoop$scp-r/usr/local/hadoophduser@slave1.hadoop:/usr/local/hduser@master:hadoop$scp-r/usr/local/hadoophduser@slave2.hadoop:/usr/local/第六十一页,共214页。格式化HDFS文件系统在master.hadoop上使用(shǐyòng)hduser操作hduser@master:hadoop$bin/hadoopnamenode-format第六十二页,共214页。启动(qǐdòng)Hadoop使用hduser用户,在master.hadoop上bin/start-all.sh启动hduser@master:hadoop$bin/start-all.sh用jps命令(mìnglìng)看到如下输出,则安装成功DataNodeJpsNameNodeJobTrackerTaskTrackerSecondaryNameNode第六十三页,共214页。Web查看(chákàn)HDFS信息查看(chákàn)集群状态00:5003000:50060第六十四页,共214页。大数据(shùjù)第六十五页,共214页。大数据时代(shídài)来临一分钟内,互联网发生了什么?YouTube增加72小时视频Google进行200万次搜索Spotify增加14首新音乐新增域名70个iTunes下载音乐1.5万首新增网站571个每分钟发邮件2.04亿封LinkedIn职位搜索1.1万次亚马逊销售8.3万美元Snapchat分享照片10.4万张Twitter发“Tweets”27.8万则Flickr照片浏览(liúlǎn)2000万次Skype通话140万分钟Facebook增加350GB数据、增180个“赞”、每秒增加新帖子4.1万第六十六页,共214页。大数据(shùjù)2023/2/6第六十七页,共214页。大数据(shùjù)&数据(shùjù)结构2023/2/668第六十八页,共214页。大数据(shùjù)2023/2/6第六十九页,共214页。大数据(shùjù)存储2023/2/670第七十页,共214页。大数据(shùjù)的4V2023/2/6数据量时效性多变性价值(jiàzhí)性71第七十一页,共214页。Hadoop72第七十二页,共214页。大数据(shùjù)的服务器2023/2/6第七十三页,共214页。大数据分析2023/2/609年4月59秒排序(páixù)500GB(在1400个节点上)173分钟内排序(páixù)100TB数据(在3400个节点上)74第七十四页,共214页。大数据分析2023/2/61.可视化分析2.数据挖掘算法(suànfǎ)3.预测性分析能力4.语义引擎5.数据质量和数据管理75第七十五页,共214页。Hadoop的思想(sīxiǎng)之源:Google下一步(yībù)Googlewhat?Google搜索引擎GmailGoogleearthGoogle翻译(fānyì)Google+76第七十六页,共214页。Google低成本之道1234不使用(shǐyòng)超级计算机,不使用(shǐyòng)专业存储。大量使用普通(pǔtōng)的pc服务器,提供有冗余的集群服务器多个(duōɡè)数据中心运营商向Google倒付费77第七十七页,共214页。Google面临(miànlíng)的难题大量网页如何(rúhé)存储?搜索算法Rank计算(jìsuàn)问题第七十八页,共214页。2/6/202378Google关键技术和思想(sīxiǎng)1GFS2Map-Reduce3Bigtable79第七十九页,共214页。Google三大(sāndà)论文TheGoogleFileSystems.pdfMapReduceSimpliedDataProcessingonLargeClusters.pdfBigtableADistributedStorageSystemforStructuredData.pdfTheChubbylockservice.pdfLogicalTimeAWaytoCaptureCausality.pdfLog-StructuredFileSystem.pdf80第八十页,共214页。Hadoop从何而来第八十一页,共214页。Hadoop的源起——Lucene对于大数量的场景,Lucene仍面对与Google同样(tóngyàng)的困难。Lucene的目的(mùdì)是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。DougCutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,提供了全文检索引擎(yǐnqíng)的架构,包括完整的查询引擎(yǐnqíng)和索引引擎(yǐnqíng)。.

Lucene第八十二页,共214页。Hadoop发展(fāzhǎn)历史LuceneNutchHadoop第八十三页,共214页。Hadoop群雄逐鹿(qúnxióngzhúlù)亚马逊百度(bǎidù)云Apache,Cloudera,MapR,HotonWorks,IntelIBMHPDell浪潮(làngcháo)云创存储云服务解决方案

一体机发行版本Hadoop第八十四页,共214页。目前(mùqián)Hadoop达到的高度实现云计算的事实标准开源软件包含数十个具有强大生命力的子项目已经能在数千节点上运行(yùnxíng),处理数据量和排序时间不断打破世界纪录第八十五页,共214页。Hadoop定义(dìngyì)Hadoop一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储(cúnchǔ)。Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成。HDFS和MapReduce是两个最基础最重要的成员。第八十六页,共214页。Hadoop子项目家族(jiāzú)第八十七页,共214页。PigHadoop客户端使用(shǐyòng)类似于SQL的面向数据流的语言PigLatinPigLatin可以完成排序,过滤,求和,聚组,关联等操作,可以支持自定义函数Pig自动把PigLatin映射为Map-Reduce作业上传到集群运行,减少用户编写Java程序的苦恼三种运行方式:Gruntshell,脚本方式,嵌入式第八十八页,共214页。HBaseGoogleBigtable的开源实现列式数据库可集群化可以使用shell、web、api等多种方式访问适合(shìhé)高读写(insert)的场景HQL查询语言NoSQL的典型代表产品第八十九页,共214页。Hive数据仓库工具。可以把Hadoop下的原始结构化数据变成Hive中的表支持一种与SQL几乎完全相同的语言HiveQL。除了不支持更新(gēngxīn)、索引和事务,几乎SQL的其它特征都能支持可以看成是从SQL到Map-Reduce的映射器提供shell、JDBC/ODBC、Thrift、Web等接口第九十页,共214页。ZookeeperGoogleChubby的开源实现用于协调分布式系统上的各种服务。例如确认消息是否准确到达,防止单点失效,处理负载均衡(jūnhéng)等应用场景:Hbase,实现Namenode自动切换工作原理:领导者,跟随者以及选举过程第九十一页,共214页。Sqoop用于在Hadoop和关系(guānxì)型数据库之间交换数据通过JDBC接口连入关系(guānxì)型数据库第九十二页,共214页。Avro数据序列化工具,由Hadoop的创始人DougCutting主持开发用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷(biànjié),快速地处理大量数据动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据。Thrift接口第九十三页,共214页。Chukwa架构在Hadoop之上的数据采集与分析框架主要进行日志采集和分析通过安装在收集节点的“代理”采集最原始的日志数据代理将数据发给收集器收集器定时将数据写入Hadoop集群指定定时启动的Map-Reduce作业队数据进行加工处理和分析Hadoop基础(jīchǔ)管理中心(HICC)最终展示数据第九十四页,共214页。CassandraNoSQL,分布式的Key-Value型数据库,由Facebook贡献与Hbase类似(lèisì),也是借鉴GoogleBigtable的思想体系只有顺序写,没有随机写的设计,满足高负荷情形的性能需求第九十五页,共214页。Hadoop特点(tèdiǎn)可扩展经济AB高效D可靠C可架设于任何pc机上分布式文件系统的高效数据交互实现以及MapReduce结合LocalData处理的模式,为高效处理海量的信息作了基础准备不论是存储的可扩展性还是计算的可扩展行,都是Hadoop的根本分布式文件系统的备份恢复机制以及MapReduce的任务监控保证了分布式处理的可靠性第九十六页,共214页。 基础架构第九十七页,共214页。

Hadoop与Google比较(bǐjiào)

后端系统:Google数据分析平台(píngtái)Google集群管理系统存储(cúnchǔ)+计算(HDFS+MapReduce)数据仓库(Hive)内存数据库(Hbase)批处理(Pig)BSP模型(Hama)分布式锁(Zoomkeeper)第九十八页,共214页。子系统位置(wèizhi)第九十九页,共214页。Hadoop应用(yìngyòng)案例第一百页,共214页。国内应用(yìngyòng)情况第一百零一页,共214页。案例(ànlì)1:淘宝每日新增数据(shùjù)20T累积(lěijī)数据14P2000+服务器的云计算平台每天处理100,000+作业任务,包括100+新增作业任务每天处理1P+数据,包括0.5%新增数据数据规模第一百零二页,共214页。双十一191亿背后的开源(kāiyuán)技术?支付宝核心数据库集群处理(chǔlǐ)了41亿个事务执行(zhíxíng)285亿次SQL访问1931亿次内存数据块13亿个物理读生成15TB日志双十一第一百零三页,共214页。淘宝数据(shùjù)平台——产品架构数据(shùjù)应用开发平台——数据(shùjù)工场底层(dǐcénɡ)平台数据开发平台数据应用报表需求(淘数据)即席查询(adhoc)数据分析数据挖掘数据产品DataIntegrationDBsyncTTHiveHadoopMapReduceHadoopHDFSDatax报表需求(淘数据)Hbase即席查询(adhoc)数据分析数据挖掘数据产品实时计算

第一百零四页,共214页。案例(ànlì)2:暴风影音每天处理日志1.2T,20亿行。存储设计容量200TB对外提供产品分析(fēnxī),广告分析(fēnxī),用户分析(fēnxī)服务。每天处理任务上千个jobs第一百零五页,共214页。应用领域搜索社交游戏(yóuxì)视频电信医疗(yīliáo)交通公安航空电力(diànlì)金融第一百零六页,共214页。HDFS介绍(jièshào)第一百零七页,共214页。HDFS定义(dìngyì)HDFS是GoogleGFS的开源版本,一个高度容错的分布式文件系统,它能够提供高吞吐量的数据(shùjù)访问,适合存储海量(PB级)大文件(通常超过64M)。第一百零八页,共214页。HDFS设计(shèjì)基础与目标硬件错误是常态,需要冗余。流式数据访问。即数据批量读取而非随机读写,Hadoop擅长(shàncháng)做数据分析而不是数据处理。大规模数据集简单一致性模型。程序采用“数据就近”原则分配节点执行。第一百零九页,共214页。HDFS不适合(shìhé)场景1低延迟数据访问HDFS是为了达到高数据吞吐量而优化的,这是以延迟为代价的,对于低延迟访问,可以用Hbase(hadoop的子项目)。2大量的小文件3多用户写入任意修改第一百一十页,共214页。HDFS架构(jiàɡòu)在Hadoop中,一个文件被划分成大小固定的多个文件块,分布的存储(cúnchǔ)在集群中的节点中。111第一百一十一页,共214页。HDFS架构(jiàɡòu)同一个文件块在不同的节点(jiédiǎn)中有多个副本111第一百一十二页,共214页。HDFS架构(jiàɡòu)我们(wǒmen)需要一个集中的地方保存文件的分块信息/home/hdfs/a.txt.part1,3,(dn1,dn2,dn3)/home/hdfs/a.txt.part2,3,(dn2,dn3,dn4)/home/hdfs/a.txt.part3,3,(dn6,dn11,dn28)…第一百一十三页,共214页。HDFS架构(jiàɡòu)第一百一十四页,共214页。HDFS架构(jiàɡòu)BlockNameNodeDataNodeHA策略(cèlüè)一个文件(wénjiàn)分块,默认64M用于存储Blocks保存整个文件系统的目录信息,文件信息以及文件相应的分块信息NameNode一旦宕机,整个文件系统将无法工作。如果NameNode中的数据丢失,整个文件系统也就丢失了。

115第一百一十五页,共214页。HDFS体系结构NameNodeDataNode事务日志映像(yìnɡxiànɡ)文件SecondaryNameNode116第一百一十六页,共214页。Namenode管理文件系统的命名空间记录每个文件数据块在各个Datanode上的位置和副本信息协调客户端对文件的访问记录命名空间内的改动或空间本身属性的改动Namenode使用事务(shìwù)日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等第一百一十七页,共214页。Datanode负责所在物理节点的存储管理一次写入,多次读取(不修改)文件由数据块组成,典型(diǎnxíng)的块大小是64MB数据块尽量散布道各个节点第一百一十八页,共214页。读取数据流程(liúchéng)第一百一十九页,共214页。HDFS文件(wénjiàn)操作命令行方式(fāngshì)API方式(fāngshì)第一百二十页,共214页。HDFS基本操作hadoopdfs–ls/hadoopdfs–mkidr/testhadoopdfs–get/filenamehadoopdfs–putsrcfile/desfile第一百二十一页,共214页。列出HDFS文件(wénjiàn)hduser@master:~$hadoopdfs-ls/注意:hadoop没有当前目录的概念(gàiniàn),也没有cd命令。第一百二十二页,共214页。上传文件(wénjiàn)到HDFShduser@master:~$hadoopdfs-put/home/hduser/test.txt/app/hadoop/tmp/hduser@master:~$hadoopdfs-ls/app/hadoop/tmp/第一百二十三页,共214页。将HDFS的文件(wénjiàn)复制到本地hduser@master:~$hadoopdfs-get/app/hadoop/tmp/test.txt/home/hduser/testdfs.txthduser@master:~$ll/home/hduser/第一百二十四页,共214页。删除(shānchú)HDFS下的文档hduser@master:~$hadoopdfs-ls/app/hadoop/tmp/hduser@master:~$hadoopdfs-rmr/app/hadoop/tmp/test.txthduser@master:~$hadoopdfs-ls/app/hadoop/tmp/第一百二十五页,共214页。查看文件(wénjiàn)内容hduser@master:~$hadoopdfs-ls.hduser@master:~$hadoopdfs-cat./test.txt第一百二十六页,共214页。查看(chákàn)HDFS基本统计信息hduser@master:~$hadoopdfsadmin-report第一百二十七页,共214页。进入和退出(tuìchū)安全模式hduser@master:~$hadoopdfsadmin-safemodeenterhduser@master:~$hadoopdfsadmin-safemodeleave更多命令(mìnglìng)请参考《file_system_shell.pdf》第一百二十八页,共214页。节点(jiédiǎn)添加在新节点安装好hadoop把namenode的有关配置文件复制到该节点修改masters和slaves文件,增加该节点设置(shèzhì)ssh免密码进出该节点单独启动该节点上的datanode和tasktracker(hadoop-daemon.shstartdatanode/tasktracker)运行start-balancer.sh进行数据负载均衡第一百二十九页,共214页。启动(qǐdòng)某些特定后台进程hduser@master:~$start-all.sh第一百三十页,共214页。负载(fùzài)均衡当节点出现故障,或新增加节点时,数据块分布可能不均匀,负载均衡可以重新(chóngxīn)平衡各个datanode上数据块的分布。hduser@master:~$start-balancer.sh第一百三十一页,共214页。HDFSAPI第一百三十二页,共214页。Java调用(diàoyòng)HDFS演示hadoopjar/home/hduser/upload.jar/app/hadoop/tmp/test.txt(本地(běndì)文件)/app/hadoop/tmp/outputhadoopdfs-ls/app/hadoop/tmp/hadoopdfs-cat/app/hadoop/tmp/output第一百三十三页,共214页。Map-Reduce第一百三十四页,共214页。MapReduce算法(suànfǎ)思想MapReduce主要反映了映射和规约两个概念(gàiniàn),分别完成映射操作和规约操作。第一百三十五页,共214页。第一百三十六页,共214页。MapReduce逻辑(luójí)部署第一百三十七页,共214页。MapReduce逻辑(luójí)部署Hadoop主要由HDFS(HadoopDistributedFileSystem)和MapReduce引擎(yǐnqíng)两部分组成。最底部是HDFS,它存储Hadoop集群中所有存储节点上的文件。HDFS的上一层是MapReduce引擎(yǐnqíng),该引擎(yǐnqíng)由JobTrackers和TaskTrackers组成。第一百三十八页,共214页。MapReduce运行机制第一百三十九页,共214页。GoogleMapReduce原理(yuánlǐ)2023/2/6(1) 输入文件分成M块,每块大概16M~64MB(可以通过参数决定),接着在集群的机器上执行分派处理程序

(2) M个Map任务和R个Reduce任务需要分派,Master选择空闲Worker来分配这些Map或Reduce任务(3) Worker读取并处理相关输入块,Map函数产生的中间结果<key,value>对暂时缓冲到内存(4) 中间结果定时写到本地硬盘,分区(fēnqū)函数将其分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给ReduceWorker第一百四十页,共214页。GoogleMapReduce原理(yuánlǐ)2023/2/6(5) 当Master通知执行Reduce的Worker关于中间<key,value>对的位置时,它调用远程过程,从MapWorker的本地硬盘上读取缓冲的中间数据。当ReduceWorker读到所有的中间数据,它就使用中间key进行排序,这样可使相同key的值都在一起(6) ReduceWorker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递(chuándì)给用户定义的Reduce函数。Reduce函数的结果写到一个最终的输出文件

(7) 当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。此时MapReduce返回用户程序的调用点第一百四十一页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/6第一百四十二页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/61、向jobtracker请求一个新的作业ID(通过Jobtracker的getNewJobId())2、检查作业的输出目录。比如,如果没有指定输出目录或者它已经存在,作业就不会被提交,并有错误(cuòwù)返回给MapReduce程序。3、计算作业的输入分片。如果分片无法计算,比如因为输入路径不存在,作业就不会被提交,并有错误(cuòwù)返回给MapReduce程序。第一百四十三页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/64、将运行作业所需要(xūyào)的资源(包括作业的JAR文件、配置文件和计算所得的输入分片)复制到一个以作业ID号命名的目录中jobtracker的文件系统。作业JAR的副本较多(由mapred.submit.replication属性控制,默认为10),因此,在tasktracker运行作业任务时,集群能为它们提供许多副本进行访问。(步骤3)5、告诉jobtracker作业准备执行(通过调用JobTracker的submitJob()方法)(步骤4)第一百四十四页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/66、Jobtracker接受(jiēshòu)到对其submitJob()方法调用后,会把此调用放入一个内部的队列中,交由作业调度器进行调度,并对其进行初始化。初始化包括创建一个代表该正在运行的作业的对象,它封装任务和记录信息,以便跟踪任务的状态和进程(步骤5)7、要创建运行任务列表,作业调度器首先从共享文件系统中获取JobClient已经计算好的输入分片信息(步骤6)然后为每个分片创建一个map任务。创建的reduce任务的数量由JobConf的mapred.reduce.tasks属性决定,它是用setNumReduceTasks()方法来设定的,然后调度器便创建这么多reduce任务来运行。任务在此时指定ID号。第一百四十五页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/68、TaskTraker运行一个简单的循环来定期发送心跳(heartbeat)给Jobtracker。心跳方法告知jobtracker,tasktracker是否存活,同时也充当两者之间的消息通道。作为(zuòwéi)心跳的一部分,tasktracker会指明它是否已经准备运行新的任务,如果是,jobtracker会为它分配一个任务,并使用心跳的返回值与tasktracker进行通信(步骤7)第一百四十六页,共214页。HadoopMapReduce实现(shíxiàn)机制2023/2/69、现在,tasktracker已经被分配了任务,下一步是运行任务。第一步,通过从共享文件系统把作业JAR文件复制到tasktracker所在的文件系统,从而实现作业的JAR文件本地化。同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地磁盘。第二步,tasktracker为任务新建一个本地工作目录,并把JAR文件中的内容解压到这个文件夹下。第三步,tasktracker新建一个TaskRunner实例(shílì)来运行任务。TaskRunner启动一个新的Java虚拟机(步骤9)来运行每个任务(步骤10),以便用户定义的map和reduce函数的任何软件问题都不会影响tasktracker(比如导致崩溃或者挂起等)。但在不同的任务之间重用JVM还是可能的。10、子进程通过中央接口与父进程进行通信。它每隔几秒便告知父进程它的进度,直到任务完成。第一百四十七页,共214页。MapReduce应用程序组成(zǔchénɡ)1一个Mapper函数2一个Reducer函数3一个main函数。MapReduce第一百四十八页,共214页。MapReduceMapReduce是一种编程模型,用于大规模数据(shùjù)集(大于1TB)的并行运算通俗的说就是将一个大任务分成多个小任务并行完成,然后合并小任务的结果,得到最终结果。Map-reduce的思想就是“分而治之”第一百四十九页,共214页。MapperMapper负责“分”,即把复杂的任务分解为若干个“简单(jiǎndān)的任务”执行.第一百五十页,共214页。Reducer对map阶段的结果(jiēguǒ)进行汇总Reducer的数目由mapred-site.xml配置文件里的项目mapred.reduce.tasks决定。缺省值为1,用户可以覆盖之第一百五十一页,共214页。Shuffler在mapper和reducer中间的一个步骤(可以没有)可以把mapper的输出按照某种key值重新切分和组合成n份,把key值符合某种范围(fànwéi)的输出送到特定的reducer那里去处理可以简化reducer过程第一百五十二页,共214页。命令(mìnglìng)操作hadoopjar/usr/local/hadoop/hadoop-examples-1.0.4.jarwordcount/app/hadoop/tmp/test.txt/app/hadoop/tmp/output第一百五十三页,共214页。WordCount的运算(yùnsuàn)过程假设输入文件的内容(nèiróng)如下:HowareyouHelloword,areyouokThisisatest第一百五十四页,共214页。文件(wénjiàn)被分成3个splitSplit1HowareyouSplit2Helloword,areyouokSplit3Thisisatest第一百五十五页,共214页。

Map的过程(guòchéng)

Split1Howareyou (How,1)(are,1)(you,1)Split2Helloword,areyouok (Hello,1)(word,,1)(are,1)(you,1)(ok,1)Split3Thisisatest (This,1)(is,1)(a,1)(test,1)第一百五十六页,共214页。Reduce的过程(guòchéng)(How,1)(are,1)(you,1)(Hello,1)(word,,1)(are,1)(you,1)(ok,1)(This,1)(is,1)(a,1)(test,1)(How,{1})(are,{1,1})(you,{1,1})(Hello,{1})(word,,{1})(are,{1})(ok,{1})(This,{1})(is,{1})(a,{1})(test,{1})第一百五十七页,共214页。调度(diàodù)机制缺省为先入先出作业队列(duìliè)调度支持公平调度器支持容量调度器第一百五十八页,共214页。任务(rènwu)执行优化推测式执行:即如果jobtracker发现有拖后腿的任务,会再启动一个相同的备份任务,然后哪个先执行完就会kill去另外一个。因此在监控网页上经常能看到正常执行完的作业有被kill掉的任务推测式执行缺省打开,但如果是代码问题,并不能解决问题,而且会使集群更慢,通过在mapred-site.xml配置文件中设置mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution可为map任务或reduce任务开启或关闭推测式执行重用JVM,可以省去启动新的JVM消耗的时间,在mapred-site.xml配置文件中设置mapred.job.reuse.jvm.num.tasks设置单个JVM上运行的最大任务数(1,>1或-1表示没有限制)忽略模式,任务在读取数据失败2次后,会把数据位置(wèizhi)告诉jobtracker,后者重新启动该任务并且在遇到所记录的坏数据时直接跳过(缺省关闭,用SkipBadRecord方法打开)第一百五十九页,共214页。错误处理机制(jīzhì):硬件故障硬件故障是指jobtracker故障或tasktracker故障jobtracker是单点,若发生故障目前hadoop还无法处理,唯有选择最牢靠的硬件作为(zuòwéi)jobtrackerJobtracker通过心跳(周期1分钟)信号了解tasktracker是否发生故障或负载过于严重Jobtracker将从任务节点列表中移除发生故障的tasktracker如果故障节点在执行map任务并且尚未完成,jobtracker会要求其它节点重新执行此map任务如果故障节点在执行reduce任务并且尚未完成,jobtracker会要求其它节点继续执行尚未完成的reduce任务第一百六十页,共214页。错误处理机制(jīzhì):任务失败由于代码缺陷或进程崩溃引起任务失败Jvm自动退出,向tasktracker父进程发送方错误信息,错误信息也会写入到日志Tasktracker监听程序会发现进程退出,或进程很久没有更新信息送回,将任务标记为失败标记失败任务后,任务计数器减去1以便接受新任务,并通过心跳信号告诉jobtracker任务失败的信息Jobtrack获悉任务失败后,将把该任务重新放入调度队列(duìliè),重新分配出去再执行如果一个任务失败超过4次(可以设置),将不会再被执行,同时作业也宣布失败第一百六十一页,共214页。Hadoop命令(mìnglìng)大全第一百六十二页,共214页。HadoopAPI大全(dàquán)第一百六十三页,共214页。HBase第一百六十四页,共214页。Hbase的特点(tèdiǎn)高可靠性高性能可伸缩(shēnsuō)面向(miànxiànɡ)列第一百六十五页,共214页。Hbase介绍(jièshào)HBase是一个分布式的、面向列的开源数据(shùjù)库就像Bigtable利用了Google文件系统(FileSystem)所提供的分布式数据(shùjù)存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase不同于一般的关系数据(shùjù)库,它是一个适合于非结构化数据(shùjù)存储的数据(shùjù)库.另一个不同的是HBase基于列的而不是基于行的模式第一百六十六页,共214页。Bigtable思想(sīxiǎng)学生表的例子S(s#,sn,sd,sa)存放为关系(guānxì)的学生表以bigtable方式存放学生表Bigtable:无所不包的大表第一百六十七页,共214页。Hbase逻辑(luójí)模型以表的形式存放数据表由行与列组成,每个列属于某个列族,由行和列确定的存储单元称为元素(yuánsù)每个元素(yuánsù)保存了同一份数据的多个版本,由时间戳来标识区分Bigtable:无所不包的大表第一百六十八页,共214页。Hbase行键行键是数据行在表里的唯一标识,并作为检索记录的主键访问表里的行只有三种方式通过单个行键访问给定行键的范围访问全表扫描行键可以(kěyǐ)是最大长度不超过64KB的任意字符串,并按照字典序存储对于经常要一起读取的行,要对行键值精心设计,以便它们能放在一起存储第一百六十九页,共214页。Hbase列族与列列表示为<列族>:<限定符>Hbase在磁盘上按照列族存储数据,这种列式数据库的设计非常适合于数据分析的情形列族里的元素最好具有相同的读写方式(例如(lìrú)等长的字符串),以提高性能列族名尽量短列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。第一百七十页,共214页。Hbase时间(shíjiān)戳对应每次数据操作(cāozuò)的时间,可由系统自动生成,也可以由用户显式的赋值Hbase支持两种数据版本回收方式:1每个数据单元,只存储指定个数的最新版本2保存指定时间长度的版本(例如7天)常见的客户端时间查询:“某个时刻起的最新数据”或“给我全部版本的数据”元素由行键,列族:限定符,时间戳唯一决定元素以字节码形式存放,没有类型之分第一百七十一页,共214页。HbasevsOracle索引不同造成行为的差异Hbase适合大量插入同时又有读的情况Hbase的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道时间(shíjiān)Hbase很适合寻找按照时间(shíjiān)排序topn的场景第一百七十二页,共214页。传统(chuántǒng)数据库的行式存储数据存放在数据文件内数据文件的基本组成单位(dānwèi):块/页块内结构:块头、数据区第一百七十三页,共214页。Hbase物理(wùlǐ)模型第一百七十四页,共214页。HMaster为Regionserver分配region负责regionserver的负载均衡发现(fāxiàn)失效的regionserver并重新分配其上的regionHDFS上的垃圾文件回收处理schema更新请求第一百七十五页,共214页。HRegionServerHRegionserver维护HMaster分配(fēnpèi)给它的HRegion,处理对这些HRegion的IO请求。HRegionserver负责切分在运行过程中变得过大的HRegion可以看到,client访问Hbase上数据的过程并不需要HMaster参与(寻址访问zookeeper和HRegionserver,数据读写访问HRegioneserver),HMaster仅仅维护者table和HRegion的元数据信息,负载很低。第一百七十六页,共214页。行式存储(cúnchǔ)的问题读某个(mǒuɡè)列必须读入整行行不等长,修改数据可能导致行迁移行数据较多时可能导致行链第一百七十七页,共214页。Hbase逻辑(luójí)模型第一百七十八页,共214页。Hbase中数据(shùjù)存储方式按RowKey的字典顺序TableRegionRegionRegionRegionRegionServersRegionServerRegionServerRegionServerRegionServer第一百七十九页,共214页。Table&Region 当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同(bùtónɡ)的region会被Master分配给相应的RegionServer进行管理180第一百八十页,共214页。字典(zìdiǎn)顺序特点:拥有相同(xiānɡtónɡ)“前缀”的数据,会存储在相邻区域aababcbbababccacab第一百八十一页,共214页。HTable=>HRegion=>HStoreTableRegionRegionServerHRegionRegionRegionRegionHStoreMemStoreStoreFileStoreFileStoreFileHStoreMemStoreStoreFileStoreFileHStoreMemStoreStoreFile182第一百八十二页,共214页。HStore是怎样(zěnyàng)工作的?HStoreMemStoreStoreFileStoreFileStoreFile向表中写入数据的过程:首先写入MemStore,同时(tóngshí)写入HLog但MemStore到达一定大小的时候,MemStore会flush成一个StoreFile(HFile文件)但StoreFile的数量达到一定阀值,会触发compact, 将多个StoreFile合并成1个StoreFile当单个StoreFile达到一定大小的时候,会触发split, 将当前的Region拆分成2个Region,并且分发到 不同的RegionServer上183第一百八十三页,共214页。HStore是怎样(zěnyàng)工作的?184第一百八十四页,共214页。HFile的存储(cúnchǔ)格式DataBlock是HBaseI/O的基本单元(dānyuán),每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成185第一百八十五页,共214页。KeyValue的存储(cúnchǔ)格式开始是两个固定长度(chángdù)的数值,分别表示Key的长度(chángdù)和Value的长度(chángdù)。紧接着是Key,开始是固定长度(chángdù)的数值,表示RowKey的长度(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论