Hadoop Ecosystem解决方案---数据仓库

个人总结的一套基于hadoop的海量数据挖掘的开源解决方案.

 

BI系统:
Pentaho

pentaho
是开源的BI系统中做得算顶尖的了.
提供的核心功能如下:

    报表功能: 可视化(client, web)的报表设计.
   
分析功能: 可以生成分析视图,作数据作动态分析.
    Dashboard
功能: 可以定制动态图表(image/flash)页面.
   
调度功能: 可对指定的任务进行crontab式调度. e.g.: 定期发送日//月报
   
工作流: 任意组合复杂的任务流程.
    ETL:
原生提供在各种数据库之间进行数据提取/转换/导入,可以自行扩展数据源.
    webservice
接口: 可由任意外部程序进行调用.可以很好的结合进SOA架构.

 

 

海量数据收集系统

    推荐我的开源项目Cloudscribe: http://code.google.com/p/cloudscribe.

    特点: CAP特征: CAP.

    zookeeper集成,统一的组管理功能.

 

 

数据仓库

Hive VS. Cloudbase VS. Pig

Pig:

    优点: 特定场景下使用性能较好.发展趋势良好

    缺点: 生僻的语法难以入手.

Cloudbase:

    缺点: 设计过于简单,性能一般.

    优点: 完全遵照SQL规范.比较容易上手.适合入门级使用.

Hive:

    优点: 设计较好.关注点分离到位.并在不断演化中.发展趋势良好

    缺点: 稍微有别正统SQL.

 

综合来讲,个人推荐Hive.

 

基础存储和计算框架

Hadoop MapReduce:

    如果选择Hive, 就基本绑定了Hadoop MapReduce.

 

Hadoop HDFS VS KFS

    KFS采用C++实现.HDFS采用Java,Hadoop整个生态系统结合紧密. 从效率上来讲, KFS要略胜一筹.

 

 

综合考虑,个人还是推荐HDFS.

 

Hadoop当前有3种版本:

    官方版本 & Yahoo版本 & Cloudera版本

 

个人推荐熟手研究并采用Cloudera的版本. Cloudera的版本提供了一些很好的拓展机制.并且也是开源的.

 

 

管理平台

    推荐cloudera Hadoop desktop.

    它提供了一个针对hadoop的统一管理平台. 可基于WEB进行文件系统操作,MapReduce Job管理,提交,浏览. 还有监控图表功能.

 

监控平台

    推荐采用Gangliahadoop进行监控.结合Nagios进行告警.

 

 

 

 

拓展话题

关于hadoop的部署:

    分为两种情况:

            即时架构:

                可采用捆绑VM的方式,例如ClouderaAmazon EC2制作的AMI. 此方案适合instant架构, 适合在租用计算的场景. 数据不是locality.

            稳定架构:

                固定的集群,locality计算.部署方案:

                    1). 可以针对不同配置采用带本地缓存+autofsNFS统一部署方案.

                    2). 软件分发.

            配置注意事项:

                namenode: RAID,多磁盘存储文件系统元信息.

                secondary namenodenamenode等同配置(尤其是内存).

                namenodejobtracker分离.

                datanode: 不带RAID, 双网卡: 一个用于内部数据传输,一个用于外部数据传输.

                tasktrackerdatanode配对.

 

 

