实战为王 【CSDN在线培训】梁堰波解SQL-on-Hadoop疑难杂症

u013424982 2014-03-13 08:52:33
加精
CSDN在线培训:用SQL-on-Hadoop构建互联网数据仓库与商务智能系统

梁堰波
美团网 资深数据开发与挖掘工程师
嘉宾介绍:北航计算机硕士,曾工作于VMware、百度、法国电信研发中心等机构,现于美团网从事数据开发与挖掘工作,具备丰富的大数据领域工作经验。在Hadoop/HBase/Impala和数据挖掘方面有丰富的实战经验,曾发表过多篇技术文章!

由于时间有限,讲师无法回答所有问题,网友可以在帖子里提问,讲师将会对您的提问做回复!

PS:部分问题以及讲师QA分享。详情点击:http://www.csdn.net/article/2014-03-17/2818789-SQL-on-Hadoop

Q:在Impala上面写的是标准SQL吗?
我们现在包括Hive,Impala等我们现在使用的SQL-on-Hadoop产品使用的都不是非常标准的SQL,我们都知道要一个分布式的计算环境中实现标准化SQL,就需要一个新的分布式的搜索引擎。这个我们知道像Greenplum、group by对标准SQL支持的挺好,像Impala对标准SQL的支持就不是很好。其实现在使用Impala的机构主要是互联网,因为互联网企业会有很多IT部门的人员,他们会基于Impala做一些适合自己业务上的开发,此时他肯能不会用标准化的SQL,因为他们注重的是性能。
Impala目前支持大部分ANSI SQL 92标准,暂不支持subquery, exist和set operation等。不过这个已经在Impala的roadmap里面了,预计会在Impala 2.0里面支持。像subquery这样的需求可以通过把SQL改成用join重写来实现。

Q:在Hive和Impala同时使用的情况下,Impala好像不能实时得到Hive-Metasotre的更新。得重启Impala-server才行,有其他解决方式吗?
这个问题在最新的Impala 1.2.3版本里面已经修正了。以前需要refresh或者invalid metaData这样的显式命令去update metaData,新的版本里面已经多了一个catalogd服务来负责把元数据的更新推送到每个节点。
Q:请教一个问题,现在有大量的日志存放在了HDFS中,这些日志的解释需要用到一些维度表,存放在MySQL中,请问应该如何写map reduce程序去做解析这些日志。

这个是一个典型的SQL on Hadoop使用场景,我在PPT里面也提到了解决方案。一般来说就是通过Sqoop任务把MySQL里面的表格导入HDFS上,然后在HDFS上和log进行各种查询操作。可以使用mapreduce也可以使用Hive,推荐使用Hive,因为你从MySQL里面导入的数据是结构化的。

Q:在实际环境中,一般公司对于大量的历史数据会继续存留在HDFS中,还是会选择其他底成本的存档方式
据我目前的了解,目前很多历史数据还是存储在HDFS中的,也有公司采用磁带存储作为备份。HDFS跟EMC或者NetApp的备份存储产品相比就是比较低廉的。由于HDFS我们一般把数据存储成三个replica,所以对于备份存储会有些资源浪费。可以考虑的措施有HDFS arcHive或者使用类似Erasure Code的思路来节约存储资源。在Facebook和淘宝都使用了Erasure Code的思路存储大量的不经常使用的历史数据。

Q:请问国内目前有哪些企业正在使用Impala呢?使用场景是什么呢?
目前我了解国内阿里巴巴和百度都在使用Impala。具体的使用场景可以参考我和阿里的杨卓荦同学合作的一篇文章《基于Impala构建实时大数据查询系统实践》,那里有比较详细的介绍。

Q:能谈谈您对Data scientist的理解吗?到底什么样的人能称作Data scientist?它和Data engineer,还有做Data mining / machine learning的人有区别吗
推荐你看一本非常短的书<<Building Data Science Team>>。我的理解Data scientist就是具备使用数据化的方法和思路来解决业务问题,会用数学和统计的方法并用计算机编程来实现。Data mining和machine learning基本上都是Data scientist必须掌握的一些基本功。

Q:flume收集的日志随着时间的推移日志文件数越来越多,有什么方法比如1天才产生一个文件
flume收集的日志到HDFS上,然后按照你自己指定的逻辑进行ETL操作。在flume agent上的存储都是临时存储,所以产生数量多少的文件都是没有问题的。

