首页 > 代码库 > 基于hadoop生态圈的数据仓库实践 —— OLAP与数据可视化(四)

基于hadoop生态圈的数据仓库实践 —— OLAP与数据可视化(四)

四、数据可视化与Hue简介
1. 数据可视化简介

        数据可视化在维基百科上是这样定义的:指一种表示数据或信息的技术,它将数据或信息编码为包含在图形里的可见对象(如点、线、条等),目的是将信息更加清晰有效地传达给用户,是数据分析或数据科学的关键技术之一。简单地说,数据可视化就是以图形化方式表示数据。决策者可以通过图形直观地看到数据分析结果,从而更容易理解业务变化趋势或发现新的业务模式。使用可视化工具,可以在图形或图表上进行下钻,以进一步获得更细节的信息,交互式地观察数据改变和处理过程。

(1)数据可视化的重要性
        从人类大脑处理信息的方式看,使用图形图表观察大量复杂数据要比查看电子表格或报表更容易理解。数据可视化就是这样一种以最为普通的方式,向人快速、简单传达信息的技术。通过数据可视化能够有效地利用数据,帮助人们给诸如以下问题快速提供答案:
  • 需要注意的问题或改进的方向。
  • 影响客户行为的因素。
  • 确定商品放置的位置。
  • 销量预测。
        通过增加数据可视化的使用,能够使企业更快地发现所要追求的价值。创建更多的信息图表,让人们更快地使用更多的资源,获得更多的信息。同时使人们意识到已经知道很多信息,而这些信息先前就应该是很明显的,从而增加了人们能够提出更好问题的可能。它创建了似乎没有任何联系的数据点之间的连接,让人们能够分辨出有用的和没用的数据,这样,就能最大限度的提高生产力,让信息的价值最大化。

(2)数据可视化的用途
        快速理解信息
        通过使用业务信息的图形化表示,企业可以以一种清晰的、与业务联系更加紧密的方式查看大量的数据,根据这些信息制定决策。并且由于相对于电子表格的数据分析,图形化格式的数据分析要更快,因此企业可以更加及时地发现问题、解决问题。
        标识关系和模式
        即使面对大量错综复杂的数据,图形化表示也使数据变得可以理解。企业能够识别高度关联、互相影响的多个因素。这些关系有些是显而易见的,有些则不易发现。识别这些关系可以帮助组织聚焦于最有可能影响其重要目标的领域。
        确定新兴趋势
        使用数据可视化,可以辅助企业发现业务或市场趋势,准确定位超越竞争对手的自身优势,最终影响其经营效益。企业更容易发现影响产品销量和客户购买行为的异常数据,并把小问题消灭于萌芽之中。
        方便沟通交流
        一旦从可视化分析中对业务有了更新的深入了解,下一步就需要在组织间沟通这些情况。使用图表、图形或其它有效的数据可视化表示在沟通中是非常重要的,因为这种表示更能吸引人的注意,并能快速获得彼此的信息。

(3)实施数据可视化需要考虑的问题
        实施一个新技术,需要采取一些步骤。除了扎实地掌握数据外,还需要理解目标、需求和受众。在组织准备实施数据可视化技术时,先要做好以下功课:
  • 明确试图可视化的数据,包括数据量和基数(一列数据中不同值的个数)。
  • 确定需要可视化和传达的信息种类。
  • 了解数据的受众,并领会他们如何处理可视化信息。
  • 使用一种对受众来说最优、最简的可视化方案传达信息。
        在关于数据的属性和作为信息消费者的受众的相关问题有了答案后,就需要准备与大量的数据打交道了。大数据给可视化带来新的挑战,4V(Volume、Velocity、Variety、Veracity)是必须要考虑的问题,而且数据产生的速度经常会比其被管理和分析的速度快。需要可视化的列的基数也是应该重点考虑的因素,高基数意味着该列有大量不同值(如银行账号等),而低基数则说明该列有大量重复值(如性别列)。

