课程链接:大数据技术基础课程_厦门大学数据库实验室  http://dblab.xmu.edu.cn/post/1089/

课程里介绍了大数据的基本概念、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数据库HBase、NoSQL数据库、云数据库、分布式并行编程模型MapReduce、Spark以及大数据在互联网、生物医学和物流等各个领域的应用

• 在Hadoop、HDFS、HBase、MapReduce、Spark等重要章节,安排了入门级的实践操作,让学生更好地学习和掌握大数据关键技术

一,大数据、云计算和物联网的相互关系

答:

云计算为大数据提供了技术基础,大数据为云计算提供了用武之地

物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑

云计算为物联网提供海量数据存储能力,物联网为云计算技术提供了广阔的应用空间。

大数据关键技术

1. 分布式存储:GFS\HDFS  , BigTable\HBase  ,NoSQL(键值、列族、图形、文档数据库)  ,NewSQL(如:SQL Azure)

2. 分布式处理:  MapReduce

云计算关键技术

公有云  ===软件即服务SaaS :由于是计量服务,SaaS 允许出租一个应用程序,并计时收费

混合云  ===平台即服务PaaS :类似IaaS,但是它包括操作系统和围绕特定应用的必需的服务

私有云  ===基础设施即服务IaaS:将基础设施(计算资源和存储)作为服务出租

云计算关键技术包括:虚拟化、分布式存储、分布式计算、多租户等

物联网关键技术

物联网中的关键技术包括识别和感知技术(二维码、RFID、传感器等)、网络与通信技术、数据挖掘与融合技术等

发展脉络

IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一次重大变革

第一次浪潮   1980年前后   个人计算机   信息处理    Intel、AMD、IBM、苹果、微软、联想、戴尔、惠普等

第二次浪潮   1995年前后      互联网    信息传输    雅虎、谷歌、阿里巴巴、百度、腾讯等

第三次浪潮   2010年前后   物联网、云计算和大数据     信息爆炸     将涌现出一批新的市场标杆企业

技术条件已经成熟:

1. 存储设备容量不断增加

2. CPU处理能力大幅提升

3. 网络带宽不断增加  (每秒周转次数,前端总线速率,转移数据量)

大数据发展历程:90年代数据库概念----------->00年代大数据解决方案逐渐走向成熟,形成了并行计算与分布式系统两大核心技术,谷歌的GFS和MapReduce等大数据技术受到追捧----------->10年代大数据技术得到广泛应用

思维方式方面,大数据完全颠覆了传统的思维方式:

全样而非抽样

效率而非精确

相关而非因果

大数据关键技术

3. 分布式存储:GFS\HDFS  , BigTable\HBase  ,NoSQL(键值、列族、图形、文档数据库)  ,NewSQL(如:SQL Azure)

4. 分布式处理:  MapReduce分布式并行编程模型

二,大数据处理架构Hadoop

HDFS:分布式并行编程模型

MapReduce:分布式并行编程模型

HBase :  Hadoop上的非关系型的分布式数据库

Zookeeper :提供分布式协调一致性服务

SSH是什么?

SSH 为 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

配置SSH的原因:

Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现。Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录它们

性能动力

Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型

基本组成

一个基本的Hadoop集群中的节点主要有

NameNode:负责协调集群中的数据存储

DataNode:存储被拆分的数据块

JobTracker:协调数据计算任务

TaskTracker:负责执行由JobTracker指派的任务

SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息

三,分布式数据库HBase 分布式数据库HBase的基本原理和使用方法

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。

关系数据库已经流行很多年,并且Hadoop已经有了HDFS和MapReduce,为什么需要HBase?

Hadoop无法满足大规模数据实时处理应用的需求

HDFS面向批量访问模式,不是随机访问模式

HBase已经成功应用于互联网服务领域和传统行业的众多在线式数据分析处理系统

HBase与传统的关系数据库的区别

(1)数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串

(2)数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系

(3)存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的

(4)数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来

(5)数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留

(6)可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

Hbase的数据模型

表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族

行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。

列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元

列限定符:列族里的数据通过列限定符(或列)来定位

单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]

时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

HBase功能组件

HBase的实现包括三个主要的功能组件:

(1)库函数:链接到每个客户端

