已经看了大数据相关知识一阵时间了,自己也是从新手开始的,所以看了大量的大数据如何入门的技术博客、帖子等,下面记录总结下自己学习的内容。

一、大数据学习前期知识储备

在学习大数据前,需要对云计算、虚拟化、Linux、JAVA这几个方面都需要了解,下面简单阐述下这几个方面的概念。

1.云计算

所谓的云计算,指的就是把你的软件和服务统一部署在数据中心,统一管理,从而实现高伸缩性。

  • 云计算的部署方式
    从部署方式来说,总共有两类云计算:
    • 私有云:数据中心部署在企业内部,由企业自行管理。微软为大家提供了Dynamic Data Center Toolkit,来方便大家管理自己的数据中心。
    • 公共云:数据中心由第三方的云计算供应商提供,供应商帮助企业管理基础设施(例如硬件,网络,等等)。企业将自己的软件及服务部属在供应商提供的数据中心,并且支付一定的租金。Windows Azure正是这样一个公共云平台。
  • 云计算的运营方式
    从运营方式来说,总共有三类云计算:
    • 软件即服务(SaaS):云计算运营商直接以服务的形式供应软件,供最终用户使用。有些服务还提供了SDK,从而使得第三方开发人员可以进行二次开发。在这种运营模式下,开发人员通常只能针对现有的产品开发插件,而无法充分挖掘平台和操作系统的特点,不过他们可以在现有产品的基础上添加新的功能,而不必从头开始实现。微软的Bing,Windows Live,Microsoft Business Productivity Online等产品就属于这一类型。
    • 平台即服务(PaaS):云计算运营商将自己的开发及部署平台提供给第三方开发人员,第三方开发人员在这个平台上开发自己的软件和服务,供自己或其它用户使用。在这种运营模式下,开发人员有了更多的自由,可以发挥出平台的强大功能,而不受现有产品的束缚。Windows Azure正是这样一个产品。
    • 基础设施即服务(IaaS):云计算运营商提供但不管理基础设施,第三方开发人员将开发好的软件和服务交给自己公司的IT管理员,由IT管理员负责部署及管理。在这种运营模式下,开发人员和IT管理员有最大限度的自由,然而由于必须自行管理部分基础设施,因此成本通常也会较大,对管理员的要求也会较高。目前微软尚未提供IaaS的云计算运营模式,不过我们正在考虑如何给予开发人员和IT管理员更多的自由。
  • 云端理解
    • 服务不在本地,这一层可以理解为服务器
    • 它和普通的服务器是不一样的,这些云端的服务器的资源是共享的,一旦一个服务器不能承受,将会把任务分配给其他机器。
  • 云端技术
    • openstack是搭建云平台技术,可以搭建公有云,私有云,和混合云。
    • Cloud Foundry是一个开源的平台即服务产品,它提供给开发者自由度去选择云平台,开发框架和应用服务。
    • Hadoop是一个云端大数据处理框架,用于进行大数据存储于计算,这就是我们在此提云计算的一部分原因,可以说大数据是即云后发展的更细致方向的一门技术。

2.虚拟化

大数据深入的学习,则需要搭建环境,而最方便的方式是使用虚拟机,因此对虚拟化我们也需要进行了解。

为什么虚拟化会如此的流行。运行虚拟机本身也是占内存的,为什么就能提高硬件资源利用率那
提高计算机硬件性能利用率多半是对服务器而言:企业级服务器因为所装的应用对操作系统和应用环境有要求,所以很多应用不能同时装在同一个系统和环境下,导致服务器正常工作时只使用30%左右的硬件资源,剩余的70%都是闲置的,但是在虚拟机下,可以把一台服务器的硬件虚拟成N个,每个的性能是1/n,而且虚拟出来的硬件之间是相互逻辑独立的,不会有影响。这样我们就可以在一台服务器上虚拟出n个相同的计算机,安装N个不同操作系统不同应用,把服务器硬件资源利用起来。

