低调、奢华、有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI

基于FacebookPresto+Cassandra的敏捷式大数据

目录

1      概述...3

1.1       Cassandra.3

1.1.1        特点...3

1.1.2        系统架构...4

1.2       Presto.4

1.2.1        特点...4

1.2.2        系统架构...5

2      环境准备...5

2.1       主机...5

2.2       用户...5

2.3       程序包...6

2.4       hosts.6

2.5       SSH互信...6

2.6       基础环境...7

3      程序安装...7

3.1       assandra.7

3.1.1        第一步:解压...7

3.1.2        第二步:修改cassandra.yaml7

3.1.3        第三步:测试...8

3.2       Presto.9

3.2.1        第一步:解压...9

3.2.2        第二步:配置node.Properties.9

3.2.3        第三步:配置jvm.config.9

3.2.4        第四步:配置config.properties.10

3.2.5        第五步:配置log.properties.10

3.2.6        第六步:配置Catalog Properties.10

3.2.7        第七步:测试...10

4      功能测试...11

4.1       SQL支持...11

4.2       数据导入...11

4.3       JDBC支持...11

5      性能测试...11

6      总结...11

7      未尽…..11

1概 
1概述    概述

Ad-hoc analysis over Cassandradata with Facebook Presto”一文,对Cassandra+Presto

结合实现大数据即席分析进行了介绍。Presto是为满足交互式即席查询需求而优化的分布式SQL查询引擎。它支持标准ANSI SQL,包括复杂查询,聚合,连接和窗口函数。

Cassandra以前缺少交互式即席查询功能,甚至在CQL中不支持聚合函数。因为这个原因,Cassandra在作为数据库使用时经常被混淆。分析Cassandra中的数据有下边两个框架:

1) Hadoop MapReduce

2) Spark andShark

Hadoop MapReduce用于即席查询绝对够慢的。Spark的RDD模型是很快的,但是运行查询需要多次练习。Presto是可以完全独立的运行Cassandra数据的SQL引擎。Presto的架构如下:

从上图中可以看出Presto的执行模型完全不同于Hive/MapReduce。Hive在执行一个MapReduce任务到另外一个时,需要将查询转换到多个阶段。每一个任务需要从磁盘读取数据并将中间的输出写入磁盘。相反,Presto引擎不要使用MapReduce。它采用了自定义查询和执行引擎设计,支持SQL。另外,改进了调度,所有的处理是在内存中进行,并在整个阶段之间,通过网络,采用流水线处理,从而避免了不必要的I/ O和相关的延迟开销。流水线执行模型每个阶段只运行一次,流数据从一个阶段到下一个阶段,没有中间停顿,这显著减少了各种查询的端至端时间延迟。

1.1    Cassandra

Apache Cassandra 是一套开源分布式 KeyValue 存储系统。Cassandra 不是一个数据库,它是一个混合型的非关系的数据库。它以Amazon专有的完全分布式的Dynamo 为基础,结合了Google BigTable 基于列族(Column Family)的数据模型。

1.1.1  特点

1) 分布式;

2) 高扩展性;

3) 多数据中心;

4) 分布式写操作;

5) 一致性哈希

6) GoSSIP协议简化集群管理

7) 实时更新

8) 高效的数据压缩

Cassandra最突出的特点是写性能优异,支持高并发、实时更新。

1.1.2  系统架构

1.2    Presto

Presto是Facebook最新研发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。据称该引擎的性能是 Hive 的 10 倍以上。Presto 是一个分布式系统,运行在集群环境中,完整的安装包括一个协调器 (coordinator) 和多个 workers。查询通过例如 Presto CLI 的客户端提交到协调器,协调器负责解析、分析和安排查询到不同的 worker 上执行。

此外,Presto 需要一个数据源来运行查询。当前 Presto 包含支持Cassandra、Hive 的插件。

1.2.1  特点

1) 分布式;

2) 内存计算;

3) ANSI-SQL语法支持;

4) JDBC 驱动

5) 用于从已有数据源中读取数据的“连接器”集合。连接器包括:HDFS、Hive和Cassandra

1.2.2  系统架构

:在连接Cassandra数据源时,不需要安装Hive,也不需要HDFS。

2      环境准备

2.1    主机


IP


