最近Hue+Solr 方案原型验证有了一些进展。正好也收到了Google的大数据专家Sam的来件询问进展,我答复如下:

Sam,
你好。
已经把Kafka+flume+solr的实时索引搭建起来了,
现在用实时事件统计的场景在测试数据(当前方案为kafka storm mysql),solr现在数据量约为每天八万条记录,70M数据。
下面的页面提供了hue访问solr的地址,请通过页面最下面的超链接看下我们做的demo。
(链接)
遇到的问题:
.我们现在用的solr 4.10.3不支持修改时区,即只能把传进来的时间识别成UTC时区。solr5版本有修复这个问题,我们现在通过添加一个timeInUTC的字段解决。
.hue不支持显示中文字段名,而标签字段是带中文的。
.facet只支持显示前10。 solr目测用起来性能还是很高的,我们还想做一下压力测试。
除了多维标签外,有一个用户来电弹屏显示用户近期动作的需求,我最近也在考虑是否可以用solr来做?
(来自我的华为手机)

Sam的回信:

   用户来电弹屏的需求用solr来做的主要问题是latency延迟是否能满足需求?我的看法(拍脑袋想的,不一定符合实际情况)是当用户电话进来的时候,需要立刻显示最近的历史,并且需要比较精确,比如说,他刚打了一个电话,然后放下电话又打进来,那么solr很有可能来不及index最近那个call,并且话务员可能希望在接电话之前的那一秒钟就显示出来,如果这种query都用solr,那么到时候你们有几千个话机中午在同时接的话是否对solr的压力太大(当然solr可以scale up)。从这个角度我觉得用数据库index可能更快点。或者用solr和本地cache(储存最近的call以防止solr来不及index)的方式也能解决这个问题。

   然后鸡汤一下,前几天听了阿里在湾区做的一个技术讲座,web技术不是发明出来的,是需求推动演化出来的。每种方式应该都能解决问题,选择最合适自己业务的方案。

对于Sam说的来不及index最近的call,并且话务员可能希望在接电话之前的那一秒就显示出来:这两句话我作了考虑,一是kafka+flume+solr的index时间是在秒级的,二是话务员要求的并不是那么严格实时,因此感觉solr还是适用这种场景。

现在当务之急是解决Hue的solr模块太慢的问题——第一次打开页面时,加载js,绘图等等要1分多钟。想到公司运维在用的ELK平台,就到运维部门考察了一番,感觉Kibana速度和展示都还不错,于是萌生了用Kibana代替Hue的想法。

Kibana支持ElasticSearch,却没听说支持Solr,有个团队做了个开源项目Solr版的Kibana,叫Banana,git地址:https://github.com/lucidworks/banana

这个团队号称拥有solr开源社区70%的贡献者作为其雇员(如果是真的那还真是挺牛的)。

banana 1.6.3安装过程(安装到CDH的solr 4.10.3):

1.下载打包版本https://codeload.github.com/lucidworks/banana/zip/release

2.拷贝到$SOLR_HOME/tomcat-deployment/webapps/ROOT下并解压,CDH5.8.3的$SOLR_HOME一般在/var/lib/solr

$ cp banana-release.zip /var/lib/solr/tomcat-deployment/webapps/ROOT
$ unzip banana-release.zip

3.访问http://cdh-master:8983/banana-release/src/index.html#/dashboard  进入对应的页面。(cdh-master为solr部署的主机)

使用的感受:

优点:

1.安装很快,也不需要重启任何进程。

2.打开速度比Hue快很多,3秒内就能打开。

3.展示功能比较丰富。

不足:

1.sunburst图功能没法用。

2.中文有些地方会显示%2B%4C之内的一串字符。

3.facet功能没Hue好看。(不过Hue只能显示最多10条记录,Banana没有这个限制)

4.饼图没有Hue好看。(不过Hue的饼图limit有bug。)

5.因为是轻量级web项目,没有带数据库,所以保存一些配置没有hue方便,但是可以保存到本地。

