Hadoop随笔(一)

文章目录

  • 1 大数据概述
    • 1.1 什么是大数据
    • 1.2 大数据技术背后的核心思想
      • 1.2.1 把数据分发到多个节点
      • 1.2.2 把计算逻辑移到数据附近
      • 1.2.3 计算节点进行本地数据处理
      • 1.2.4 优选顺序读,次之随机读
      • 1.2.5 例子
    • 1.3 大数据的编程模型
      • 1.3.1 大规模并行处理数据库系统
      • 1.3.2 内存数据库系统
      • 1.3.3 MapReduce系统
      • 1.3.4 整体同步并行系统
    • 1.4 大数据和事务性系统
    • 1.5 我们能处理多大的数据

1 大数据概述

由于数据处理增长的速度已经快于计算资源处理能力的提升速度,为了解决这种矛盾,数据的并行处理出现了。Hadoop就是利用互联网的多台计算机使用MapReduce(采用SIMD)来并行地处理大量数据。

1.1 什么是大数据

现代社会是一个高速发展的社会,而大数据就是这个高科技社会的产物。对于大数据来说,麦肯锡全球研究所给出的定义是,一种规模大道在获取、管理、分析方面大大超出传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征

正如前面所说,大数据迫切地需要一些特殊的技术来有效地应对数据的增长,而大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统等就是我们手中处理这群数据的工具。

整体来看,目前国内大数据应用尚处于从热点行业领域向传统领域渗透的阶段。也就是说,小公司产生的数据不高,而且对于原始数据的处理能力不强,而需要大数据技术的往往都是一些比较大的公司。目前大数据的典型应用由以下几个方面:

运营商业务

运营商掌握体量巨大的数据资源,可以提升洞察力,借助大数据分析运营的内在问题,改善服务水平,为客户提供更好地体验,获得更多的客户以及更高的业务增长。

金融业务

金融行业是信息产业之外大数据的又一重要应用领域,大数据在金融的银行、保险和证券三大业务中都有着广泛的应用前景。

政府业务

大数据政府应用不仅在世界各国政府日益重视,我国政府也非常重视大数据的应用。

还有其他繁多的领域,这里就不做过多介绍了。如有兴趣,可以参考教材大数据Hadoop 3.X分布式处理实战

1.2 大数据技术背后的核心思想

我们的核心问题是:虽然通过并行可以很快地处理数据;但是从持久性的存储设备中读取的速度受到限制。这也说明了我们如果要对大数据进行处理,那么是I/O并行化是必不可少的。

1.2.1 把数据分发到多个节点

我们首先要做的是,把一个大数据分布到多个计算节点,这些计算节点可以是电脑可以是服务器,这么做是有以下好处的:

  • 每个数据块会在多个节点上有多份拷贝(Hadoop默认是一个数据块有3份拷贝),这使得系统具备容错性,每一个节点发生故障,其他节点还备份有故障节点上的数据。
  • 多个节点可以同时参与数据处理过程。这样的话能够使处理效率翻倍。

1.2.2 把计算逻辑移到数据附近

对于熟悉JavaEE的人来说,MVC架构是最常见的一种。从大数据的概念来看,应该要把数据分布在各个计算节点后,对应的程序也应该分布在各个节点,可是这样做不易维护;对此,我们应该要有一个系统,其能够让我们集中式地部署程序代码,部署后启动计算任务,最后程序才会移动到各个数据处理节点。

1.2.3 计算节点进行本地数据处理

所有的大数据编程模型都是基于分布式并行处理的。但是由于网络I/O比本地磁盘I/O慢了好几个数量级,我们要做的最好是每个节点处理本地数据即可。在每个节点中,数据有了,程序有了,计算的条件也就完备了。

尽管想的很美,但这并不是每次都能刚好遇上这么巧的任务,恰好能够让本地的数据刚好能够完成。所以对于大数据系统来说,其都会把计算任务尽量调度到离数据最近的节点。每个节点计算结果出来后,就会把所有的计算结构汇聚到一个计算节点。

1.2.4 优选顺序读,次之随机读

数据在磁盘的读取过程是:磁盘头首先要移到数据所在的磁盘位置(寻道),移到后将数据读取出来,这个过程叫做数据的传输操作。对于熟悉计算机组成原理的同学来说,都知道读写磁盘最重要的就是减少磁头臂的移动,尽量使数据的存放在同一个磁盘片上。