Q:目前在互联网公司的主要具体的应用场景?比如收集nginx日志能具体做些什么应用?
比如用户浏览了那些网页、商品,在哪些频道停留的时间比较长等等用户行为的分析。日志是一切用户分析的基础。

Q:请问美团网内部Hbase上面是做OLAP吗,OLTP的话还是用分布式MySQL吗
美团内部Hbase是做online storage的,这个是用场景和典型互联网公司是一样的。目前是用Hbase做OLAP的公司不是特别多,而且据我所知效果也都不是特别号。目前OLTP领域还是Oracle和MySQL的天下。

Q:传统的Datawarehouse 针对不同的应用,利用不同的layer开发了OLAP,mining等实现快速查询,Hadoop针对此能支持实时查询吗
针对不同应用,领用不同的layer这个在Hadoop Ecosystem同样没有问题,因为这个是数据仓库架构和数据仓库逻辑设计的问题,更多的是应该考虑公司的业务逻辑,跟使用什么样的平台不是紧耦合的。Hadoop之上有很多实时查询的工具Tez/Impala/Shark等。

Q:real-time的场景,Shark和Impala对比怎么样?好像用Shark的更多
这个据我说知没有这个结论。现在各个公司都处在初步尝试阶段,Impala和Shark各有各的优势和缺点。

Q:Impala和阿里的mdrill优缺点是什么?
阿里的mdrill我没有用过,只是看过一些资料,我谈下个人观点。Impala定位是交互式查询。而mdrill是“高维+实时”查询,mdrill查询的底层数据会做很多预处理工作,所以数据的动态性不如Impala。Mdrill能够查询的维度会非常非常高。

Q:对于数据仓库,要做上下钻等,Impala中表要如何设计,以满足需求?是针对所有的可能维度组合都做事实表吗?还是只有最小粒度的表的存储,如果有聚合结果需求,则在查询是现算?
这个逻辑同样是数据仓库设计的问题,根据你的业务逻辑和访问模式来制定,跟使用什么样的平台关系不是特别紧密。所有可能维度组合做事实表显然是不合适的,还是我们经常说的balance

Q:用MAPREDUCE做数据清洗时,维表数据如何加载或存储?是放在内存中吗,如果放在内存中,是否有共享内存,还是要每台机器都生成缓存
这个问题非常好。HDFS 2.3开始支持的新特性会允许上层应用显式指定把某些数据放到哪台机器的内存中,这个特性就是专门给Hive/Hbase/Impala这样的应用准备的。不过目前Hive/Hbase/Impala还不支持这个功能,如果自己写mapreduce程序可以显式指定把维度表加载到内存中。

Q:现在我们的产品把稳定性的要求放在第一位,不能老是异常、宕机,请问什么平台是最稳定的?Hortonworks?CDH?还是其他的平台?
说实话哪个都不是特别稳定,但是从我的经验来看CDH应该是相对好点的,而且CDH支持的功能会比较完善,对bug的反应速度会快点。

Q:我在一个小研究所,我们那有各种服务器,都是小型机,IBM,HP,联想,戴尔的都有,如果搞这个软硬件架构,可行度如何,在技术层面,包括人力技术投入和其他硬件投入等;这样弄完后是不是可以更好的将上面已有的各种网站整合呢;这个软件架构适合多种大小网站和系统的集成么
这个问题是很多传统企业迁移到Hadoop这样的新型平台都会遇到的问题。如果单纯整合既有设备,那么应该问题不大。其实问题更大的是Hadoop这样的平台是否能够解决你们的问题。Hadoop是个大数据存储和分析平台,不是网站后台。。。

Q:请问楼主是否听说过Data Vault数据仓库建模方法。去年,我们研究并在RDBMS上尝试使用了这种建模思想。我们的理解是:DV建模方法会将历史上所有发生过的信息不重复地保存在数据仓库内,必要的时候通过数据加载时间(Load Date)或者数据生效时间(StartTime)、数据时效时间(EndTime)区分相同业务在不同时间点上的情况。

理论上说DV建模方法很适合MR/Impala这种分布式的架构,但是,如何高效地、规范化地在Hadoop上实现数据加载、数据去重、数据生命期计算(数据生效/时效时间)一直困扰着我们。如果每次更新大量数据,我们可以接受全量数据操作。但是如果只是更新少量数据,有觉得以上方法开销甚大。请问楼主是否能够分享一些这方面的经验?

