hadoop生态圈中hive模块100问

一、嘛是数据仓库和数据库的区别?

hive的是一个数据仓库,数据仓库是面向主题的,偏向于做OLAP(online-Analytical-Processing),只要工作是方便给决策人员提供报表,来做决策分析。而传统关系型数据库比如MySQL是面向应用,主要工作是在指定的隔离机制中做增删改查的,偏向OLTP(Online-Transation-Processing)联机事务处理,同样二者数据存储结构也不同,OLAP存储历史的、聚集的、多维集成的数据,DB大小可在100G到TB级别(这也是绝大数数据仓库使用HDFS做底层存储的原因!!而不是windows的NTFS),OLTP是当前的最新的、二位分立的数据,DB大小在100M到GB级别。

二、 为什么要一般会把hive的元数据(版本分区等等信息)存在mysql中?

想说的是,hive只是个工具,包括它的数据分析,依赖于mapreduce,它的数据管理,依赖于外部系统,这一步其实不是必须的,因为Hive默认的metadata(元数据)是存储在Derby里面的但是有一个弊端就是同一时间只能有一个Hive实例访问,这适合做开发程序时做本地测试。

Hive提供了增强配置,可将数据库替换成mysql等关系型数据库,将存储数据独立出来在多个服务示例之间共享。

由此可见,你在哪路径下,执行hive指令,就在哪路径下生成metastore_db。建一套数据库文件,这样是极其不合适的,公司里每个人若不一样,则会显得非常混杂。导致员工之间无法公用交流。

  ***为此,需公用的,mysql。***

  这也是为什么,在安装hive时,也需要配置mysql了,怪就怪在Derby太轻量无法执行并行操作

三、把其他数据源,比如数据库中的数据导入hive是用sqoop呢还是hive呢(当然在落地Hive之前要做ETL)?

sqoop简介:Apache Sqoop is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.也就是说sqoop是一种工具,用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据。

我们知道hive的作用就是把数据映射成数据仓库的一张表,提供类SQL的查询语言然后做数据分析,但是如果涉及到比较复杂的操作,就需要编写UDF函数,可以是可以,但是比较麻烦,需要自己编程实现。但是sqoop本身就是一个工具,使用它将数据库的数据导入数据仓库比较方便。

未完待续!thanks for reading

猜你喜欢

转载自blog.csdn.net/SmartShylyBoy/article/details/82591862