既然数据是散乱的,就意味着不能在磁盘中过滤数据,因为在磁盘上过滤就等于是磁盘头一个一个数据确认是不是自己要的,然后不是自己要的就算过滤,这样的话会花很多时间。

大多数的数据读取密集型的大数据编程模型都利用了这个特征。数据被顺序地从磁盘上读出,然后在内存中过滤数据。而对于关系型数据库管理系统模型来说,其往往是随机读写数据为主。

1.2.5 例子

假设我们要计算2000年美国各州的总销售量,并按州排序。销售数据已经随机分发到各个计算节点。按照大数据计算技术的计算步骤:

  • 每个计算节点应该读取分发给自己的全部数据,然后过滤掉不是2000年的销售数据。
  • 各个计算节点在处理数据的时候,每发现一个州,就要建立一个新分组,用于存放该州所有销售数据。在处理的过程中,程序是位于各个计算节点的,对本地的数据做处理。
  • 当所有的节点都完成了本地所有数据的磁盘读取工作,按照州编号分别计算其销售总额,它们都会把所有的结果汇聚到汇聚节点上。
  • 这个指定的汇聚节点会把所有计算节点按照州的编号汇聚全部结果,把各个州的来自不同计算节点的数据分别相加。
  • 汇聚节点按照州的最终结果排序,并输出排序结果。

1.3 大数据的编程模型

大数据编程模型主要有以下几种类型:

  • 大规模并行处理数据库系统
  • 内存数据库系统
  • MapReduce系统
  • 整体同步并行系统

1.3.1 大规模并行处理数据库系统

大规模并行处理(MMP)数据库系统的核心思想是把数据按照某一列或者某一组列的值,按照某种形式进行划分,以分别处理。但是这样做的缺陷是,要用算法去划分数据,还要划分的合理,如果划分不合理查询不方便,为了得到计算结果需要通过网络来实现数据交换。

为了解决这个缺陷,大规模并行处理数据库系统经常采用把数据存储多份,并且按照不同准则来划分。比如你现在要查询这个结果,结果这个结点数据划分不合理,那我就换另外一个划分准则划分出来的数据。根据不同的查询请求,选择不同的数据集。

1.3.2 内存数据库系统

从系统运行的角度来看,内存数据库系统类似于MMP数据库系统。根据1.2.5的例子,可以说出主要几个要点特征:

数据按州划分,每个节点把数据加载到内存中。

每个计算节点读取本地数据。

由于数据是被缓存到内存的,所以除了最初的数据加载入内存的过程外,这里不适用顺序读取数据的特性。

1.3.3 MapReduce系统

MapReduce是我们要讲的重点。其有如下的特征:

  • 使用商用级别的硬件。
  • 无需事先定义数据划分准则来吧数据分配到各个计算节点,用户仅需要定义两个独立的处理过程:Map和Reduce。

当Hadoop系统实现MapReduce时,数据常常按照64~128MB的数据块大小进行分发,每个数据块会被复制两次,然后加载到Hadoop分布式文件系统。MapReduce程序启动的时候,Hadoop系统会把程序运行依赖库拷贝到各个计算节点。

各个计算节点按照调度执行Map任务,每个节点上的Mapper会根据输入的记录,输出一条条包含键值对的数据记录。然后Reducer会从每个Mapper的输出中获取键/值对,各个键会被发送到特定的Reducer进行处理,确保相同的键被相同的Reducer处理。每个Reducer把接收的键值对中的数值相加。输出结果写回HDFS中。客户端再从HDFS读取结果数据,对结果数据做最后处理。

经过上面的叙述,我们可以分析出MapReduce有以下的特征:

  • 数据以较大的数据块的形式存放在HDFS上。HDFS是一个分布式文件系统,数据块分散存储到各个结点,数据库是有冗余的。
  • 程序运行依赖库,包括Map和Reduce代码被复制发送到所有的任务节点。
  • 每个计算节点仅读取节点本地数据,集群中所有节点运行Mapper,从节点本地读取数据到Mapper中。
  • 数据被每个节点的任务以数据块的方式一次性顺序读取。

1.3.4 整体同步并行系统

整体同步并行(BSP)系统的运行过程和MapReduce过程非常相似。我们在后面会细讲,这里不过多讲述。

1.4 大数据和事务性系统