*以上的Hue是 CDH5.8.3对应的Hue3.10。

Banana的好处是比Hue更容易定制开发。后面有什么需求或者修改bug,可以直接在Banana源码中改。


12月21日补充:如上问题的解决办法在《再探banana》中。

Solr图形化界面banana:除Hue之外的选择的更多相关文章

  1. Git各大平台(win/Linux/Mac)图形化界面客户端大汇总

    摘要: 介绍各平台下的图形化界面git客户端(本人并没有全部使用过),欢迎大家补充新的软件或者使用感受~  一.TortoiseGit - The coolest Interface to Git V ...

  2. 【Vegas原创】安装rhel6.2,不能进图形化界面的终极解决方法

    安装的时候,千万不要一路下一步,you should know,linux不是windows那么的傻瓜.   方法一: 在倒数最后一步,选择Desktop,而千万不要下一步,默认选择Basic Ser ...

  3. windows API 开发飞机订票系统 图形化界面 (一)

    去年数据结构课程设计的作品,c语言实现,图形化界面使用windows API实现. 首发在我csdn博客:http://blog.csdn.net/u013805360/article/details ...

  4. CentOS:安装桌面GNOME图形化界面

    u盘安装dvd版的CentOS7后,没有桌面,浏览器也是黑框版的:如果需要桌面的话,下面三条命令即可:但是安装桌面后,系统会没有之前纯净: 1 安装Gnome包: sudo yum groupinst ...

  5. Ubuntu 14.10 下开机不进入图形化界面

    因为装的是Ubuntu 桌面版,很占资源,所以启动时候不进入图形化界面,肯定会省不少内存 进入  /etc/X11/default-display-manager  sudo nano/etc/X11 ...

  6. java Swing图形化界面

    学过java的人应该对java的图形化界面很是反感,特别是接触java不久的人.如果想和其他语言那样用鼠标拖拽,可以使用wondosbulider插件.但是用起来也不是那么方便.当然对于不乐意写代码的 ...

  7. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  8. 2013年10月13日学习:SQL通过图形化界面创建表

    通过SQL2005创建表的方式有两种: 1.通过图形化用户界面来创建表.比较容易出问题,不稳定,容易点错了.不推荐 2.通过命令来创建.大牛都是这样做的,比较好. 通过图形化界面创建:以创建员工表为例 ...

  9. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

随机推荐

  1. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...

  2. 6.Struts2简单类型数据的接受

    简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为: ...

  3. Apworks框架实战(三):单元测试与持续集成

    虽然这部分内容并没有过多地讨论Apworks框架的使用,但这部分内容非常重要,它与Apworks框架本身的设计紧密相关,也是进一步了解Apworks框架设计的必修课. 单元测试与持续集成概述 在敏捷开 ...

  4. 重新编译jdk源码,启用debug信息

    我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...

  5. 如何通过cmd开一个本地服务器

    1.首先你要下载安装node.js http://nodejs.cn/download/ 并且根据提示安装在自己的电脑上即可 2.打开cmd管理员窗口输入npm -v 检测node.js是否安装成功: ...

  6. 查找html节点的方法

    document.firstChild document.documentElement(兼容性较好) 查找body节点的方法 document.firstChild.lastChild docume ...

  7. Python爬取代理ip

    # -*- coding:utf-8 -*- #author : willowj import urllib import urllib2 from bs4 import BeautifulSoup ...

  8. 基于小脚丫的ADC081S101 电压采集595数码管显示

    RTL结构图 采集模块运用SPI 通讯 MISO方式收集数据 module ad_collect(input sddata,input rst_n,output reg cs,output reg s ...

  9. java web学习总结(十) -------------------HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  10. Linux安全基础:网络配置命令

    1.ifconfig查看和配置网络接口信息(1)设ip地址ifconfig eth0 192.168.0.1(2)暂时关闭或启用网卡ifconfig eth0 downifconfig eth0 up ...