Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。
“90%的世界数据在过去的几年中产生”。
由于新技术,设备和类似的社交网站通信装置的出现,人类产生的数据量每年都在迅速增长。美国从一开始的时候到2003年产生的数据量为5十亿千兆字节。如果以堆放的数据磁盘的形式,它可以填补整个足球场。在2011年创建相同数据量只需要两天,在2013年该速率仍在每十分钟极大地增长。虽然生产的所有这些信息是有意义的,处理起来有用的,但是它被忽略了。
什么是大数据?
大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。
在大数据会发生什么?
大数据包括通过不同的设备和应用程序所产生的数据。下面给出的是一些在数据的框架下的领域。
- 黑匣子数据:这是直升机,飞机,喷气机的一个组成部分,它捕获飞行机组的声音,麦克风和耳机的录音,以及飞机的性能信息。
- 社会化媒体数据:社会化媒体,如Facebook和Twitter保持信息发布的数百万世界各地的人的意见观点。
- 证券交易所数据:交易所数据保存有关的“买入”和“卖出”,客户由不同的公司所占的份额决定的信息。
- 电网数据:电网数据保持相对于基站所消耗的特定节点的信息。
- 交通运输数据:交通数据包括车辆的型号,容量,距离和可用性。
- 搜索引擎数据:搜索引擎获取大量来自不同数据库中的数据。
因此,大数据包括体积庞大,高流速和可扩展的各种数据。它的数据为三种类型。
- 结构化数据:关系数据。
- 半结构化数据:XML数据。
- 非结构化数据:Word, PDF, 文本,媒体日志。
大数据的好处
- 通过保留了社交网络如Facebook的信息,市场营销机构了解可以他们的活动,促销等广告媒介的响应。
- 利用信息计划生产在社会化媒体一样喜好并让消费者对产品的认知,产品企业和零售企业。
- 使用关于患者以前的病历资料,医院提供更好的和快速的服务。
大数据技术
大数据的技术是在提供更准确的分析,这可能影响更多的具体决策导致更大的运行效率,降低成本,并减少了对业务的风险。
为了利用大数据的力量,需要管理和处理的实时结构化和非结构化的海量数据,可以保护数据隐私和安全的基础设施。
目前在市场上的各种技术,从不同的供应商,包括亚马逊,IBM,微软等来处理大数据。尽管找到了处理大数据的技术,我们研究了以下两类技术:
操作大数据
这些包括像MongoDB系统,提供业务实时的能力,这里主要是数据捕获和存储互动工作。
NoSQL大数据系统的设计充分利用已经出现在过去的十年,而让大量的计算,以廉价,高效地运行新的云计算架构的优势。这使得运营大数据工作负载更容易管理,更便宜,更快的实现。
一些NoSQL系统可以提供深入了解基于使用最少的编码无需数据科学家和额外的基础架构的实时数据模式。
分析大数据
这些包括,如大规模并行处理(MPP)数据库系统和MapReduce提供用于回顾性和复杂的分析,可能触及大部分或全部数据的分析能力的系统。
MapReduce提供分析数据的基础上,MapReduce可以按比例增加从单个服务器向成千上万的高端和低端机的互补SQL提供的功能,这是系统的一种新方法。
这两个类技术是互补的,并经常一起部署。
操作与分析系统
| 操作 | 分析 | |
|---|---|---|
| 等待时间 | 1 ms - 100 ms | 1 min - 100 min |
| 并发 | 1000 - 100,000 | 1 - 10 |
| 访问模式 | 写入和读取 | 读取 |
| 查询 | 选择 | 非选择性 |
| 数据范围 | 操作 | 回溯 |
| 最终用户 | 顾客 | 数据科学家 |
| 技术 | NoSQL | MapReduce, MPP 数据库 |
大数据的挑战
大数据相关的主要挑战如下:
- 采集数据
- 策展
- 存储
- 搜索
- 分享
- 传输
- 分析
- 展示
为了实现上述挑战,企业通常需要企业级服务器的帮助。
传统的企业方法
在这种方法中,一个企业将有一个计算机存储和处理大数据。对于存储而言,程序员会自己选择的数据库厂商,如Oracle,IBM等的帮助下完成,用户交互使用应用程序进而获取并处理数据存储和分析。
局限性
这种方式能完美地处理那些可以由标准的数据库服务器来存储,或直至处理数据的处理器的限制少的大量数据应用程序。但是,当涉及到处理大量的可伸缩数据,这是一个繁忙的任务,只能通过单一的数据库瓶颈来处理这些数据。
谷歌的解决方案
使用一种称为MapReduce的算法谷歌解决了这个问题。这个算法将任务分成小份,并将它们分配到多台计算机,并且从这些机器收集结果并综合,形成了结果数据集。
Hadoop
使用谷歌提供的解决方案,Doug Cutting和他的团队开发了一个开源项目叫做HADOOP。
Hadoop使用的MapReduce算法运行,其中数据在使用其他并行处理的应用程序。总之,Hadoop用于开发可以执行完整的统计分析大数据的应用程序。
Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。 Hadoop框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。
Hadoop的架构
在其核心,Hadoop主要有两个层次,即:
- 加工/计算层(MapReduce),以及
- 存储层(Hadoop分布式文件系统)。
MapReduce
MapReduce是一种并行编程模型,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。 MapReduce程序可在Apache的开源框架Hadoop上运行。
Hadoop分布式文件系统
Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS),并提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署在低成本的硬件。提供了高吞吐量的应用数据访问,并且适用于具有大数据集的应用程序。
除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:
- Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。
- Hadoop YARN :这是作业调度和集群资源管理的框架。
Hadoop如何工作?
建立重配置,处理大规模处理服务器这是相当昂贵的,但是作为替代,可以联系许多普通电脑采用单CPU在一起,作为一个单一功能的分布式系统,实际上,集群机可以平行读取数据集,并提供一个高得多的吞吐量。此外,这样便宜不到一个高端服务器价格。因此使用Hadoop跨越集群和低成本的机器上运行是一个不错不选择。
Hadoop运行整个计算机集群代码。这个过程包括以下核心任务由 Hadoop 执行:
- 数据最初分为目录和文件。文件分为128M和64M(128M最好)统一大小块。
- 然后这些文件被分布在不同的群集节点,以便进一步处理。
- HDFS,本地文件系统的顶端﹑监管处理。
- 块复制处理硬件故障。
- 检查代码已成功执行。
- 执行发生映射之间,减少阶段的排序。
- 发送排序的数据到某一计算机。
- 为每个作业编写的调试日志。
Hadoop的优势
- Hadoop框架允许用户快速地编写和测试的分布式系统。有效并在整个机器和反过来自动分配数据和工作,利用CPU内核的基本平行度。
- Hadoop不依赖于硬件,以提供容错和高可用性(FTHA),而Hadoop库本身已被设计在应用层可以检测和处理故障。
- 服务器可以添加或从集群动态删除,Hadoop可继续不中断地运行。
- Hadoop的的另一大优势在于,除了是开源的,因为它是基于Java并兼容所有的平台。