(2)一个Master主服务器

(3)许多个Region服务器

主服务器Master负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡

Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求

客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据

客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小

Region的定位

为了加速寻址,客户端会缓存位置信息,同时,需要解决缓存失效问题

寻址过程客户端只需要询问Zookeeper服务器,不需要连接Master服务器

HBase的三层结构中各层次的名称和作用

第一层     Zookeeper文件   记录了-ROOT-表的位置信息

第二层   -ROOT-表 记录了.META.表的Region位置信息-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据

第三层  .META.表    记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

Region服务器中的Store和Hlog组件

Store是Region服务器的核心

多个StoreFile合并成一个

单个StoreFile过大时,又触发分裂操作,1个父Region被分裂成两个子Region

分布式环境必须要考虑系统出错。

HBase采用HLog保证系统恢复

HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log)

访问HBase

HBase只有一个针对行健的索引

访问HBase,只有三种方式:

1.通过单个行健访问

2.通过一个行健的区间来访问

3.全表扫描

构建HBase二级索引

使用其他产品为HBase行健提供索引功能:

一,Hindex二级索引:  Hindex 是华为公司开发的纯 Java 编写的HBase二级索引,兼容 Apache HBase 0.94.8

二,HBase+Redis:

Redis+HBase方案

Coprocessor构建二级索引

Redis做客户端缓存

三,HBase+solr

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器

四,分布式文件系统HDFS

分布式文件系统HDFS的基本原理和使用方法

分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群

基本组成

分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,

这些节点分为两类

一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode):存储元数据,元数据保存在内存中,保存文件,block,datanode之间的映射关系

NameNode中保存了两个核心的数据结构,即FsImage和EditLog

FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据

操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode):存储文件内容,文件内容保存在磁盘,维护了block id到datanode本地文件的映射关系。

每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中

HDFS命名空间管理

通信协议:HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输

所有的HDFS通信协议都是构建在TCP/IP协议基础之上的,客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互

名称节点和数据节点之间则使用数据节点协议进行交互

客户端:

客户端是用户操作HDFS最常用的方式,HDFS在部署时都提供了客户端

客户端可以支持打开、读取、写入等常见的操作,并且提供了类似Shell的命令行方式来访问HDFS中的数据

此外,HDFS也提供了Java API,作为应用程序访问文件系统的客户端编程接口

HDFS体系结构的局限性

HDFS只设置唯一一个名称节点,这样做虽然大大简化了系统设计,但也带来了一些明显的局限性,具体如下:

(1)命名空间的限制:名称节点是保存在内存中的,因此,名称节点能够容纳的对象(文件、块)的个数会受到内存空间大小的限制。

(2)性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。

(3)隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此,无法对不同应用程序进行隔离。

(4)集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。

HDFS存储原理

冗余数据保存:多副本方式: 作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上

数据存取策略:HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID

数据错误与恢复: HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进行自动恢复,主要包括以下几种情形:名称节点出错、数据节点出错和数据出错。

五,NoSQL数据库 NoSQL数据库的概念和基本原理

NoSQL=Not  Only   SQL

(1)灵活的可扩展性

(2)灵活的数据模型

(3)与云计算紧密融合

关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面:

(1)无法满足海量数据的管理需求

(2)无法满足数据高并发的需求

(3)无法满足高可扩展性和高可用性的需求

MongoDB、Redis等是针对在线业务,两者都抛弃了关系模型

比较

关系数据库和NoSQL数据库各有优缺点,彼此无法取代:

1.关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性

2.NoSQL数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)

NoSQL数据库分类

典型的NoSQL数据库通常包括键值数据库、列族数据库、文档数据库和图形数据库

1.键值数据库:   优点   扩展性好,灵活性好,大量写操作时性能高

缺点   无法存储结构化信息,条件查询效率较低

应用:键值数据库成为理想的缓冲层解决方案, Redis有时候会被人们称为“强化版的Memcached”支持持久化、数据恢复、更多数据类型

2.列族数据库

优点      查找速度快,可扩展性强,容易进行分布式扩展,复杂性低

缺点     功能较少,大都不支持强事务一致性

应用:HBase应用于分布式数据存储与管理

3.文档数据库