(4)几种主要的数据可视化工具
  • Tableau Desktop(主流桌面BI)
  • Business Object(SAP收购的BI公司)
  • Hyperion(Oracle收购的BI公司)
  • Cognos(IBM收购的BI公司)
  • Pentaho Report(最流行的开源BI)
2. Hue简介
        前面讨论了数据可视化,那么在Hadoop生态圈中,有哪些图形化的用户界面可以做数据可视化呢?这里就简单介绍一个常用的Hadoop组件——Hue。
(1)Hue是什么
        Hue是Hadoop User Experience的缩写,是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。
        我使用的CDH 5.7.0自带的Hue是3.9.0版本。通过使用CDH的Hue Web应用,可以与Hadoop集群进行交互。在Hue中可以浏览HDFS和作业,管理Hive元数据,运行Hive、Impala查询或Pig脚本,浏览HBase,用Sqoop导出数据,提交MapReduce程序,用Solr建立定制的搜索引擎,调度重复执行的Oozie工作流等。
        Hue应用运行在Web浏览器中,不需要安装客户端。其体系结构如下图所示。
技术分享

        Hue Server是Web应用的容器,位于CDH和浏览器之间,是所有Hue Web应用的宿主,负责与CDH组件通信。

(2)Hue功能快速预览
        可以从CDH Manager中的连接登录Hue。点击集群中的Hue服务,如下图所示。
技术分享
        在Hue页面点击Hue Web UI链接,如下图所示。
技术分享
        这时会打开登录页面,要求输入用户名/密码,首次登录输入任意字符串,会自动作为管理员的用户名和密码,如下图所示。
技术分享
        登录后Hue会进行配置检查、安装示例、创建或导入用户等向导步骤,然后进入Hue主页。我的Hue主页如下图所示。
技术分享
        图中最上面是导航条,11个图标都有超链接。Hue图标是“关于 Hue”链接,点击进入刚登录后的向导步骤页面。第二个是主页图标,点击进入“我的文档”页面。后面依次为“查询数据”、“管理数据”、“使用 Oozie 的计划”、“管理HDFS”、“管理作业”、“管理”、“文档”、“演示教程”和“注销”子菜单或超链接。“查询数据”子菜单包括Hive、Impala、DB查询、Pig和作业设计器。“管理数据”子菜单包括Metastore表和Sqoop 传输。“使用 Oozie 的计划”包括WorkFlow、Coordinator、Bundles三种Oozie工作流的仪表板和编辑器。“管理”包括编辑配置文件和管理用户子菜单。
        这些是Hue主要的功能,每个主功能下面的详细页面这里就不展示了,都是页面操作,感兴趣的点击试一下便知。在这些功能特性集合中,“查询数据”与数据可视化关系最为密切,也是最常使用的功能。在后面实例部分,将会看到与查询相关的图形化表示,还会演示其它一些Hue的常用功能。