其实虚拟化简单说就是在硬件设施上通过装虚拟机软件模拟出多个操作系统,虚拟机软件常用的有VMware、VirtualPC等。
在大数据学习中,搭建集群是关键,因此虚拟化方面我们更关心的是网络的配置。VMware提供的功能较VirtualPC要更丰富,使用起来更简便,因此在学习中最好选择VMware进行学习。
VMware中的网络配置方式有三种,分别是:

  • bridged(桥接模式):相当于创建一台独立的电脑。你可以让它跟主机通信,但是网络需要手工配置。
      在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。需要手工为系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。简而言之,使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
  "如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。"

-* host-only(主机模式)*:是与主机隔离的,但是虚拟机之间是可以相互通信,相当于这两台机器通过双绞线互连。
  在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
  在此模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。

  "如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。"
  • NAT(网络地址转换模式):虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网,虚拟系统也就无法和本局域网中的其他真实主机进行通讯。
      使用NAT模式可以很方便的实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机 器能访问互联网即可。
  "如果你想无需做什么操作,安装系统后就可上网,那么可以选择NAT模式。"

3.Linux系统学习

大数据相关技术还是部署在Linux操作系统上的,因此对于Linux的学习也是十分必要的。首先我们应该熟悉Linux中的常用命令的使用,以及软件的安装、文档的编辑等。下面简单列举一下常用的操作。

//调出控制台
ctrl+alt+T(键盘键组合)

//切换root用户
su root

//解压tar包
tar -zvxf hadoop.tar.gz

//安装软件
sudo apt-get intall kwrite

//编辑文件
vi /home/zhl/abc.txt
//按i键进入编辑模式,按ESC键进入命令行模式
//命令行模式下
//直接退出
:q
//保存退出
:wq
//强制退出
:q!

4.JAVA

hadoop是JAVA编写的框架,所以深入学习的话,拥有JAVA基础是必须的。

初学者基本的要求:
(1)懂什么是对象、接口、继续、多态
(2)必须熟悉Java语法
(3)掌握一定的常用包
(4)会使用maven下载代码
(5)会使用eclipse,包括里面的快捷键,如何打开项目

传统程序员,因为具有丰富的编程经验,因此只要能够掌握开发工具:
(1)会使用maven下载代码
(2)会使用eclipse,包括里面的快捷键,如何打开项目
(3)简单熟悉Java语法

上面的只是基础,如果想开发hadoop,还需要懂得下面内容 :
(1)会编译hadoop
(2)会使用hadoop-eclipse-plugin插件,远程连接集群
(3)会运行hadoop程序。

二、大数据概念

1.概念

大数据是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
大数据特征
【IBM提出的大数据的5V特征是:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)Veracity(真实性)】

2.与云计算关系

与云计算关系
大数据通常用来形容一个公司创造的大量非结构化数据和半结构化数据。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。
大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。

3.大数据认知

大数据在以云计算为代表的技术创新大幕的衬托下,将原本很难收集和使用的数据变得容易被利用起来了。

全面认知大数据,可以从从三个层面来展开:
第一层面是理论,理论是认知的必经途径,也是被广泛认同和传播的基线。在这里从大数据的特征定义理解行业对大数据的整体描绘和定性;从对大数据价值的探讨来深入解析大数据的珍贵所在;洞悉大数据的发展趋势;从大数据隐私这个特别而重要的视角审视人和数据之间的长久博弈。
第二层面是技术,技术是大数据价值体现的手段和前进的基石。在这里分别从云计算、分布式处理技术、存储技术和感知技术的发展来说明大数据从采集、处理、存储到形成结果的整个过程。
第三层面是实践,实践是大数据的最终价值体现。在这里分别从互联网的大数据,政府的大数据,企业的大数据和个人的大数据四个方面来描绘大数据已经展现的美好景象及即将实现的蓝图。
认知大数据

4.大数据相关技术