在Hadoop中,通常使用HBase来作为自己的NoSQL数据存储。

对于普通的RDBMS来说,遵守ACID准则是非常重要的,但是有时候也必须做出妥协,其理论依据就是CAP理论,即:

  • Consistency(一致性):在分布式系统中的所有数据备份,在同一时刻有同样的值。
  • Availability(可用性):在合理且明确的时间内,保证每个请求都能获得成功或者失败的结果的响应。
  • Partition tolerance(分区容忍性):在集群中一部分节点故障后,集群整体仍然可以使用。

需要注意的是,分布式系统只能满足上述三中其二。

对于一致性和可用性:遵守ACID准则的单机RDBMS是兼顾一致性和可用性的系统例子,但是其不满足分区容忍性。

对于一致性和分区容忍性:一个RDBMS集群就是这样的系统。分布式事务保证了所有用户在同一时刻获取到相同的数据,也可以保证某个节点宕机了还能使用其他节点。但是其是不满足可用性的,因为在两阶段提交事务期间,系统是不可用的,这是为了保证系统的一致性。也就是说,一致性限制了可用性。

对于可用性和分区容忍性:本类别的系统常常被归属于最终一致性系统。为了系统可用性和分区容忍性牺牲了一致性。

对于分布式系统,对于上述三种选二如何折中是非常关键的。MapReduce只是Hadoop生态下的一个组件,其常常和其他的组件一起搭配使用。

1.5 我们能处理多大的数据

对于前面我们忽略了CPU的处理而讨论了IO设备的问题,但是随着现代科技计算量的提高,各种情况皆需考虑其中。如果是计算密集型的数据,我们可以采用增加节点数量来提高处理器性能。

我们还忽略了网络I/O开销,对于各个节点计算后传入汇聚节点,其在网络上传输的数据通信开销也是非常大的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android wp主题,WP桌面:win10系统的最佳替代安卓应用

WP桌面是信壹网络继刷机大师、ROOT大师和安卓清理大师后重点开发的一款仿windows phone风格的手机桌面应用,从2012年推出至今已获得海内外千万粉丝的好评。这个基于Android开发的手机桌面,这不仅仅体现了WP桌面良好的用户体验,同时也从侧面反…

反转一个值中的最后n位

这是在《使用位运算显示二进制数》的基础上进一步扩展,实现反转一个值中最后n位,参数为n和要反转的值。 ~可以一个字节中所有的位,而不是选定的少数位。为达到指定要求,需创建一个掩码,该掩码最后n位设为1,…

数据结构杂谈(三)

本文的所有代码均由C编写 如果你已经看完这篇杂谈,你可以前往上一篇杂谈→数据结构杂谈(二)_尘鱼好美的小屋-CSDN博客 3 单链表 文章目录3 单链表[toc]3.1 单链表的定义3.1.1 引入2.1.2 单链表和顺序表的优劣2.1.3 单链表的代码定义3.2 单链表的初始化3.…

Mac Book Pro不能识别移动硬盘

2019独角兽企业重金招聘Python工程师标准>>> 今天把一台Mac Book Pro重装了一下系统,然后想把移动硬盘上的资料考入电脑,发现插上移动硬盘电脑没有反映。马上搜索解决办法,众说纷纭。因为没重装之前是好的,所以判断为软…

java将ascii数组转成unicode字串

//转 byte[] bytes; String str new String(bytes, "GBK"); //回转 byte b; b (byte)str.charAt(0); 转载于:https://www.cnblogs.com/feilv/p/4070405.html

des加密解密JAVA与.NET互通实例