hadoop的运营核心问题

    Part1: HDFS系统

        namenode:

            资源限制:

                由于文件系统元信息是全量存放在namenode.所以文件数量是有上限的.

                同时,某datanode意外失效后,其所有block都会在namenode中待备份队列中排队,也会临时占用很多内存.

 

            负载限制:

                随着集群规模的增长带给namenode更多负载:

                    1. clientnamenode之间的元信息操作;

                    2. namenodedatanode之间的通信.

                所以说,集群规模也是有上限的.  

       

            对于庞大的hadoop集群,重启恢复时间也会非常缓慢, 所以, 尽量存储较大的文件.

 

            解决方案:

                垂直扩展:

                    1. 配置更好的硬件,网络. 优化单机程序性能.(Google GFS也做过一段这样的努力).

                    2. 功能垂直分离: 通过功能垂直划分来构建多个专有master.(Google GFS同样做过类似方案)

                    垂直扩展总终究会面临极限.

                水平扩展:

                    通过在master前端引入一个Router, 来虚拟出一个更抽象的文件系统namespace, Router后端挂接多个Hadoop Cluster.(Google GFS也作过类似方案).

 

            namenode的单点失效(SPOF)问题:

                解决方案

                    namenode多元数据目录, 配备secondary namenode:

                        一致性: 延迟一致.

                        可靠性: 有少许丢失.

                        failover: 手工.

                        可用性: 故障恢复时间: 1 ~ 2小时.

                        性能: 无损失

                        复杂性:

                    Linux Heartbeat + TCP Bonding + DRBD网络RAID:

            一致性: 可调节,可完全一致.

            可靠性: 可调节,可完全一致.

            failover: 自动.

            可用性: 自动切换. 故障恢复时间: 0~30min

            性能: 有损

                        复杂性: 中等

                    Paxos分布式仲裁方案(hadoop + bookkeeper + zookeeper):

                        一致性: 理论完全一致.

            可靠性: 理论完全一致.

            failover: 自动.

            可用性: 自动切换. 故障恢复时间: 0~30min

            性能: 较少损

                        复杂性:

 

        DataNode:

            文件存储目录结构, IO Handler数量, ulimit设置等.

 

    Part 2: MapReduce

        意外非预期故障导致Job失效:

        磁盘满,只读磁盘等. 解决方式是采用0.21之后的health.check脚本进行定期检测和黑名单上报.

                Job恢复: 采用0.19之后原生提供的job recover机制.

        JobTracker单点问题:

        hadoop后续版本准备把JobTrackerzookeeper结合.

 

 

高级优化措施

    改造KFS,采用UDT传输协议.加速高带宽时延积下的网络传输.

转载于:https://www.cnblogs.com/OnlyXP/archive/2009/10/14/1583450.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django中间件及中间件实现的登录验证

1.定义 一个用来处理Django的请求和响应的框架级别的钩子(函数),相对比较轻量级,并且在全局上改变django的输入与输出(使用需谨慎,否则影响性能) 直白的说中间件就是帮助我们在视图函数执行之前…

默认方法:Java 8的无名英雄

几周前,我写了一个博客,说开发人员学习新语言是因为它们很酷。 我仍然坚持这个主张,因为关于Java 8的事情真的很酷。 毫无疑问,该节目的明星是添加了Lambdas以及将函数提升为一等变量,而我目前最喜欢的是默认方法。 这…

用phpstudy配置网站遇到的一些问题

第一次是配置在我本机,总是连不上数据库,后来查看到mysql.ini配置文件里面端口号有一个不是3306,更改之后就好了。 第二次是配置在笔记本电脑上,安装的时候比较顺利,也就遇到80端口被占用还有缺少VC运行库的问题&#…

二进制和十进制的相互转换

十进制转二进制: 方法一:y…… 25 * x 24 * x 23 * x 22 * x 21 * x 20 * x,其中y是十进制数字,x是0或1。 方法二: 二进制转十进制: 10100125 * 1 24 * 0 23 * 1 22 * 0 21 * 0 20 * 141 更多专业前端知…

Teradata Expression 12 在Windows 2003上Connection Reset 问题的解决方法

Teradata Expression 12 安装在Windows 2003上( 企业版 sp2),完全按照安装手册指导安装。安装过程一切顺利。完成后重启系统。通过Teradata Service Control启动一切正常。状态显示Teradata Running,打开session info ,可以看到一…

Hadoop开发工具简介

几天前, Apache Hadoop开发工具 (又名HDT )发布了。 这些项目旨在将插件引入eclipse中,以简化Hadoop平台上的开发。 该博客旨在概述HDT的一些重要功能。 单端点 该项目可以充当HDFS,Zookeeper和MR群集的单个端点。 您…

分布式理论之一:Paxos算法的通俗理解

https://www.cnblogs.com/esingchan/p/3917718.html转载于:https://www.cnblogs.com/JBLi/p/10732044.html

UML 面向对象分析与设计

面向对象方法以其超越传统方法的技术先进性越来越得到更多的重视,但技术的先进性不能完全代表一种新生事物的最后成功,还要看它是否能得到有效的推广。统一建模语言(UML)的产生为这种推广规定了一致的表示,诸多开发过程…