大家熟知的大数据技术首当其冲的是hadoop,另外还有spark、storm、impala等。
大数据相关技术

  • Hadoop采用MapReduce分布式计算框架,并根据GFS开发了HDFS分布式文件系统,根据BigTable开发了HBase数据存储系统。
  • Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另外一种重要的分布式计算系统。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此Spark可以提供超过Hadoop100倍的运算速度。但是,由于内存断电后会丢失数据,Spark不能用于处理需要长期保存的数据。
  • Storm是Twitter主推的分布式计算系统,它由BackType团队开发,是Apache基金会的孵化项目。它在Hadoop的基础上提供了实时运算的特性,可以实时的处理大数据流。不同于Hadoop和Spark,Storm不进行数据的收集和存储工作,它直接通过网络实时的接受数据并且实时的处理数据,然后直接通过网络实时的传回结果。

Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。

三、hadoop简介

1.hadoop体系结构

hadoop体系结构

2.hadoop核心设计

hadoop核心设计

3.hadoop版本差异

版本差异

4.hadoop家族

hadoop家族
Hive:Apache Hive是Hadoop的一个数据仓库系统,促进了数据的综述(将结构化的数据文件映射为一张数据库表)、即席查询以及存储在Hadoop兼容系统中的大 型数据集分析。Hive提供完整的SQL查询功能——HiveQL语言,同时当使用这个语言表达一个逻辑变得低效和繁琐时,HiveQL还允许传统的 Map/Reduce程序员使用自己定制的Mapper和Reducer。hive类似CloudBase,基于hadoop分布式计算平台上的提供 data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据 的汇总,即席查询简单化。
Pig:Apache Pig是一个用于大型数据集分析的平台,它包含了一个用于数据分析应用的高级语言以及评估这些应用的基础设施。Pig应用的闪光特性在于它们的结构经得起 大量的并行,也就是说让它们支撑起非常大的数据集。Pig的基础设施层包含了产生Map-Reduce任务的编译器。Pig的语言层当前包含了一个原生语 言——Pig Latin,开发的初衷是易于编程和保证可扩展性。
HBase:Apache HBase是Hadoop数据库,一个分布式、可扩展的大数据存储。它提供了大数据集上随机和实时的读/写访问,并针对了商用服务器集群上的大型表格做出 优化——上百亿行,上千万列。其核心是Google Bigtable论文的开源实现,分布式列式存储。就像Bigtable利用GFS(Google File System)提供的分布式数据存储一样,它是Apache Hadoop在HDFS基础上提供的一个类Bigatable。
ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服 务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
Cassandra:Apache Cassandra是一个高性能、可线性扩展、高有效性数据库,可以运行在商用硬件或云基础设施上打造完美的任务关键性数据平台。在横跨数据中心的复制 中,Cassandra同类最佳,为用户提供更低的延时以及更可靠的灾难备份。通过log-structured update、反规范化和物化视图的强支持以及强大的内置缓存,Cassandra的数据模型提供了方便的二级索引(column indexe)。
Cloudera CDH:英文名称:CDH (Cloudera’s Distribution, including Apache Hadoop)。Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop),可以简化hadoop生态系统的安装。

四、spark简介

1.spark架构

简略图
架构图

详细图
spark

2.spark运行模式

运行环境模式描述
local本地模式常用于本地开发测试,可分为local单线程和local-cluster多线程
standalone独立模式典型的主从模式,主模式有单独故障处理,spark支持Zookeeper实现HA
on yarn集群模式运行在YARN资源管理架构之上,由YARN负责资源管理,spark负责任务调度和计算
on mesos集群模式运行在mesos资源管理架构之上,由YARN负责资源管理,spark负责任务调度和计算
on cloud集群模式比如AWS的EC2,使用这个模式可以很方便的房屋Amazon的S3;支持多种分布式系统HDFS、S3

3.spark描述

Spark Streaming是核心Spark API的一个扩展,它并不会像Storm那样一次一个地处理数据流,而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。Spark针对持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理(micro-batching)的RDD(弹性分布式数据集);而RDD则是一种分布式数据集,能够以两种方式并行运作,分别是任意函数和滑动窗口数据的转换。
spark

五、strom简介

在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。
strom

六、小结

本篇仅仅是简单罗列了大数据包含的一部分技术,也不是全部,大数据生态圈很庞大,需要在实践中根据需求来进行选择。作为学习者也需要逐步理解、深入。
在此推荐一个自认为不错的学习大数据的网站:About云开发 http://www.aboutyun.com/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