HOSTNAME


部署模块


192.168.0.40


NODE1


Cassandra

Presto


192.168.0.41


NODE2


Cassandra

Presto


192.168.0.42


NODE3


Cassandra

Presto


192.168.0.43


NODE4


Cassandra

Presto


192.168.0.44


NODE5:Cassandra seed

Presto  Coordinator


Cassandra

Presto


192.168.0.45


NODE6


Cassandra

Presto


192.168.0.46


NODE7


Cassandra

Presto


192.168.0.47


NODE8


Cassandra

Presto

2.2    用户

使用Hbase用户


[[email protected] ~]# useradd hbase

[[email protected] ~]# passwd hbase

Changing password for user hbase.

New password:

BAD PASSWORD: it is based on a dictionary word

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

以上命令须在8台机器上分别执行

2.3    程序包


程序名称


说明


apache-cassandra-2.0.10.tar.gz


Cassandra安装程序


presto-server-0.75.tar.gz


Presto安装程序

2.4    hosts

第一步:修改hosts文件


[[email protected] java]# vi /etc/hosts

hosts文件中添加,并在其它节点依次复制以下配置:


192.168.0.40 node1

192.168.0.41 node2

192.168.0.42 node3

192.168.0.43 node4

192.168.0.44 node5

192.168.0.45 node6

192.168.0.46 node7

192.168.0.47 node8

2.5    SSH互信

分别在8台主机上执行以下命令:


[[email protected] ~]$ ssh-keygen -t rsa -P ""

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hbase/.ssh/id_rsa):

Created directory ‘/home/ hbase /.ssh‘.

Your identification has been saved in /home/hbase/.ssh/id_rsa.

Your public key has been saved in /home/hbase/.ssh/id_rsa.pub.

The key fingerprint is:

93:fd:d4:b7:27:aa:10:25:66:a7:c8:b6:e6:31:4c:18 hbase @master

The key‘s randomart image is:

+--[ RSA 2048]----+

|                 |

|                 |

|    E   + o      |

|     + + B   .   |

|    . = S . . . .|

|     + . o o   ..|

|      * .   . ...|

|     o o .   . ..|

|      .   ...    |

+-----------------+

