大数据概要

大数据组件storm 大数据组件技术_hdfs

流程图解析

1)数据采集:定制开发采集程序,或使用开源框架FLUME
2)数据预处理:定制开发mapreduce程序运行于hadoop集群
3)数据仓库技术:基于hadoop之上的Hive
4)数据导出:基于hadoop的sqoop数据导入导出工具
5)数据可视化:定制开发web程序或使用kettle等产品
6)整个过程的流程调度:hadoop生态圈中的oozie工具或其他类似开源产品

什么是RPC

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式(C/S)。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

Ambari:

部署、管理和监控Hadoop集群的WEB工具。通过它你可以快速部署一个大数据计算平台,而不用考虑Hadoop生态中各软件之间的版本兼容和依赖问题。下一节会详细介绍它的使用方法。
目前Hadoop发行版本非常多,主流的有HDP和CDH。
HDP:(Hortonworks公司发行的版本,全称Hortonworks Data Platform),使用开源工具Ambari安装。
CDH:(Cloudera公司发行的版本,全称Cloudera Distribution Hadoop),使用Cloudera Manager工具安装。
有了管理工具使得大数据集群的部署和管理变得更加轻松,用户不用考虑过多细节(比如各个组件之间的版本兼容问题、服务状态监控等)。龙芯服务器已经移植了ambari工具和其管理的Hadoop生态中的大部分组件,本节就来介绍使用ambari来搭建大数据集群的过程。

什么是HADOOP

Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。
Apache Hadoop是一个可以利用计算机集群来完成海量数据的存储和计算的软件框架。它被设计成可以从单台服务到上千台机器的横向扩展,每台机器都可以提供存储和计算。而且利用在计算机集群之上部署高可用服务来检测和处理应用层的错误或失败,而不会依赖于硬件去实现高可用性。

1.HADOOP是apache旗下的一套开源软件平台
2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
3.HADOOP的核心组件有
A.HDFS(分布式文件系统)
B.YARN(运算资源调度系统)
C.MAPREDUCE(分布式运算编程框架)
广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

云计算

云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户

IaaS: Infrastructure-as-a-Service(基础设施即服务)
  第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来。
  但是现在有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。
  一些大的IaaS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.不过这些公司又都有自己的专长,比如Amazon和微软给你提供的不只是IaaS,他们还会将其计算能力出租给你来host你的网站。
PaaS: Platform-as-a-Service(平台即服务)
  第二层就是所谓的PaaS,某些时候也叫做中间件。你公司所有的开发都可以在这一层进行,节省了时间和资源。
  PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等。
  一些大的PaaS提供者有Google App Engine,Microsoft Azure,Force.com,Heroku,Engine Yard。最近兴起的公司有AppFog, Mendix 和 Standing Cloud
SaaS: Software-as-a-Service(软件即服务)
  第三层也就是所谓SaaS。这一层是和你的生活每天接触的一层,大多是通过网页浏览器来接入。任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS了。
  你消费的服务完全是从网页如Netflix, MOG, Google Apps, Box.net, Dropbox或者苹果的iCloud那里进入这些分类。尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分。
  一些用作商务的SaaS应用包括Citrix的GoToMeeting,Cisco的WebEx,Salesforce的CRM,ADP,Workday和SuccessFactors。

HDFS:分布式文件系统

  • 它是一个文件系统,用于存储文件,通过统一的命名空间(目录树)来定位文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data;
  • 它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;物理上是分块存储(block),块的大小可以配置,默认大小是128M;
  • 作用,为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务
  • 目录结构及文件分块信息(元数据)的管理由namenode节点承担
    namenode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器),负责管理整个文件系统的原数据
  • 文件的各个block的存储管理由datanode节点承担
    datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replication),负责管理用户的文件数据块
  • HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

YARN:

负责工作调度和集群资源分配管理的框架。YARN为Hadoop2.x新增模块,目的是为了解决功能耦合、使其上可以运行更多的分布式计算组件。MapReduce、Storm、Spark、Tez 等都通过YARN来调度并获取运算资源。

MAPREDUCE:分布式运算程序开发框架

mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序
负责海量数据集的离线并行运算,运行在YARN之上。MapReduce将一个算法抽象成Map和Reduce两个阶段进行处理,非常适合数据密集型计算。

HIVE:

基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
数据仓库工具,使用方便,功能丰富,基于MR延迟大
基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

HBASE:基于HADOOP的分布式海量数据库

离线分析和在线业务通吃
建立在Hadoop文件系统HDFS之上的分布式面向列的数据库。提供对数据的随机实时读/写访问,支持横向扩展。
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。

HBASE优势:
1)线性扩展,随着数据量增多可以通过节点扩展进行支撑
2)数据存储在hdfs上,备份机制健全
3)通过zookeeper协调查找数据,访问速度块。

ZOOKEEPER:分布式协调服务基础组件

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务
特点
A、zookeeper是为别的分布式程序服务的
B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:

  • 管理(存储,读取)用户程序提交的数据;
  • 为用户程序提供数据节点监听服务;

Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库

提供机器学习和数据挖掘的算法库,支持横向扩展。

Oozie:工作流调度框架

key-object形式的的对象存储模块。主要解决HDFS数据块过 多的问题,适合小文件的存储。

Sqoop:数据导入导出工具

Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。

Flume:日志数据采集框架

数据采集框架
它是一个基于流式数据的架构,简单而灵活。具有健壮性、容错机制、故障转移、恢复机制。

Pig:

一种处理hadoop数据流的轻量级脚本语言。

Submarine:

机器学习引擎系统。

Avro:

提供数据序列化的工具

Spark:

处理大数据的快速且通用计算引擎。但不同于MapReduce的是工作中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Tez:

是基于Hadoop YARN之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。

Storm用来实时计算数据流的工具

  • 用来实时计算源源不断产生的数据,如同流水线生产。
  • 是一个免费开源、分布式、高容错的实时计算系统。Storm让持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

Kafka是什么

  • 是一个开源消息系统
  • 是一个分布式消息队列:生产者、消费者的功能
  • Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
  • 无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性