我现在是一所大型州立大学的高级CS专业,并且正在其数据科学部门的一家大型上市技术公司担任实习生。我在学校学习过有关数据结构和算法(地图,树,图,排序算法,Seaching算法,MapReduce等)的知识,并且在一些个人项目中具有MySQL和SQL查询的经验。
我的实习项目是创建一个仪表板,以显示从Hadoop数据库收集的分析数据。我正在努力了解这些数据的结构和查询方式。我非常确定Hadoop中的所有数据都来自运行其平台的生产Oracle Relational DB。 我想我的核心问题是,为什么需要Hadoop和分布式处理才能从已经具有结构化格式的数据库中收集分析数据?数据存储在Hadoop中是什么样的?是否存在像MySQL这样的表或像MongoDB这样的JSON文档??我将通过Druid查询Hadoop,但是我不确定该数据库中的内容。
我一直与之合作的工程师非常擅长向我解释事情,尤其是有关其具体实施的问题,但是他们只有一定的时间专用于帮助实习生,我想主动学习其中一些是我自己的。
作为一个旁注,与一个拥有数百万活跃用户和PB级敏感信息的公司的项目相比,在学校项目中进行的工作有多么令人难以置信。
答案 0 :(得分:0)
Hadoop不是数据库,因此它没有表或任何关系或文档的继承结构。
例如,您可以使用Hive,Presto,SparkSQL在各种格式的存储文件(例如CSV,JSON,Avro,Parquet等)上放置架构,但是这些都是从Hadoop FileSystem读取的工具,而不是一部分Hadoop本身。该级别的表和数据库仅是元数据,并不完全代表原始数据的样子
Hadoop仅能存储比Oracle数据库更多的数据,并且是免费的,但是为了进行快速分析,建议在Hadoop框架内以分布式方式计算统计信息,然后再加载回索引系统(例如Druid)或只是任何实际的数据库
答案 1 :(得分:0)
我明白你的问题。基本上,您试图了解Hadoop中的数据是什么以及如何存在,为什么不显示传统数据库,而是为什么不显示Hadoop中传统数据库中的数据。
关于Hadoop的几点要点,
1。。Hadoop不仅用于结构化数据,还可以用于半结构化和非结构化数据。主要用于数据分析。
2。。Hadoop是一个框架,具有不同的组件。用于从HDFS查询结构化数据的主要组件是Hive和Impala。
3。就结构化数据而言,Hadoop具有HDFS和Hive Metastore,用于以结构化方式存储数据。 HDFS仅存储数据文件(例如文本,avro,镶木地板,json等),而不存储元数据(例如列名,行数等)。另一方面,Hive Metastore基本上是传统数据库,例如MySQL,Postgres等,并且仅携带元数据。因此metastore知道表的数据存储在HDFS中的位置,即HDFS文件路径。 有关这一点的更多信息-您可以阅读我的其中一篇帖子HERE
4。。为什么选择Hadoop? Hadoop由于具有分布式特性,因此旨在存储大量具有高可用性的数据。此外,Hadoop的目的是一次写入,多次读取-意味着它更多地用于分析和报告目的,而不是用于事务目的,例如如何使用传统数据库。更重要的是,它是开源的!
希望这有助于您获得基准!