• 1. 以hadoop入门大数据之hadoop阶段www.toocruel.net
  • 2. 以Hadoop入门大数据一目标及计划目标:从Hadoop开始,走进大数据领域;计划:分三个阶段(Hadoop、Spark、Storm)来学习,重点是spark和storm;结合实际业务场景应用大数据技术。了解大数据领域内技术兴起与发展;学习掌握当下最流行的大数据解决方案;三个阶段就是三个生态、三个解决方案。www.toocruel.net
  • 3. Hadoop阶段一目标及计划hadoop产生背景hadoop架构hadoop生态hadoop环境搭建hive、hbase等子项目什么是hadoophadoop应用场景hadoop、Spark Streaming、storm区别与选择思考题www.toocruel.net
  • 4. hadoop阶段一什么是hadoop?简单的说,我们可以用Hadoop分布式存储大量数据,然后根据自己的业务对海量数据进行分布式计算。例如:淘宝网昨天24小时的用户访问量折线图,不同地区、时段、终端中国移动可以统计2016年手机品牌市场占有率官网介绍,Apache™ Hadoop® project 生产出的用于高可靠、可扩展、分布式计算的开源软件,它允许通过集群的方式使用简单的编程模型分布式处理大数据,它可以从单一的服务器扩展到成千上万的机器,每一台机器都能提供本地计算和存储。Hadoop认为集群中节点故障为常态,它可以自动检测和处理故障节点,所以它不依赖硬件来提供高可用性。www.toocruel.net
  • 5. hadoop阶段一什么是hadoop?Hadoop项目主要包含以下四个模块:Hadoop Common:为其他Hadoop模块提供基础设施Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统Hadoop MapReduce:一个分布式离线计算框架Hadoop YARN:一个新的MapReduce框架、任务调度与资源管理hive、pig、hbase等相关project见官网www.toocruel.net
  • 6. hadoop阶段一hadoop产生背景Doug Cutting是Lucene、Nutch 、Hadoop等项目的发起人分布式文件系统(GFS),可用于处理海量网页存储Hadoop最早起源于Nutch。Nutch的设计目的是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题:如何解决数十亿网页的存储和索引问题。2003、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案:分布式计算框架(MapReduce),可用于海量网页的索引计算问题Nutch开发人员完成了相应的开源实现HDFS和MapReduce,并从Nutch中剥离成为独立项目Hadoop,直到2008年,Hadoop成为Apache顶级项目,之后快速发展。到现在hadoop已经形成了完善的生态圈www.toocruel.net
  • 7. hadoop阶段一hadoop架构分布式架构简介:单机的问题:存储能力有限、计算能力有限、单点故障分布式架构解决了单机问题经典分布式主从架构:Master(老大)负责管理,可以有多个,防止单节点故障发生Slave(小弟)负责干活,有多个,可以动态添加删除www.toocruel.net
  • 8. hadoop阶段一hadoop架构hadoop架构(2.0以后版本):www.toocruel.net
  • 9. hadoop阶段一hadoop生态www.toocruel.net
  • 10. hadoop阶段一hadoop应用场景 日志分析 基于海量数据的在线应用 推荐系统 计算广告 复杂算法 网盘 搜索引擎 ……www.toocruel.net
  • 11. hadoop阶段一hadoop、spark、storm区别从计算模型上:Hadoop是批处理型,Spark和Storm是流处理型从处理时延上:Hadoop数分钟-数小时,Spark秒级,Sotrm毫秒级从吞吐量上:Hadoop>Spark>Storm从容错性上:Hadoop>Storm>Spark总体来说:Spark Storm能做的它都能做,但就是处理时延大如果处理较大文件且不需要实时性必然选择Hadoop如果处理的都是一些小文件且需要需要一定实时性选择Spark(准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理)如果需要非常强的实时性选择Storm(纯实时,来一条数据,处理一条数据,常见消息来源MQ)对于hadoop:www.toocruel.net
  • 12. hadoop阶段一hadoop、spark、storm区别对于storm:建议在那种需要纯实时,不能忍受1秒以上延迟的场景下使用,比如实时金融系统,要求纯实时进行金融交易和分析此外,如果对于实时计算的功能中,要求可靠的事务机制和可靠性机制,即数据的处理完全精准,一条也不能多,一条也不能少,也可以考虑使用Storm如果还需要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源(通常是在小型公司,集群资源紧张的情况),也可以考虑用Storm如果一个大数据应用系统,它就是纯粹的实时计算,不需要在中间执行SQL交互式查询、复杂的transformation算子等,那么用Storm是比较好的选择www.toocruel.net
  • 13. hadoop阶段一hadoop、spark、storm区别对于Spark Streaming:如果对上述适用于Storm的三点,一条都不满足的实时场景,即,不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么可以考虑使用Spark Streaming考虑使用Spark Streaming最主要的一个因素,应该是针对整个项目进行宏观的考虑,即,如果一个项目除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性www.toocruel.net
  • 14. hadoop阶段一hadoop、spark、storm区别Spark Streaming与Storm的优劣分析:事实上,Spark Streaming绝对谈不上比Storm优秀。这两个框架在实时计算领域中,都很优秀,只是擅长的细分场景并不相同Spark Streaming仅仅在吞吐量上比Storm要优秀,而吞吐量这一点,也是历来挺Spark Streaming,贬Storm的人着重强调的。但是问题是,是不是在所有的实时计算场景下,都那么注重吞吐量?不尽然。因此,通过吞吐量说Spark Streaming强于Storm,不靠谱事实上,Storm在实时延迟度上,比Spark Streaming就好多了,前者是纯实时,后者是准实时。而且,Storm的事务机制、健壮性 / 容错性、动态调整并行度等特性,都要比Spark Streaming更加优秀Spark Streaming,有一点是Storm绝对比不上的,就是:它位于Spark生态技术栈中,因此Spark Streaming可以和Spark Core、Spark SQL无缝整合,也就意味着,我们可以对实时处理出来的中间数据,立即在程序中无缝进行延迟批处理、交互式查询等操作。这个特点大大增强了Spark Streaming的优势和功能www.toocruel.net
  • 15. hadoop阶段一hadoop环境搭建软件准备:CentOS-7-x86_64-Minimal-1611.isojdk-8u121-linux-x64.tarhadoop-2.7.3.tarVirtualBox技能准备:Virtual新建虚拟机,网络配置:桥接、host only ...Linux常用命令:cd mv cp scp vi cat ...Linux网络卡配置、Linux服务管理、ssh免密登录详见http://www.toocruel.net/post/hadoop.htmlwww.toocruel.net
  • 16. hadoop阶段一hadoop环境搭建hadoop三种运行模式:Standalone单机:没有任何daemons(后台程序),不能使用HDFS,在用hadoop jar命令运行MapReduce任务时才启动进程模拟MapReduce运算,一般用与程序测试调试完全分布式:生产环境使用Pseudo-Distributed伪分布:Hadoop daemons运行在不同的进程中。NamoNode、DataNode、ResourceManageer、NodeManager、SecondaryNameNode等进程分布式情况下是运行在集群中不同机器上的,现在都运行在一台机器上,只是用不同Java进程来分隔开www.toocruel.net
  • 17. hadoop阶段一hadoop环境搭建完全分布式安装配置:准备三台虚拟机hadoop01、hadoop02、hadoop03,修改hosts修改etc/hadoop/hadoop-env.sh 25行 设置JAVA_HOME修改etc/hadoop/core-site.xml 20-23行 指定NamdeNode运行在集群中哪台机器上修改etc/hadoop/hdfs-site.xml 设置副本数、NameNodo和DataNode存储目录修改etc/hadoop/mapred-site.xml 设置MapReduce的资源调度框架为Yarn新增etc/hadoop/yarn-site.xml,配置shuffle和Resourcemanager的hostname修改etc/hadoop/slaves,写入slave节点的hostname详见http://www.toocruel.net/post/hadoop.htmlwww.toocruel.net
  • 18. hadoop阶段一hadoop环境搭建启动测试:格式化HDFS文件系统:bin/hdfs namenode -format 启动HDFS:sbin/start-dfs.sh访问HDFS管理界面:http://hadoop01:50070HDFS操作:创建目录、上传文件、下载文件、删除文件、删除目录启动Yarn:sbin/start-yarn.sh访问Yarn管理界面:http://hadoop01:8080在Yarn上运行MapReduce:参考官网示例www.toocruel.net
  • 19. hadoop阶段一Hive、HBase等子项目Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析例子:网站日志统计分析HBase:HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。详见http://www.toocruel.net/post/hbase.html实例:haodisk企业网盘 http://haodisk.toocruel.net…www.toocruel.net
  • 20. hadoop阶段一思考题Hadoop与Spark的关系?MapReduce与YARN的关系?Storm又是什么?YARN到底是什么东西?自己的工作中有没有哪些地方需要应用hadoop?或spark、storm结合实际业务场景应用一下hadoop领域内的企业是如何应用hadoop的?搞清楚HDFS和MapReduce的概念了吗?www.toocruel.net