【问题标题】:Big Data Storage and Queries vs Traditional Relational/Non-Relational DBs大数据存储和查询与传统关系/非关系数据库
【发布时间】:2019-06-01 20:54:28
【问题描述】:

我是一所大型州立大学的一名正在升职的高级 CS 专业学生,并且在一家大型上市技术公司的数据科学部门担任实习生。我在学校学习过数据结构和算法(地图、树、图、排序算法、搜索算法、MapReduce 等),并且通过个人项目使用 MySQL 和 SQL 查询获得了一些经验。

我的实习项目是创建一个仪表板,用于显示从 Hadoop 数据库收集的分析数据。我很难理解这些数据的结构和查询方式。我很确定 Hadoop 中的所有数据都来自运行其平台的生产 Oracle 关系数据库。 我想我的核心问题是为什么需要 Hadoop 和分布式处理来从已经采用结构化格式的数据库中收集分析?存储在 Hadoop 中的数据是什么样的?是否有 MySQL 之类的表或 MongoDB 之类的 JSON 文档? 我将通过 Druid 查询 Hadoop,但我不确定这个数据库中有什么。

和我一起工作的工程师都非常擅长向我解释事情,尤其是关于他们具体实施的问题,但他们只有一定的时间来帮助实习生,我想主动学习其中一些是我自己的。

作为旁注,令人难以置信的是,它在学校项目上的工作与在拥有数百万活跃用户和数 PB 敏感信息的公司的项目有多么不同。

【问题讨论】:

    标签: hadoop bigdata


    【解决方案1】:

    Hadoop 不是数据库,因此它没有表之类的东西,也没有关系或文档的任何继承结构。

    您可以使用 Hive、Presto、SparkSQL 等各种格式的存储文件(例如 CSV、JSON、Avro、Parquet 等)放置架构,但这些都是从 Hadoop 文件系统读取的工具,而不是Hadoop 本身。该级别的表和数据库只是元数据,不能完全代表原始数据的样子

    Hadoop 能够存储比 Oracle 数据库更多的数据,而且是免费的,但是为了快速分析,建议在 Hadoop 框架内以分布式方式计算统计数据,然后加载回索引系统(例如 Druid)或只是任何实际的数据库

    【讨论】:

      【解决方案2】:

      我明白你的问题。基本上,您试图了解 Hadoop 中的数据是什么以及如何存在,以及为什么不是传统数据库,而是来自 Hadoop 中传统数据库的数据。

      关于 Hadoop 的几个要点,

      1. Hadoop 不仅适用于结构化数据,还可以用于半结构化和非结构化数据。主要用于数据分析。

      2. Hadoop 是一个框架,其中包含不同的组件。从 HDFS 查询结构化数据的主要使用组件是 Hive 和 Impala。

      3. 就结构化数据而言,Hadoop 具有 HDFS 和 Hive Metastore 用于以结构化方式存储数据。 HDFS 只存储数据文件(例如 text、avro、parquet、json 等)而不存储元数据(例如列名、行数等)。另一方面,Hive Metastore 基本上是传统的数据库,如 MySQL、Postgres 等,它只承载元数据。因此 Metastore 知道表的数据存储在 HDFS 中的位置,即 HDFS 文件路径。 有关这一点的更多信息 - 您可以阅读我的一篇帖子 HERE

      4. 为什么选择 Hadoop?由于其分布式特性,Hadoop 旨在以高可用性存储大量数据。此外,Hadoop 意味着一次写入和多次读取——这意味着它更多地用于分析和报告目的,而不是像使用传统数据库那样用于事务目的。更重要的是,它是开源的!

      希望这可以帮助您获得基线!

      【讨论】:

        猜你喜欢
        • 2011-06-12
        • 2010-09-08
        • 1970-01-01
        • 2010-12-02
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        相关资源
        最近更新 更多