(3)配置元数据存储
        像Hadoop的其它组件一样,Hue也有很多配置选项,每个选项的具体含义和配置说明可以从CDH Manager的Hue配置页或相关文档中找到。在这需要说明一下的是Hue自身的元数据存储配置。
        Hue服务器需要一个SQL数据库存储诸如用户账号信息、提交的作业、Hive查询等少量数据。CDH 5.7.0缺省安装时,Hue的元数据存储在一个嵌入式数据库SQLite中,但这种配置并不适用于生产环境。Hue也支持MariaDB、MySQL、PostgreSQL、Oracle等几种外部数据库。Cloudera强烈推荐在Hue多用户环境,特别是生产环境中使用外部数据库。CDH 5所支持的数据库完整列表链接在http://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_req_supported_versions.html#topic_2。
        下面说明使用CDH Manager配置Hue服务器在MySQL中存储元数据的详细步骤(注意:Cloudera推荐使用InnoDB作为Hue的MySQL存储引擎。CDH 5的Hue需要InnoDB)。

         配置前需求:
  • 安装所用操作系统需要的所有类库。如CentOS/RHEL需要的类库如下:
            Oracle‘s JDK (read more here)
            ant
            asciidoc
            cyrus-sasl-devel
            cyrus-sasl-gssapi
            cyrus-sasl-plain
            gcc
            gcc-c++
            krb5-devel
            libffi-devel
            libtidy (for unit tests only)
            libxml2-devel
            libxslt-devel
            make
            mvn (from apache-maven package or maven3 tarball)
            mysql
            mysql-devel
            openldap-devel
            python-devel
            sqlite-devel
            openssl-devel (for version 7+)
            gmp-devel
            各操作系统需要的类库完整列表链接在https://github.com/cloudera/hue#development-prerequisites。
  • 确认Hue Server运行在Python 2.6或以上版本上。
  • 安装了MySQL数据库(MySQL数据库的安装配置详见http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_mysql.html#cmig_topic_5_5)。
  1.  在Cloudera Manager管理控制台中,从服务列表中点击“Hue”进入Hue服务状态页面。
  2. 选择“操作” > “停止”,停止Hue服务,如下图所示。技术分享
  3. 选择“操作” > “转储数据库”,将元数据库转储为一个json文件中。
  4. 注意在“转储数据库”命令执行窗口中,确认转储文件所在的主机,如下图所示。技术分享
  5. 在该主机上打开一个终端窗口,编辑/tmp/hue_database_dump.json文件,去掉文件中useradmin.userprofile段中的所有JSON对象,例如:
    {
    "pk": 14,
    "model": "useradmin.userprofile",
    "fields":
    { "creation_method": "EXTERNAL", "user": 14, "home_directory": "/user/tuser2" }
    },
  6. 在/etc/my.cnf文件中设置MySQL严格模式。
    [mysqld]
    sql_mode=STRICT_ALL_TABLES
  7. 在MySQL中建立一个新的数据库并授予一个Hue用户该库的管理员权限,例如:
    mysql> create database hue;
    Query OK, 1 row affected (0.01 sec)
    mysql> grant all on hue.* to ‘hue‘@‘localhost‘ identified by ‘secretpassword‘;
    Query OK, 0 rows affected (0.00 sec)
  8. 在Cloudera Manager管理控制台,点击“Hue”服务。
  9. 点击“配置”标签。
  10. “类别”选择“数据库”。
  11. 指定Hue数据库的类型、主机名、端口、用户名、密码和数据库名。例如下图所示。技术分享
  12. 在新数据库还原Hue的元数据。
            a. 选择“操作” > “同步数据库”。
            b. 确认外键,如下图所示。
$ mysql -uhue -psecretpassword
mysql > SHOW CREATE TABLE auth_permission\G
mysql > SHOW CREATE TABLE desktop_document\G
mysql > SHOW CREATE TABLE django_admin_log\G

技术分享

            c. 删除上一步查出的外键。

mysql > ALTER TABLE auth_permission DROP FOREIGN KEY content_type_id_refs_id_d043b34a;
mysql > ALTER TABLE desktop_document DROP FOREIGN KEY content_type_id_refs_id_800664c4;
mysql > ALTER TABLE django_admin_log DROP FOREIGN KEY content_type_id_refs_id_93d2d1f8;
            d. 删除django_content_type表里的数据。
DELETE FROM hue.django_content_type;
            e. 在Hue服务页,点击“操作” > “加载数据库”。
            f. 添加c步删除的外键。
mysql > ALTER TABLE auth_permission ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
mysql > ALTER TABLE desktop_document ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
mysql > ALTER TABLE django_admin_log ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
        13. 启动Hue服务。
        如果在上述步骤中报类似“libmysqlclient.so.16: cannot open shared object file: No such file or directory”这种错误,说明MySQL的类库和Hue所需的不兼容,这时只需下载兼容版本的库文件,并放置到/usr/lib64目录,再操作就不会报错了。

基于hadoop生态圈的数据仓库实践 —— OLAP与数据可视化(四)