MVC 之var与dynamic

如果你用MVC写过程序,那么你应该知道ViewBag这个用于前后台的数据传递工具,那么你是否对ViewBag的用法感到过疑惑呢? ViewBag.Mode1lnew object();ViewBag.Model2new object();ViewBag.Model3new object();...... 我们知道,在使用…

使用Spring MVC时的常见错误

当我大约10年前开始我的职业生涯时,Struts MVC就是市场上的常态。 但是,多年来,我观察到Spring MVC逐渐流行起来。 鉴于Spring MVC与Spring容器的无缝集成以及它提供的灵活性和可扩展性,这对我来说并不奇怪。 从到目前为止的Spri…

CopyOnWriteArrayList

CopyOnWriteArrayList,add,引用赋值是原子操作吗? 引用类型的读写均是原子操作,https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.7,https://www.v2ex.com/t/280788 转载于:https://www.cnblogs…

Statement与PreparedStatement区别

1.性能区别 Statement statement conn.createStatement(); PreparedStatement preStatement conn.prepareStatement(sql); 执行的时候: ResultSet rSet statement.executeQuery(sql); ResultSet pSet preStatement.executeQuery(); 由上可以看出,PreparedState…

C++ operator操作符重载(++,--,-,+,())

C中,--操作符重载需要说明是(--)在操作数前面,还是在操作数后面,区别如下: 代码经过测试无误(起码我这里没问题^_^)Code1#include <iostream> 2#include <cstdlib> 3using namespace std; 4template<typename T> class A 5{ 6public: 7 A(): m_(0){ 8 …

CSS3-2

倒圆角 <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>Document</title></head><body> <h1>圆角边框 —— border-radius IE9</h1> <!-- border-radius 是复合属性…

JavaFX技巧9:请勿混用Swing / JavaFX

JavaFX团队非常努力地说服我们&#xff0c;因为可以将Swing内容嵌入JavaFX UI中&#xff0c;因此可以很容易地从Swing迁移到JavaFX。 我必须承认&#xff0c;我从来没有亲自尝试过&#xff0c;但是根据我从客户那里得到的反馈&#xff0c;我只能建议不要将Swing和JavaFX混合使用…

[ZJJOI2013]K大数查询 整体二分

[ZJJOI2013]K大数查询 链接 luogu 思路 整体二分。 代码 #include <bits/stdc.h> #define ll long long using namespace std; const ll _5e57; ll read() {ll x0,f1;char sgetchar();for(;s>9||s<0;sgetchar()) if(s-) f-1;for(;s>0&&s<9;sgetchar(…

javax.el.PropertyNotFoundException: Property [Xxxx] not found on type Xxx.xxx.xxxx.Xxxx]的解决办法...

当我将后台数据传递给jsp&#xff0c;用${requestScope.user.Id}取值时报错&#xff0c; 最后发现entity实体类的属性不能首字母大写然后再小写&#xff0c;例如 int Age&#xff1b;这个就不行&#xff0c;必须写成int age; 最后问题解决了 转载于:https://www.cnblogs.com/Th…

react学习目录

前面的话 React是如今热门的两大前端框架之一&#xff0c;它设计思路独特&#xff0c;性能卓越&#xff0c;逻辑简单&#xff0c;受到了大量开发者的喜爱。Vue的基本思路是基于HTML模板的扩展&#xff0c;而React的基本思路是基于JS语言的扩展。由于Vue的写法更接近于传统&…

JavaFX技巧13:学习Modena CSS文件

到目前为止&#xff0c;这是最简单&#xff0c;最短的提示。 如果要执行以下任何操作&#xff1a; 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形&#xff08;例如&#xff0c;滚动条箭头&#xff09; 弄清楚如何浏览标准控件的结构 确…

委托之异步

在 使用BackgroundWorker组件 一文中&#xff0c;阐述了在Winform编程中&#xff0c;使用BackgroundWorker组件实现异步调用&#xff0c;本文主要讲述利用委托实现异步。 以下描述摘抄于MSDN: 异步委托提供以异步方式调用同步方法的能力。 当同步调用委托时&#xff0c;Invoke(…