• Hadoop编程——第一章:大数据概念


    什么是大数据?
    Hadoop生态系统工具
    分布式与集群

    一、大数据简介

    指“无法由现有软件工具提取,存储,搜索,共享,分析和处理的庞大而复杂的数据集”。

    (一)大数据的特征

    行业通常使用五个V总结大数据的特征如下:
    Volume(数据体量大)

    • 采集数据量大
    • 存储数据量大
    • 计算数据量大
    • TB、PB级别起步

    Variety(种类、来源多样化)

    • 种类:结构化、半结构化、非结构化
    • 来源:日志文本、图片、音频、视频等

    Value(低价值密度)

    • 信息海量但是价值密度低
    • 深度复杂的挖掘分析需要机器学习参与

    Velocity(速度快)

    • 数据增长速度快
    • 获取数据速度快
    • 数据处理速度快

    Veracity(数据的质量)

    • 数据的准确性
    • 数据的可信赖度

    二、Hadoop生态系统工具

    (一)Hadoop

    • Hadoop是由Apache Foundation开发的分布式系统基础结构。 Doug Cutting受到Google
      Lab开发的Map/Reduce和Google File System(GFS)的启发。

    • Hadoop的核心体系结构是MapReduce编程模型和HDFS分布式文件系 统。

    • MapReduce框架可以将应用程序分解为许多并行计算指令,从而在大量计算节点上运行非常大的数据集

    • 使用“分而治之”的思想,Map用于分割大数据,Reduce用于合并Map计算的结果。

    • HDFS(Hadoop Distributed File System)分布式文件系统为海量数据和大文件提供存储服务。

    • 将大文件(大于64M/128M)拆分为块(每个块64M或者128M),多节点存放。

    • 具有高吞吐量、高容错性

    (二)HBASE

    • HBASE是apache的开源KV(Key-Value)数据库。它基于HDFS,为数据库系统提供了高可靠性,高性能,列存储,可伸缩性和实时读写功能。 它介于NoSQL和RDBMS之间。
    • 只能通过行键和行键范围检索数据。 它仅支持单行事务(可通过配置单元支持来实现多表联接和其他复杂操作)。它主要用于存储非结构化和半结构化的松散数据。
    • 与Hadoop一样,Hbase目标主要依靠水平扩展来通过增加廉价的商用服务器的数量来增加计算和存储容量。

    Hbase中表的特征

    • : 一个表可以有上亿行,上百万列

    • 面向列: 面向列(族)的存储和权限控制,列(族)独立检索

    • 稀疏: 对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏

    (三)HIVE

    Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:

    • 它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL)

    • HIVE可以存储、查询和分析存储在HDFS(或者HBase)中的大规模数据的机制;

    • 通过将SQL转化为MapReduce作业在Hadoop上运行,进行海量数据的统计分析处理

    • Hive定义了一种类似SQL的查询语言,被称为HQL,对于熟悉SQL的用户可以直接利用Hive来查询数据。

    • 这个语言也允许熟悉 MapReduce
      开发者们开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作

    • Hive可以允许用户编写自己定义的函数UDF。

    Hive的缺点:

    • Hive目前还不支持事务;

    • 不能对表数据进行修改(不能更新、删除、插入;只能通过文件追加数据、重新导入数据)

    • 查询速度比较慢

    (四)STORM

    Apache Storm是一个免费和开源的分布式实时计算系统,它简化了流数据的可靠处理。
    Storm具有许多应用场景,包括实时数据分析,在线学习,连续计算,分布式RPC,ETL等。
    Storm速度非常快,并且测试在单个节点上每秒执行一百万个组处理。

    特征

    • 易于扩展
    • 可以保证每条信息的处理.
    • 集群管理很简单。
    • 容错功能
    • 低延迟.

    (五)ZooKeeper

    • Zookeeper是一种高性能,分布式,开源的分布式应用程序协调服务。 它是Storm和Hbase的重要组成部分。
    • 它是一种提供分布式应用程序的软件,可以基于该应用程序实施更高级的服务,例如同步,配置管理,群集管理和名称空间。
    • 使用文件系统目录树作为数据模型,它易于编程。 该服务器在Java上运行,提供Java和C的客户端API。
    • Zookeeper服务本身形成一个集群(2n + 1个服务允许n个故障),并且它具有两个角色。
    • 一个是领导者,负责编写服务和数据同步。
    • 另一个是跟随者,它提供阅读服务。 当领导者失败时,它将重新选举跟随者中的新领导者。

    特征

    • 顺序一致性
    • 原子性
    • 均匀度
    • 可靠性
    • 及时性

    使用场景

    • 数据发布与订阅
    • 名称空间服务
    • 分布式通知/协调
    • 集群管理

    (六)Sqoop

    • Sqoop是Apache的顶级项目,它允许用户将关系数据库中的数据提取到Hadoop中以进行进一步处理
    • 获得分析结果后,Sqoop还可以将分析结果导入回数据库,以供其他客户端使用。
    • 导入过程运行一个MapReduce作业,该作业连接到MySQL数据库并从表中读取数据。默认情况下,该作业运行四个Map任务以加快导入过程。
    • 每个任务将其导入的数据写入一个单独的文件,但是所有四个文件都在同一目录中。

    三、分布式与集群

    分布式、集群是两个不同的概念,但口语中经常混淆二者。

    (一)分布式

    多台机器,每台机器上部署不同组件

    (二)集群

    多台机器,每台机器上部署不同组件

    (三)分布式、集群的共同点

    都是多台机器(服务器)组成的;
    因此口语中混淆两者概念的时候都是∶相对于单机来说的。

    (四)数据大爆炸,海量数据处理场景面临问题

    1、如何存储?
    单机存储有瓶颈
    多台机器分布式存储

    2、如何计算?
    单机计算能力有限
    多台机器分布式计算

  • 相关阅读:
    企业安全—培训
    idea启动之java.net.BindException: Address already in use: bind
    qt自定义可删除标签控件、自适应布局
    嵌入式岗位Makefile常见面试题(1)
    vxe-table编辑单元格动态插槽slot的使用
    LeetCode LCR 103. 零钱兑换【完全背包,恰好装满背包的最小问题】中等
    Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突
    react 使用useRoutes遇到的问题
    COMSOL Multiphysics多物理场仿真应用”电化学
    【云原生】DevOps(七):Kubernetes编排工具
  • 原文地址:https://blog.csdn.net/weixin_45348240/article/details/125447899