这个问题很好,但是也是涉及到具体的业务问题了。关于全量更新和增量更新的问题,当你的数据不是很大的时候全量更新简单高效;当你的数据很大之后,就需要拆解成增量更新,Load Date/Start Time/End Time这个思路是我们常见的一种解决思路,具体到如何拆解实现增量更新要看你的业务模式是什么样的。

Q:搭SQL-on-Hadoop环境是不是很复杂?最少需要多少台服务器?有没有比较简单的方法就能搭起SQL-on-Hadoop环境?主要我对linux不是很熟悉,

最简单的思路就是使用Cloudera公司提供的CDH和Cloudera Manager来完成一套Hadoop系统的快速构建,可以参考cloudera公司的资料。

错过互联网浪潮,错过电商竞争时代并不可惜,因为我们赶上了云计算和大数据的兴起。面对巨大的云计算与大数据技术人才缺口,互联网企业与传统行业企业正在不 惜代价地争夺资源:股票激励、薪资翻番、最高60个月年终奖,已经在过去轮番上演。有限的奖励之外,还有无限的以技术实力为资本的创业潮正在兴起。技术精英们, 已经迎来难得的转型与增值机会!快来关注CSDN在线培训吧!
...全文
3194 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
u013424982 2014-03-19
  • 打赏
  • 举报
回复
引用 36 楼 renshaoyun 的回复:
好几天了,没见楼主来回复!
这个不是统一回复了么亲。
Legend-Hu 2014-03-19
  • 打赏
  • 举报
回复
好几天了,没见楼主来回复!
u013424982 2014-03-19
  • 打赏
  • 举报
回复
引用 20 楼 zc040921 的回复:
您好,请问有相关的资料链接,视频链接么?最近公司正在研究这方面的东西,本人也比较感兴趣,求大神的分享!!
这个报名后才会分享出来的。
u013424982 2014-03-19
  • 打赏
  • 举报
回复
引用 2 楼 david386 的回复:
有如下两个问题,希望能得到答复,谢谢: 1.对于数据仓库,要做上下钻等,Impala中表要如何设计,以满足需求?是针对所有的可能维度组合都做事实表吗?还是只有最小粒度的表的存储,如果有聚合结果需求,则在查询是现算? 2.用MAPREDUCE做数据清洗时,维表数据如何加载或存储?是放在内存中吗,如果放在内存中,是否有共享内存,还是要每台机器都生成缓存
问题已解决,见一楼。
hyperbolaa 2014-03-19
  • 打赏
  • 举报
回复
标题能不用红色的字体吗?
hyperbolaa 2014-03-19
  • 打赏
  • 举报
回复
asdf asdfasdf
sichuanwww 2014-03-18
  • 打赏
  • 举报
回复
湘平 2014-03-17
  • 打赏
  • 举报
回复
学习下,学习下,学习下
u014157571 2014-03-16
  • 打赏
  • 举报
回复
收藏了 感谢楼主
wangluoyinpan 2014-03-16
  • 打赏
  • 举报
回复
顶上真诚的一贴
卓宇电脑 2014-03-16
  • 打赏
  • 举报
回复
有用,收藏了
hugh_z 2014-03-15
  • 打赏
  • 举报
回复
learning
nettman 2014-03-15
  • 打赏
  • 举报
回复
搬板凳学习
MootShao 2014-03-15
  • 打赏
  • 举报
回复
您好,请问有相关的资料链接,视频链接么?最近公司正在研究这方面的东西,本人也比较感兴趣,求大神的分享!!
sanguomi 2014-03-15
  • 打赏
  • 举报
回复
原始数据 表A ID url 表B ID key 这两张表的数据都会上T 想要的做的是表B的key在表A中出现过的记录 现在表结构不太好定义, 另外想要做的是实时查询 请问LZ有什么好的思路没
sanguomi 2014-03-15
  • 打赏
  • 举报
回复
想问下LZ, HBase存储上TB级的数据,该如何设计表机构好点,需要支持join 和模糊查询的功能 另外就是如何避免全表扫描, 谢谢啦
qiutai2008 2014-03-15
  • 打赏
  • 举报
回复
我是来围观的啊,
ooahaoo123 2014-03-15
  • 打赏
  • 举报
回复
支持一下
line_us 2014-03-14
  • 打赏
  • 举报
回复
构建互联网数据仓库与商务智能系统
Legend-Hu 2014-03-14
  • 打赏
  • 举报
回复
我是来围观的!
加载更多回复(12)

679

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