优点    性能好(高并发),灵活性高,复杂性低,数据结构灵活,提供嵌入式文档功能,将经常查询的数据存储在同一个文档中既可以根据键来构建索引,也可以根据内容构建索引缺点     缺乏统一的查询语法

应用:XML文档、HTML文档和JSON 文档就属于这一类。用于后台具有大量读写操作的网站、使用JSON数据结构的应用、使用嵌套结构等非规范化数据的应用程序,

百度云数据库(MongoDB)

4. 图形数据库

优点      灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱

缺点     复杂性高,只能支持一定的数据规模

应用:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

NoSQL的三大基石

CAP:

C:(Consistency):一致性,所有节点在同一时间具有相同的数据

A:(Availability):可用性,指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;

P(Tolerance of Network Partition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。

CAP理论告诉我们,一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个

拾遗:

访问MongoDB的两种方式:

使用 MongoDB shell访问MongoDB

使用Java程序访问 MongoDB

六,MapReduce 分布式并行编程模型MapReduce原理和使用方法

MapReduce主要有以下4个部分组成:

1)Client

用户编写的MapReduce程序通过Client提交到JobTracker端

用户可通过Client提供的一些接口查看作业运行状态

2)JobTracker

JobTracker负责资源监控和作业调度

JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点

JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

3)TaskTracker

TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)

TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用

4)Task

Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动

MapReduce在执行过程中:

不同的Map任务之间不会进行通信

不同的Reduce任务之间也不会发生任何信息交换

用户不能显式地从一台机器向另一台机器发送消息

所有的数据交换都是通过MapReduce框架自身去实现的

应用

MapReduce可以很好地应用于各种计算问题

关系代数运算(选择、投影、并、交、差、连接)

分组与聚合运算

矩阵-向量乘法

矩阵乘法

Map处理逻辑

1.Map输入类型为<key,value>

2.期望的Map输出类型为<单词,出现次数>

3.Map输入类型最终确定为<Object,Text>

4.Map输出类型最终确定为<Text,IntWritable>

Reduce处理逻辑

1.在Reduce处理数据之前,Map的结果首先通过Shuffle阶段进行整理

2.Reduce阶段的任务:对输入数字序列进行求和

3.Reduce的输入数据为<key,Iterable容器>

七,云数据库 云数据库的概念和基本原理

云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易。

云数据库并没有专属于自己的数据模型,云数据库所采用的数据模型可以是关系数据库所使用的关系模型

微软的SQL Azure云数据库、

阿里云RDS都采用了关系模型

也可以是NoSQL数据库所使用的非关系模型(Amazon Dynamo云数据库采用的是“键/值”存储)

云数据库厂商:

Amazon   :Dynamo、SimpleDB、RDS ,DynamoDB:云中的NoSQL数据库,RDS:云中的关系数据库,SimpleDB:云中的键值数据库

Google    :Google Cloud SQL   基于MySQL的云数据库,使用Cloud SQL,所有的事务都在云中,并由谷歌管理,用户不需要配置或者排查错误

Microsoft   :Microsoft SQL Azure,属于关系型数据库,支持大量数据类型:包含了几乎所有典型的SQL Server 2008的数据类型

阿里   :阿里云RDS

百度    :百度云数据库

腾讯     :腾讯云数据库

UMP系统是低成本和高性能的MySQL云数据库方案

拾遗:

编译打包代码以及运行程序

1.使用java编译程序,生成.class文件

2.将.class文件打包为jar包

3.运行jar包(需要启动Hadoop)

4.查看结果

详细步骤:

1.Hadoop 2.x 版本中 jar 不再集中在一个 hadoop-core*.jar 中,而是分成多个 jar,如使用 Hadoop 2.6.0 运行 WordCount 实例至少需要如下三个 jar:

$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar

$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar

2.通过命令 hadoop classpath 可以得到运行 Hadoop 程序所需的全部 classpath信息

3.将 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中,在 ~/.bashrc 中增加几行配置命令

4.执行 source ~/.bashrc 使变量生效,接着就可以通过 javac 命令编译 WordCount.java

5.接着把 .class 文件打包成 jar,才能在 Hadoop 中运行

6.运行程序