JAVA版本 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec;public class Des {private byte[] desKey;//解密数据public static String d…

signature=ec663bb1ca3cfa2e278da44aa044d1c6,Fair Exchange of Signatures with Multiple Signers

摘要:Chen et al.~introduced a new notion of a concurrent signature scheme for a fair exchange of signatures with two parties. Chen et al. also proposed a concrete scheme and proved its security under the assumption of discrete logarithm problem.…

数据库杂谈(四)——关系演算和E-R数据模型

文章目录3 形式化关系查询语言3.2 关系演算和E-R数据模型3.2.1 概述3.2.2 元组关系演算3.2.2.1 概述3.2.2.2 形式化定义3.2.2.3 表达式的安全性3.2.3 域关系演算3.2.4 关于关系演算的习题3.2.5 对传统数据模型的评价3.2.6 E-R数据模型3.2.6.1 基本概念3.2.6.2 E-R图3.2.7 题型总…

jQuery获取浏览器URL链接的值

代码&#xff1a; 方法一&#xff1a; $.extend({getUrlVars: function () {var vars [], hash;var hashes window.location.href.slice(window.location.href.indexOf(?) 1).split(&);for (var i 0; i < hashes.length; i) {hash hashes[i].split();vars.push(ha…

小程序获取微信用户绑定的手机号

小程序API内提供getPhoneNumber借口来获取用户已经绑定到微信的手机号,但需要用户主动触发才能发起获取手机号接口&#xff0c;所以该功能不由 API 来调用; 基本流程如下: 使用方法 需要将 <button> 组件 open-type 的值设置为 getPhoneNumber&#xff0c;当用户点击并同…

华为正式发布鸿蒙多久可以用,华为正式发布鸿蒙OS,手机随时能用

8月9日下午&#xff0c;华为在松山湖召开了HDC2019开发者大会&#xff0c;而在此次大会上华为正式发布了传说中的华为鸿蒙系统&#xff0c;也就是Harmony OS。鸿蒙系统它是一个基于微内核的全新全长近分布式的操作系统&#xff0c;它不仅仅局限于某一个设备使用而是可以在其智慧…

WCF rest 的帮助页面和缓存机制

打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序&#xff0c;删除默认建立的文件。 新建RestWcf4HelpPage.svc&#xff0c;代码如下 using System; using System.Collections.Generic; using System.Lin…

数据结构杂谈番外篇——时间复杂度计算

我们先给出推导的方法&#xff0c;然后下面一步一步来推导。 推导大O阶 用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中&#xff0c;只保留最高阶项如果最高阶存在且不是1&#xff0c;则去除这个项相乘的常数所得结果即为大O阶 示例 int sum 0&#xff0c;…

DOM对象和JQuery对象的区别

jQuery对象和DOM对象使用说明&#xff0c;需要的朋友可以参考下。1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象&#xff0c;哪些是 DOM对象&#xff0c;因此需要重点了解jQuery对象和DOM对象以及它们之间的关系.DOM对象&#xff0c;即是我们用传统的方…

Eclipse 构建Maven项目

http://www.iteye.com/topic/1123225转载于:https://www.cnblogs.com/svennee/p/4079102.html

Winform可读取html语言,C# Winform 用WebBrowser实现 Html 编辑功能

介绍一款Winform中使用的html editor (Html编辑控件)&#xff0c;不过这不是一款新控件&#xff0c;它就是.Net平台开发人员所熟知的WebBrowser控件—_—.WebBrowser也可以实现Html编辑和预览功能。你只需要使用WebBrowser的设计模式去编辑&#xff0c;用第二个WebBrowser去预览…

Java学习笔记(二):String

String 在Java中String是作为引用对象存在的一种数据类型&#xff0c;用来保存字符串。 实例化和赋值 //直接声明 String s1 "Hello world!"; //通过构造函数创建, 提供了 11 种不同参数创建的方法 char[] c { h, e, l, l, o, .}; String s2 new String(c); Strin…

数据结构杂谈(一)

在你点进来这里的一瞬间&#xff0c;欢迎你找到了宝藏 这是一些关于数据结构和算法里最详细的阐述和学习心得&#xff0c;我十分乐意和你分享这些知识。 如果你已经看完这篇杂谈&#xff0c;可以前往下一篇→数据结构杂谈&#xff08;二&#xff09;_尘鱼好美的小屋-CSDN博客 1…

计算器排html页面,htmltest~计算器界面的实现

通过divcss和部分布局的作用&#xff0c;实现了&#xff0c;如下效果的计算器展示页面![C%]R$IGDK4J(%3LJXD3]SY.png&#xff0c;废话不多说&#xff0c;最主要的还是分享代码&#xff1a;html&#xff1a;Title.计算器-口 X编辑(E)查看(V)帮助(H)BackspaceCECMC789/sqrtMR456*…

git 常用方法

1.删除远程tag或者branchgit push origin --delete (tagName)/(brachName).例如&#xff1a;删除远程2.1branch&#xff1a;git push origin --delette 2.12.检出某次commit时的代码&#xff08;通过commit index检出&#xff09;git checkout commit的SHA1值例如&#xff1a;g…