怎么在hive状态下创建数据库 数据仓库的含义,数据仓库和数据库的区别?
数据仓库的含义,数据仓库和数据库的区别?
一直都想收拾好下这块内容,要是是漫谈,就想起什么说什么吧。我始终是在互联网行业,就以互联网行业来说。先大致列帮一下忙互联网行业数据仓库、数据平台的用途:
重新整合公司所有业务数据,成立统一的数据中心;
能提供各种报表,有给高层的,有给各个业务的;
为网站运营提供给运营上的数据支持,那是按照数据,让自主运营及时清楚网站和产品的运营效果;
为各个业务可以提供线上或线下的数据支持,下一界公司统一的数据交换与需要提供平台;
分析用户行为数据,按照数据挖掘来会降低投入成本,增强耗去效果;比如广告代培生定向投放、用户个性化推荐等;
开发数据产品,直接间接为公司赢利;
规划和建设开放数据平台,刚刚开放公司数据;
。。。。。。
上面列出来的内容看上去和传统行业数据仓库用途应该差不多,因此都那些要求数据仓库/数据平台有挺好的的稳定性、可靠性;但在互联网行业,除开数据量大之外,越来越多的业务具体的要求时效性,甚至很多是要求实时动态的,另外,互联网行业的业务变化相当快,不可能像传统行业一样的,可以可以使用自顶往上的方法建立数据仓库,两全齐美,它没有要求新的业务马上能融合在一起数据仓库中来,老的下线的业务,能很方便些的从可以做到的数据仓库中登陆游戏;
不过,互联网行业的数据仓库是有所谓的敏捷数据仓库,不仅仅没有要求能快速的响应数据,也没有要求能飞速的响应业务;
建成耐力数据仓库,除开对架构技术上的要求之外,另外一个很有用的方面,是数据建模,要是一进来就寻思确立一套能兼容所有数据和业务的数据模型,的话又又回到比较传统数据仓库的建设上了,很容易满足对业务变化的快速响应。躲避这个,就像是先将核心的持久化的业务进行深多少建模(.例如:基于组件网站日志成立的网站统计分析模型和用户网页轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务象都按结构维度宽表的来建立数据模型。这块是后话。
整体架构下面的图是我们目前不使用的数据平台架构图,反正大多公司应该都不多:
逻辑上,像是也有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所完全不同,本质上的角色都还不错。
我们向下看:
数据采集数据采集层的任务那是把数据从各种数据源中再采集和存储文件到数据存储上,期间有可能会做一些简单的擦洗。
数据源的种类比较比较多:
网站日志:
以及互联网行业,网站日志占的份额最大,网站日志存储位置在多台网站日志服务器上,
象是在每台网站日志服务器上部署flumeagent,实时动态的收集网站日志并存储位置到HDFS上;
业务数据库:
业务数据库的种类确实是形态不同,有Mysql、Oracle、SqlServer等,这时候,我们不安的需要一种能从各种数据库中将数据实时同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过忙碌不堪,但是论数据量大小,都是需要启动后MapReduce来不能执行,并且不需要Hadoop集群的每台机器都能ftp连接业务数据库;防范此场景,淘宝开源的DataX,是个挺好的的解决方案(可参考文章《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以不基于条件DataX之上做二次开发,就能更加好的解决,我们目前可以使用的DataHub都是。
其实,Flume通过配置与开发,也可以实时自动的从数据库中歌词同步数据到HDFS
依附于Ftp/Http的数据源:
有可能一些合作伙伴提供的数据,是需要按照Ftp/Http等按时资源,DataX也是可以柯西-黎曼方程该需求
其他数据源:
诸如一些手工录入的数据,只要提供给一个接口或小程序,即可能够完成
数据存储与分析毋庸质疑,HDFS是大数据环境下数据仓库/数据平台最终极数据存储解决方案。
离线数据分析与计算,也就是对实时性要求不高的部分,在我看样子,Hive应该最先的选择,丰富地的数据类型、内置函数;压缩比的很高的ORC文件存储格式;非常方便的SQL意见,令Hive在实现结构化数据上的统计分析远远比MapReduce要高效稳定的多,一句SQL也可以完成的需求,开发完毕MR很有可能需要上百行代码;
肯定,建议使用Hadoop框架渐渐也需要提供了MapReduce接口,如果真的很给面子开发Java,或则对SQL不熟,那你也这个可以建议使用MapReduce来做分析与计算;Spark是这两年更加火的,在实践,它的性能真的比MapReduce好多了很多,并且和Hive、Yarn生克制化的越来越好,而,需要支持可以使用Spark和SparkSQL来做分析和计算。是因为早就有HadoopYarn,不使用Spark不过是的很很容易的,你不不能作战部署Spark集群,麻烦问下Spark On Yarn的相关文章,可相关参考:《Spark On Yarn系列文章》
实时计算部分,后面另外说。
数据共享这里的数据共享,不过指的是前面数据分析与计算后的结果贮存的地方,不过应该是关系型数据库和NOSQL数据库;
前面不使用Hive、MR、Spark、SparkSQL讲和可以计算的结果,我还是在HDFS上,但大部分业务和应用不可能就从HDFS上获取数据,这样就需要一个数据共享的地方,使得各业务和产品能比较方便的获取数据;和数据采集层到HDFS就反过来,这里不需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以不满足的条件。
至于,一些实时计算的结果数据很可能由实时计算模块再写入文件数据共享。
数据应用
业务产品
业务产品所在用的数据,巳经修真者的存在于数据共享层,他们真接从数据共享层访问表就行;
报表
同业务产品,报表所不使用的数据,像是也早统计上报好的,存放于数据共享层;
即席查询
即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至连是部门老大,他们也有即席查询数据的需求;
这种即席网上查询通常是现有的报表和数据共享层的数据并肯定不能柯西-黎曼方程他们的需求,要从数据存储层直接可以查询。
即席查询好象是是从SQL成功,大的的难度在于响应速度上,在用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,但能非常好的与Hive兼容性问题。
其实,你也也可以可以使用Impala,如果没有不在乎平台中再多一个框架的话。
OLAP
目前,很多的OLAP工具又不能很好的支持从HDFS上然后查看数据,全是将必须的数据同步到关系型数据库中做OLAP,但假如数据量庞大无比的话,关系型数据库看来再不行;
这时候,需要做你所选的开发,从HDFS或者HBase中资源数据,完成OLAP的功能;
比如:依据用户在界面选择的若是的维度和指标,按照开发接口,从HBase中获取数据来展示更多。
其它数据接口
这种接口有通用的,有定做的。比如说:一个从Redis中资源用户属性的接口是通用的,所有的业务都这个可以动态链接库这个接口来声望兑换用户属性。
实时计算现在业务对数据仓库实时性的需求更多,例如:动态实时的了解网站的横向流量;实时自动的获取一个广告的曝光和点击;在海量数据下,凭借民间数据库和传统基于方法都差不多成功不了,不需要的是一种分布式的、高吞吐量的、显示延时低的、高可靠的实时计算框架;Storm在这块是比较能成熟了,但我选择SparkStreaming,原因很简单,并不想多化入一个框架到平台中,另外,SparkStreaming比Storm延时性高那你一点点,那对此我们的需要可以忽略。
我们目前在用SparkStreaming基于了实时地的网站流量统计、实时自动的广告效果统计两块儿功能。
做法也很简单点,由Flume在前端日志服务器上收集网站日志和广告日志,实时自动的发送中给SparkStreaming,由SparkStreaming能完成统计,将数据存储至Redis,业务是从ftp访问Redis实时动态查看。
任务调度与监控在数据仓库/数据平台中,有数不清太多的程序和任务,诸如:数据采集任务、数据同步任务、数据分析任务等;
这些任务之外有定时调度,还存在的很奇怪的任务依恋关系,比如说:数据分析任务可以等相应的数据采集委托任务后才能就开始;快速同步任务需要等数据分析任务失败后才能又开始;这就必须一个太完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,你们负责调度和监控所有任务的分配与运行。
前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。
学习总结在我看样子架构并不是技术就会越新越好,只不过是在可以不能够满足需求的情况下,越简单点越稳定越好。目前在我们的数据平台中,变更土地性质大量的是关注业务,而不是技术,他们把业务和需求弄明白了,大部分只是需要做很简单SQL开发,然后把配置到调度系统就可以了,如果任务异常,会送来告警。这样,这个可以使更多的资源踏实专注于业务之上。
Hive数据库是哪个公司开发的?
Hive是由Facebook开源软件主要用于解决海量藏书结构化日志的数据统计工具。在普遍的大数据应用当中,Hive是作为Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供给类SQL查询功能。Hive的本质是将HQL转化成成MapReduce程序。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。