大数据基础与应用课程总结相关推荐

  1. python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程

    [注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...

  2. 看这里→大数据工程技术人员系列课程—《大数据工程技术人员-大数据基础技术》正式上线!...

    点击蓝字,关注我们 行业背景 据中国商业联合会数据分析专业委员会统计,未来中国基础性数据分析人才缺口将达到1400万.2025年前大数据人才需求仍将保持30%-40%的增速,需求总量将会在2000万人 ...

  3. 大数据基础入门 ------文章来源于:某个入门课程

    文章目录 第一课:大数据基础入门 什么是大数据? java和大数据的关系 学习大数据需要的基础和路线 第二课:Hadoop的背景起源 一 分布式存储 如何解决大数据的存储?(HDFS) 第三课: ha ...

  4. 大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析

    文章目录 前言 一.创建 Ubuntu 用户 二.安装 Java 2.1.查看本地 Java 版本 2.2.验证 Java 在本地的配置情况 三.安装 ssh 服务 3.1.安装 openssh-se ...

  5. 推荐 :数据科学与大数据技术专业特色课程研究

    在我国,数据科学与大数据技术专业的建设已成为新的热点话题.在系统调研世界一流大学数据科学专业建设现状的基础上,从特色课程视角重点分析加州大学伯克利分校.约翰·霍普金斯大学.华盛顿大学.纽约大学.斯坦福 ...

  6. 大数据基础——Hadoop大数据平台搭建

    文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...

  7. 大数据基础教程丨TiDB数据库从入门到实践

    TiDB 是一款定位于联机事务处理/联机分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的 ...

  8. 大数据基础知识(上)

    大数据基础知识:技巧与概念 什么是大数据 数量多 流转快 种类多 大数据需要具备全部三个特征吗? 如何使用大数据 了解消费者大数据 了解企业大数据 了解科学研究大数据 大数据与数据科学 大数据与小数据 ...

  9. 大数据基础知识全集,大数据爱好者收藏必备

             目前,市场上的大数据产品太多,但远远低于IAAS的标准化水平,各产品之间的差异还不十分清楚.当许多公司正在制造大数据平台或大数据解决方案时,他们往往不知道选择哪些产品来满足他们的需求 ...

最新文章

  1. 【OpenCV入门指南】第五篇轮廓检测 下
  2. Mobile DevOps 之 Proxmox 实现节流提效
  3. JVM调优:jdk1.8新生代和老年代的比值是1:2
  4. H5新增API_geoLocation
  5. 点关机后主机不能自动关机的原因
  6. 让Kubernetes成为数据中心操作系统(DCOS)的一等公民
  7. SELinux 初探
  8. html() 无效,Internet Explorer无效HTML解析代码漏洞
  9. fastadmin在html中查询数据,常见问题 · fastadmin 常见问题 · 看云
  10. 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (3)
  11. 进入微信公众平台自动跳转到小程序界面,而不是微信公众号界面。
  12. android - studio版本控制文件颜色代表意思
  13. 学习GIT的一个小游戏
  14. JAVA流的使用(复制文件效率对比)初学者
  15. 蓝桥杯 Python 练习题 数列排序
  16. UI设计师常用什么工具 怎么用AE导出GIF动画
  17. 2021-2027全球与中国可待因止疼药市场现状及未来发展趋势
  18. 第十四届蓝桥杯C++B组题解(不完全对)
  19. 高级筛选条件为系别为计算机或者数学,电子表格中的高级筛选.doc
  20. 微博平台架构和安全——微博平台首席架构师杨卫华演讲

热门文章

  1. jquery-1.11.3.min.js —— jquery库
  2. 人脉可以当饭吃?领英携手新元素开启“超级人脉”
  3. Nightingale夜莺初识
  4. 廊坊师范学院计算机信息管理专业排名,廊坊师范学院专业排名及介绍 哪些专业最好...
  5. Android 7.0支持exfat文件系统
  6. 学习笔记(01):21天搞定分布式Python网络爬虫-爬虫介绍(资料在第一节中下载)...
  7. 推荐5个非常酷的医疗健康APP
  8. vscode 自定义编辑器样式 css修改
  9. 支付宝红包口令(2015 阿里笔试)
  10. 百分百恋人 治愈系恋人 如何照顾他心里的伤