[[email protected] .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[[email protected] .ssh]$ chmod 600 ~/.ssh/authorized_keys

在node5主机执行如下命令,并将完整的authorized_keys分发到各台主机:


[[email protected] .ssh]$ scp authorized_keys [email protected]:~/.ssh/

[email protected]‘s password:

authorized_keys                                                                                                                       100% 1990     1.9KB/s   00:00

其它节点依次同样处理。

测试node5节点到各个slave节点的ssh可用性:


[[email protected] .ssh]$ ssh slave1

Last login: Wed Aug  7 22:24:19 2013 from 192.168.0.25

[hbase @slave1 ~]$ exit

logout

Connection to slave1 closed.

其它节点依次类推。

2.6    基础环境

已经安装jdk1.7_51

3      程序安装

3.1    assandra

3.1.1  第一步:解压


[[email protected] node5 ~]$ tar -xzf apache-cassandra-2.0.10.tar.gz

 

3.1.2  第二步:修改cassandra.yaml


[[email protected] node5 ~]$ cd apache-cassandra-2.0.10/conf/

[[email protected] conf]$ vi cassandra.yaml

cassandra.yaml内容


cluster_name: ‘sunrise Cluster‘

- seeds: "192.168.0.44" --> - seeds: "node IP address"

data_file_directories:

- /home/hbase/cassandra/data

commitlog_directory: /home/hbase/cassandra/commitlog

saved_caches_directory: /home/hbase/cassandra/saved_caches

listen_address: 192.168.0.44

native_transport_port: 9042

rpc_address: 192.168.0.44

rpc_port: 9160

cluster_name:这个配置项是用来标识集群名称的。

data_file_directories:这个配置项是用来配置Cassandra数据目录的。

commitlog_directory: 这个配置项是用来配置Cassandra提交日志目录的。

saved_caches_directory:这个配置项是用来配置Cassandra缓存目录的。

listen_address:这个配置项定义了集群中其他节点的连接方式。所以多节点的集群必须将这个改成他实际的网卡地址。

listen_address:这个配置项定义了集群中其他节点的连接方式。所以多节点的集群必须将这个改成他实际的网卡地址。

rpc_address:这个配置项定义了这个节点在哪里监听客户端。所以可以跟node的IP地址一样,或者设置为0.0.0.0,如果我们想在所有的可用网卡接口上监听的话。

Seeds:seeds作为连接点,当一个新的节点加入到集群中的时候,他联系seeds得到其他节点的一些基础信息。所以在多节点中,作为种子的节点必须是所有的节点都可以通过路由连接到的。注:在多节点的集群中,最好拥有多个seeds。多个节点作为seeds可以通过如下方式定义。

3.1.3  第三步:测试

启动:


Node1 – node8


[[email protected] cassandra

查看状态


Node5


[[email protected] apache-cassandra-2.0.10]$ ./bin/nodetool -host 192.168.0.44 -p 7199 status

UN  192.168.0.45  215.5 KB   256     12.8%  55a15b62-b3a9-4fa3-ad76-284ce8132ff5  rack1

UN  192.168.0.44  204.95 KB  256     11.6%  4b736f9e-d904-4d69-80f3-66492a1a0344  rack1

UN  192.168.0.47  207.25 KB  256     13.7%  0744e75b-dc9e-4be3-9cd4-9a803f141abb  rack1

UN  192.168.0.46  202.26 KB  256     12.4%  e2087e1a-6c06-4b24-9355-f27890b0e9c6  rack1

UN  192.168.0.41  180.9 KB   256     13.0%  7aac038a-8bf7-45d7-b385-a2c434ed96ff  rack1

UN  192.168.0.40  189.13 KB  256     12.7%  de8cb5e2-fce3-4735-bfc0-c21f51b1e7d8  rack1

UN  192.168.0.43  184.23 KB  256     12.3%  3ef670c3-d61e-406f-b853-20a06747cd21  rack1

UN  192.168.0.42  184.83 KB  256     11.5%  3055f3e2-7003-440c-a198-e7ff7c862ec0  rack1

创建keyspace、user表、插入数据


Node5


[[email protected] apache-cassandra-2.0.10]$ ./bin/cqlsh -u cassandra -p cassandra 192.168.0.44 9160

[cqlsh 4.1.1 | Cassandra 2.0.10 | CQL spec 3.1.1 | Thrift protocol 19.39.0]

Use HELP for help.

cqlsh> CREATE KEYSPACE munion_db WITH REPLICATION = { ‘class‘ : ‘SimpleStrategy‘, ‘replication_factor‘ : 2 };

cqlsh>use munion_db;

cqlsh>create table users(user_id int primary key, fname varchar,lname varchar);

cqlsh> INSERT INTO users (user_id,  fname, lname)  VALUES (1744, ‘john‘, ‘smith‘);

cqlsh> INSERT INTO users (user_id,  fname, lname)  VALUES (1745, ‘john‘, ‘doe‘);

cqlsh> INSERT INTO users (user_id,  fname, lname)  VALUES (1746, ‘john‘, ‘smith‘);

cqlsh> INSERT INTO users (user_id,  fname, lname)  VALUES (1747, ‘测试‘, ‘测试‘);

cqlsh>select * from users;

user_id | fname | lname

---------+-------+---------

1744 |  john |   smith

1745 |  john |     doe

1746 |  john |   smith

1747 |  测试|   测试

3.2    Presto

3.2.1  第一步:解压


[[email protected]~]$ tar -xzf presto-server-0.75.tar.gz

[[email protected]~]$ cd presto-server-0.75

3.2.2  第二步:配置node.Properties

配置文件内容:


node.environment=pretest

node.id=node5

node.data-dir=/home/hbase/presto-server-0.57/presto/data

3.2.3  第三步:配置jvm.config

配置文件内容:


node.environment=pretest

node.id=node5

node.data-dir=/home/hbase/presto-server-0.57/presto/data

[[email protected] etc]$ cat jvm.config

-server

-Xmx6G

-XX:+UseConcMarkSweepGC

-XX:+ExplicitGCInvokesConcurrent

-XX:+CMSClassUnloadingEnabled

-XX:+AggressiveOpts

-XX:+HeapDumpOnOutOfMemoryError

-XX:OnOutOfMemoryError=kill -9 %p

-XX:PermSize=150M

-XX:MaxPermSize=150M

-XX:ReservedCodeCacheSize=150M

-Xbootclasspath/p:/home/hbase/presto-server-0.57/lib/floatingdecimal-0.1.jar

-Djava.library.path=/home/hbase/hadoop/lib/native/Linux-amd64-64>

3.2.4  第四步:配置config.properties

配置文件内容


coordinator=true #node5,其他节点设为false

#node-scheduler.include-coordinator=false

http-server.http.port=40000

task.max-memory=1GB

discovery-server.enabled=true

discovery.uri=http://node5:40000

3.2.5  第五步:配置log.properties


com.facebook.presto=INFO

3.2.6  第六步:配置CatalogProperties

编辑Catalog Properties文件,添加如下内容


connector.name=cassandra

cassandra.contact-points=node1,node2,node3,node4,node5,node6,node7,node8

3.2.7  第七步:测试

启动Presto,命令如下:


[[email protected] ~]$ cd /home/hbase/presto-server-0.75

[[email protected] ~]$./bin/launcher start

[[email protected] ~]$./bin/launcher start

[[email protected]~]$./presto --server 192.168.0.44:40000 –catalog cassandra --schema munion_db

presto:munion_db>select * from users;

presto:munion_db> user_id | fname | lname

---------+-------+---------

1744 |  john |   smith

1745 |  john |     doe

1746 |  john |   smith

1747 |  测试|   测试

4      功能测试

4.1    SQL支持

Create tabe/view:只支持Createtabe/view as select …

支持连接:Inner join、left join、right join

聚合函数:支持count、max、min等

4.2    数据导入

支持insert操作;

支持copy导入数据;

支持kettle导入数据;

4.3    JDBC支持

支持程序使用JDBC接口;

Java客户端调用JDBC出错;

报表工具连接JDBC源有待验证;

5      性能测试

未做。

6      总结

相对于Hadoop/Hive/HBase/Spark,Cassandra+Presto不失为一种大数据的敏捷方案。

Kettle提供了Cassandra的ETL组件,CQLSH提供了类似于ER的数据模型,Presto提供了跨数据源的交叉查询能力,并提供了丰富的SQL功能。此外,JDBC驱动提供了对程序、客户端工具及报表工具的连接能力。

7      未尽…

因为时间和人力资源限制,不得不停止Cassandra+Presto的测试验证工作,进一步的性

能测试也没能去测。尽管如此,该方案仍然可认为是可行的。也许,在将来某个时间,Cassandra+Presto将被重新提及,并被采用。

Presto升级很快,现在已经到了0.78版本,在0.77中已经实现了分布式Hash功能,尽管还处于试验阶段。相对与Hadoop/HBase/Hive/Spark来说,采用Flume+Cassandra+Presto+SpagoBI无疑是一个敏捷的大数据解决方案。希望能对准备使用大数据的同道们有所帮助!

时间: 2024-08-24 13:21:34

低调、奢华、有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI的相关文章

FusionInsight大数据开发---Flume应用开发

Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会先缓存数据,待数据真正的到达目的地后,删除自己缓存的数据.Flume采用流式方法采集和传输数据,程序配置好后,不需要外部条件触发下,一直监控数据源,源源不断地采集.传送数据到目的地. 主要应用于一下几种场景: 将分布式节点上大量数据实时采集.汇总和转移 将集群内.外地本地文件.实时数据流采集到Fus

流式大数据计算实践(2)----Hadoop集群和Zookeeper

一.前言 1.上一文搭建好了Hadoop单机模式,这一文继续搭建Hadoop集群 二.搭建Hadoop集群 1.根据上文的流程得到两台单机模式的机器,并保证两台单机模式正常启动,记得第二台机器core-site.xml内的fs.defaultFS参数值要改成本机的来启动,启动完毕后再改回来 2.清空数据,首先把运行单机模式后生成的数据全部清理掉 rm -rf /work/hadoop/nn/current rm -rf /work/hadoop/dn/current hdfs namenode

中小企业的大数据技术路线选择(二)-Cassandra+Presto方案

中小企业的大数据技术路线选择(二)-Cassandra+Presto方案 我前面曾经写过:中小企业的大数据技术路线选择 和 低调.奢华.有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI . 最近用了两个月的时间终于把Cassandra+Presto+SpagoBI方案验证通过了.验证了Presto的JDBC Driver .Prestogres网关.SHIB三种方式. 一.Presto JDBC驱动方案 Presto JDBC驱动方案,Java动用客户端,如

三分钟了解实时流式大数据分析

大家好,今天为大家介绍华为云实时流计算服务CS,希望通过本次分享,大家能对华为云实时流计算服务的服务能力和业务场景有所了解.我们先了解一下实时流计算背景.下面列举的是流数据普遍产生的四个方面:一.日志:二.物联网,也就是传感器或者边缘设备所产生的数据:三.车联网,也就是车辆行驶过程中或者车载系统所产生的数据:四.StreamingML.流数据普遍产生,但并没有充分产生价值.那么什么是实时流计算呢?实时流是指计算框架按事件逐条实时处理,one-by-one的数据流.计算,是指数学运算数据分析,算法

论各类BI工具的“大数据”特性

市面上的BI工具形形色色,功能性能包装得十分亮丽,但实际应用中我们往往更关注的是朴实的技术特性和解决方案.对于大数据,未来的应用趋势不可抵挡,很多企业也正存在大数据分析处理展现的需求,以下我们列举市面上主流的三款BI系统,就"大数据"特性展开探讨,主要是与Hadoop.Spark.多维分析数据库的对接和性能. Tableau的大数据策略 1.目前,Tableau适用的大数据生态系统连接包括: Hadoop:Cloudera Impala 和 Hive.Hortonworks Hive.

大数据发展历程

一:大数据概念 大数据是由数量巨大.结构复杂.类型众多的数据结构的数据集合,在合理时间内,通过对该该数据集合的管理.处理.并整理成为能帮助政府机构和企业进行管理.决策的讯息. 二:大数据特点 大数据通常具有以下几种特点: 1.大量:即数据体量庞大,包括采集.存储和计算的量都非常大. 2.高速:要求处理速度快,从各类型的数据中快速获得高价值的信息 3.多样:数据种类繁多 4.价值:价值密度低,由于数据产生量巨大且速度非常快,必然形成各种有效数据和无效数据错杂的状态,因此数据价值的密度低. 5.在线

提升大数据数据分析性能的方法及技术(一)

关于此文 最近在忙着准备校招的相关复习,所以也整理了一下上学期上课时候的学到的一些知识.刚好发现当时还写了一篇类似于文献综述性质的文章,就在这里贴出来.题材是关于大数据的,也是比较火热的一个话题,虽然现在接触的项目与大数据不太有关联,可能以后也不一定从事这方面的工作吧.就IT行业的研究成果来讲国外期刊无论是发表速度还是质量都是高于国内,所以参考的大部分都是当时最新在核心期刊上发表的论文,参考文献在最后一一列出.因为文章没有多少自己的创新点,仅仅是最新.最热技术或者分析的一个总结,所以放上来仅仅是

视频大数据技术在智慧城市中的应用

现代社会的信息量正以飞快的速度增长,这些信息里又积累着大量的数据.预计到2025年,每年产生的数据信息将会有超过1/3的内容驻留在云平台中或借助云平台处理.我们需要对这些数据进行分析和处理,以获取更多有价值的信息.在未来的"智慧城市"中,会有越来越大的结构化以及非结构化的数据.那么我们如何高效地存储和管理这些数据,如何分析这些数据呢?答案是,我们需要强有力的大数据处理系统进行支撑. 作为目前最火热的词汇之一,大数据在各个领域都已有了较为成熟的应用.在视频监控领域,大数据时代正悄悄来临.

论各类BI工具的“大数据”特性!

市面上的BI工具形形色色,功能性能包装得十分亮丽,但实际应用中我们往往更关注的是朴实的技术特性和解决方案.对于大数据,未来的应用趋势不可抵挡,很多企业也正存在大数据分析处理展现的需求,以下我们列举市面上主流的三款BI系统,就"大数据"特性展开探讨,主要是与Hadoop.Spark.多维分析数据库的对接和性能. Tableau的大数据策略 1.目前,Tableau适用的大数据生态系统连接包括: Hadoop:Cloudera Impala 和 Hive.Hortonworks Hive.