大数据
大数据(Big Data)又称为巨量资料,指需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产,“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。
大数据的一些特点
大量(Volume) 存储大,计算量大
多样(Variety) 来源多,格式多
快速(Velocity) 增长速度快,处理速度要求快
价值(Value) 浪里淘沙却又弥足珍贵
数据源的来源
互联网企业:搜索引擎,SNS,微博,视频网站,电商网站
物联网,移动设备,终端传感器采集的各种信息,比如小米手环采集的运动信息,手机采集的位置信息
电信及互联网运营商
科研领域:天文望远镜拍摄的图像,视频数据,气象学中的卫星云图数据,基因生物学等
与大数据有关的一些技术
hadoop HDFS yarn spark
hadoop
hadoop生态圈包括以下各个组成部分:
HDFS:用于分布式文件存储,切分成块,多副本存于多台机器。
YARN:用于资源管理和调度,job scheduling & cluster mangment
Zookeeper:各个框架的管理和协调
Hive:使系统支持SQL语句
ooize:工作流
pig:使用脚本scripting离线
Flume:收集log
sqoop:DB中数据转向别处
原生的hadoop有诸多问题,如jar包冲突,难以管理,一般不直接用于生产环境。
所以一般使用CDH版的hadoop。
特点:可靠性—多副本存储+作业重新调度计算
可扩展—横向多机扩展+纵向单集群多节点
可建设在廉价机器上,并有可靠而完整的生态圈子
HDFS
特性:
分块- - -每块小,可以并行;每台机器存储量差不多,存储量均衡
冗余- - -冗余机制保障了可靠性
分为管理节点的namenode NN和存储数据的节点DataNode DN
NN:相应client请求,管理文件名,副本系数,block存放的DN
DN:存储block,向NN发送心跳以及block report
注:NN和DN可同台机器,但是不建议这样配置
副本因子决定了每个副本存放几份。
副本的存放策略:先在本台机器上存储,再在本机架上的DN上存储,最后存放在别的机架上的DN。
调用HDFS的方式有shell方式和调用java API接口的方式完成
HDFS读写文件流程:
特点总结:
冗余容错机制,廉价机器组建,处理流的数据访问(一次写入多次读取)适合存取大文件。但是不适合存储小文件,访问慢,元数据太多存取吃力。
YARN
Yet Another Resource Negotiator
产生的背景在于:原来版本的hadoop架构存在问题,单点压力过大,不易扩展,不支持别的计算框架(如spark)
效果:hadoop1.x只支持MapReduce框架
2.x之后有了YARN,可以支持多种计算框架
提升了资源利用率,多个集群可以化为1个共享集群使用,不用跨域。
SPARK
MapReduce缺陷:M和R过程都要有,只能一个接一个的计算。计算结果放在磁盘落地存储,IO开销过大。进程级别消费(Map和Reduce)
Spark的改进:程序编写简单,支持多种计算方式,计算结果放在内存,适合于迭代处理、流式处理、交互式处理。
spark是一个分布式的计算框架,最早来源于一篇论文。快在基于线程和内存计算。支持多种语言编写(Java/Scala/Python)有交互式命令行可以随机测试。可在多种环境下运行,访问多种数据源。
spark也有相应hadoop的BDAS生态圈
大数据技术面对的问题
海量数据如何存储
海量数据如何处理
海量数据如何BI分析
……
怎样解决海量数据的存储
传统方式:
- 使用NFS网络文件系统,文件分类存储。
- 但是当用户集中取用特定文件时会负载过大
解决的方案是采用Hadoop进行大量数据的存储问题
怎样解决海量数据的计算
- 一行一行读取? * 磁盘IO瓶颈导致效率太低速度太慢
- 一次性加载到内存? * 内存容量有限
- 中间结果全部缓存到hashmap中? * 内存容量有限
- 多线程处理? * 无法改变资源瓶颈的现实
解决思路一: - 纵向扩展,提高单机性能
- (增加内存,增强CPU,高性能磁盘)
- 优点:简单易行
- 缺点:成本过高
解决思路二: - 横向扩展,用多节点分布式集群处理
- (通过增加处理节点数量来提高处理能力)
- 核心思想:任务分摊,通过协作来实现单节点无法实现的任务
- 优点:
- 1.成本相对低
- 2.易于线性扩展(增加节点提高处理能力)
- 缺点:系统复杂度增加* 分布式计算的复杂性在哪里?
- 1.如何调度资源
- 2.任务如何监控
- 3.中间结果如何调度
- 4.系统如何容错
- 5.如何实现众多节点间的协调
- ……
大数据行业标准–Hadoop
Hadoop是开源的可运行于大规模集群上的分布式文件系统和运算处理的基础框架
擅长于在廉价机器搭建的集群上进行海量数据(结构化与非结构化)的存储与离线处理
Hadoop的由来
Apache的人参照Google著名论文实作而来
- GFS->HDFS
- MapReduce->Hadoop
- BigTable->HBase
Hadoop的生态体系
HDFS(Hadoop分布式文件系统)
Mapreduce(分布式计算框架)
Hive(基于Hadoop的数据仓库)
HBase(分布式数据库)
Zookeeper(分布式协作服务)
Sqoop(数据转换工具)
Pig(基于Hadoop的数据流系统)
Mahout(机器学习-数据挖掘算法库)
Flume(日志收集工具)
Hadoop的核心组件
核心组件1:海量存储–HDFS
HDFS,即Hadoop Distributed File System Hadoop分布式文件系统
特点: - 分布式易扩展
- 廉价易得
- 高吞吐量
- 高可靠性–副本机制(备份容灾)
总结: - 1.通过分布式集群来存取文件
- 2.会给客户端提供统一的目录结构和访问接口(命令行,Java API)
- 3.存储文件的时候,是将文件切成若干个文件块BLOCK存放到不同的主机(DATANODE)上,每个BLOCK都有多个副本(由每个BLOCK创建时所在的DATANODE负责统筹在其他DATANODE上建立副本)
- 4.集群中的节点会分为2类角色:
- NAMENODE—元数据节点(记录一个文件的各个BLOCK的实际存储地址(位于哪台主机的什么位置))
- DATANODE—数据节点(存放BLOCK)
核心组件2:分布式并行计算
组成:资源调度Yarn + 编程模型MapReduce
特点: - 大容量高并发
- 封装分布式实现细节
- 大大提高分析效率
Hadoop的学习路线
Linux基础(系统管理,文件操作,用户管理,进程管理,磁盘管理等)
Java
Hadoop核心组件
MapReduce或SPARK,STORM等编程模型(学完这部分即可上手做Hadoop开发)
Zookeeper-Sqoop-Flume等工具组件
NoSQL技术,HBase分布式数据库
数据分析挖掘,机器学习Mahout
在存储上,hdfs的分布式存储可以任意水平扩展,可以解决数据存储的难题。在计算上,从最初的MapReduce,把任务水平拆分,多台机器并行计算,再汇总结果;到基于Spark的内存计算,改造Mapreduce每次数据落盘以及编程方式的痛点。
有了存储和计算框架,周边就衍生出了很多管理、缓存相关的技术,比如:
yarn解决多租户资源调度的难题,
flume解决数据传输的难题,
sqoop解决分布式存储数据与传统DB数据之间的转换,
oozie解决了大数据计算任务的调度,
kafka提供了发布订阅机制的消息队列,
zookeeper可以帮助用户完成主备的选举,
hive在hdfs的基础上提供了数仓的功能,
hbase则基于hdfs实现列式数据库…
hdfs
hdfs是大数据系统的基础,它提供了基本的存储功能,由于底层数据的分布式存储,上层任务也可以利用数据的本地性进行分布式计算。hdfs思想上很简单,就是namenode负责数据存储位置的记录,datanode负责数据的存储。使用者client会先访问namenode询问数据存在哪,然后去datanode存储;写流程也基本类似,会先在namenode上询问写到哪,然后把数据存储到对应的datanode上。所以namenode作为整个系统的灵魂,一旦它挂掉了,整个系统也就无法使用了。在运维中,针对namenode的高可用变得十分关键。
752

被折叠的 条评论
为什么被折叠?



