淘先锋技术网

首页 1 2 3 4 5 6 7

1. 1TB大文件操作的思考(理解)

文件大小单位:B,KB,MB,GB,TB,PB,EB,ZB,YB…
1B=1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
1TB=1024GB 1PB=1024TB 1EB=1024PB 1ZB=1024EB

  1. 分治思想引入案例
  2. 单机处理大数据的问题
  3. 集群分布式处理大数据
  4. 集群分布式处理大数据优劣的辩证

1.1 分治思想引入案例

  1. 十万个元素(单词)需要存储,如何存储?
    • 数组
    • ArrayList、LinkedList
    • HashMap
  2. 如果想查找某一个元素,最简单的遍历方式的复杂度是多少?
    在这里插入图片描述

分而治之的思想非常重要,常见于以下技术:
3. Redis集群
4. Hadoop
5. Hbase
6. ElasticSearch

1.2 单机处理大数据的问题

在这里插入图片描述
有一个非常大的文本文件,里面有非常多的行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。硬件:单台机器,而且可用的内存很少,也就500MB。
• 假如IO速度是500MB/S 1000 000 MB/500(MB/S) =1000*2S
• 1T文件读取一遍需要约30分钟(2000S/60S)
• 循环遍历需要N次IO时间
• 分治思想可以使时间降为2次IO
如何对1TB文件进行排序?
• 假如IO速度是500MB/S
• 1T文件读取一遍需要约30分钟
方式1:外部有序,内部无序,然后再逐一读入内存排序
方式2:逐一读取500M排序,内部有序,外部无序 ,然后进行归并排序
在这里插入图片描述

1.3 集群分布式处理大数据

需求:
• 有一个非常大的文本文件,里面有几百亿行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。
• 分钟、秒级别完成
• 硬件:*台机器,而且可用的内存500MB。
在这里插入图片描述

1.4 集群分布式处理大数据优劣的辩证

2000台真的比一台快吗?
由于涉及到计算机之间文件传输,千兆带宽1000Mb/S也就是100MB/s
注意:1b = 1bit 1B=1Byte=8bit 拉取网卡100MB/S ,之前忽略了上传时间:1TB/100(MB/S) =
1000 000MB/100(MB/S) =10000S 10000S/3600S = 3H
• 如果考虑分发上传文件的时间呢?
• 如果考虑每天都有1TB数据的产生呢?
• 如果增量了一年,最后一天计算数据呢?
在这里插入图片描述

2. Hadoop概述

2.1 Hadoop是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
Hadoop以一种可靠、高效、可伸缩的方式对大量数据存储分析计算。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。
Hadoop生态圈:
在这里插入图片描述

2.2 Hadoop发展历史

Doug Cutting
1 2002年10月,Doug Cutting和Mike Cafarella创建了开源网页爬虫项目Nutch。
2 2003年10月,Google发表Google File System论文。
3 2004年7月,Doug Cutting和Mike Cafarella在Nutch中实现了类似GFS的功能,即后来HDFS的前身。
4 2004年10月,Google发表了MapReduce论文。
5 2005年2月,Mike Cafarella在Nutch中实现了MapReduce的最初版本。
6 2005年12月,开源搜索项目Nutch移植到新框架,使用MapReduce和HDFS在20个节点稳定
运行。
7 2006年1月,Doug Cutting加入雅虎,Yahoo!提供一个专门的团队和资源将Hadoop发展成一
个可在网络上运行的系统。
8 2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
9 2006年3月,Yahoo!建设了第一个Hadoop集群用于开发。
10 2006年4月,第一个Apache Hadoop发布。
11 2006年11月,Google发表了Bigtable论文,激起了Hbase的创建。
12 2007年10月,第一个Hadoop用户组会议召开,社区贡献开始急剧上升。
13 2007年,百度开始使用Hadoop做离线处理。
14 2007年,中国移动开始在“大云”研究中使用Hadoop技术。
15 2008年,淘宝开始投入研究基于Hadoop的系统——云梯,并将其用于处理电子商务相关数据。
16 2008年1月,Hadoop成为Apache顶级项目。
17 2008年2月,Yahoo!运行了世界上最大的Hadoop应用,宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
2008年4月,在900个节点上运行1TB排序测试集仅需209秒,成为世界最快。
19 2008年8月,第一个Hadoop商业化公司Cloudera成立。
20 2008年10月,研究集群每天装载10TB的数据。
2009 年3月,Cloudera推出世界上首个Hadoop发行版——CDH(Cloudera’s Distribution including Apache Hadoop)平台,完全由开放源码软件组成。
21 2009年6月,Cloudera的工程师Tom White编写的《Hadoop权威指南》初版出版,后被誉为Hadoop圣经。
23 2009年7月 ,Hadoop Core项目更名为Hadoop Common;
24 2009年7月 ,MapReduce 和 Hadoop Distributed File System (HDFS) 成为Hadoop项目的独立子项目。
25 2009年8月,Hadoop创始人Doug Cutting加入Cloudera担任首席架构师。
26 2009年10月,首届Hadoop World大会在纽约召开。
27 2010年5月,IBM提供了基于Hadoop 的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。
28 2011年3月,Apache Hadoop获得Media Guardian Innovation Awards媒体卫报创新奖
29 2012年3月,企业必须的重要功能HDFS NameNode HA被加入Hadoop主版本。
30 2012年8月,另外一个重要的企业适用功能YARN成为Hadoop子项目。
31 2014年2月,Spark逐渐代替MapReduce成为Hadoop的缺省执行引擎,并成为Apache基金会顶级项目。
32 2017年12月,Release 3.0.0 generally available
33 更多版本信息见:
https://hadoop.apache.org/release.html

2.3 Hadoop三大发行版本(了解)

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。Apache版本最原始(最基础)的版本,对于入门学习最好。
Cloudera内部集成了很多大数据框架。对应产品CDH。
Hortonworks文档较好。对应产品HDP。
1)Apache Hadoop
官网地址:
http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
2)Cloudera Hadoop
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
(1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。
(2)2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,ClouderaManager,Cloudera Support
(3)CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。Cloudera的标价为每年每个节点10000美元。
(4)Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。
3)Hortonworks Hadoop
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
(1)2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。
(2)公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。
(3)Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。
(4)Hortonworks目前已经被Cloudera公司收购。

2.4 核心组件

  1. hadoop通用组件 - Hadoop Common 包含了其他hadoop模块要用到的库文件和工具
  2. 分布式文件系统 - Hadoop Distributed File System (HDFS)运行于通用硬件上的分布式文件系统,高吞吐,高可靠
  3. 资源管理组件 - Hadoop YARN于2012年引入的组件,用于管理集群中的计算资源并在这些资源上调度用户应用。
  4. 分布式计算框架 - Hadoop MapReduce 用于处理超大数据集计算的MapReduce编程模型的实现。
    4.1 Hadoop Ozone: An object store for Hadoop.
    4.2 Hadoop Submarine: A machine learning engine for Hadoop
    在这里插入图片描述

2.5 Hadoop关联项目

  1. Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。
    Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是5个顶级hadoop管理工具之一。
  2. Avro™:数据序列化系统
  3. Mahout 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
  4. Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。
  5. Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC BerkeleyAMP lab开源的类Hadoop MapReduce的通用并行框架,拥有MapReduce所具有的优点;但是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
  6. Tez 是 Apache 最新的支持 DAG 作业的开源计算框架。它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce,例如机器学习。Tez的目的就是帮助Hadoop处理这些用例场景。
  7. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  8. HBase是一个分布式的、高可靠性、高性能、面向列、可伸缩的分布式存储系统,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。
  9. hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。