실시간 데이터웨어 하우스를 기반으로 SnappyData를 구축

SnappyData는 메모리 기반 데이터베이스이며, 차이는 SnappyData의 레디 스 데이터 기반 분석, 동시성의 일정 금액을 처리 할 수있다,하지만 너무 높은 100 % 지원 하이브 SQL을 사용하지 않는 것이 좋습니다,하지만 실행 속도를 빠르게 하이브의 수백보다 더에 천 근처에 배, 스파크 (불꽃 지정된 버전) 제공됩니다.

배경

쉽게 사업을 보여주는 기업의 발전과 함께, 분석 및보고 요구 사항에 따라, 제품 및 작업 데이터 학생의 분석 요구 사항을 많이, 더 높은 점점 소면 사업으로 채택하기 전에 데이터 분석, 데이터 제품에 대한 더 낮은 대기 시간을 점점 필요 인덱스 분석을 지정하고 R & D에 의해 계산을 완료하는 것은하지 능력이있다, 당신은 데이터웨어 하우스의 중요성에 대한 새로운 강조가 필요합니다.

소개

여기에 사용되는 최적화 방식은 SnappyData + CBoard, SnappyData JDBC 연결에 의해 분석 실시간 대화 형 서비스 데이터입니다. 오픈 소스 BI 셀프 서비스 분석 시스템, 토라 사용자 정의 다양한 보고서를 완료하기 위해 초과 근무를하지 않아도 연구 개발 어려움을 겪고 학생에서, 그것을 뽑아 달성 할 수있는 요구 사항, 제품 및 작업 학생들을 주문하는 간단한 패킷, 연구 학생들의 많은 수의 릴리스입니다 CBoard 귀중한 시간; SnappyData 오픈 소스 데이터베이스 메모리 OLAP 분석하고, 지원하고 열 라인 스토리지는 현재 대부분의 데이터는 우리가 사업을 초를 분석 할 수있는,지지 애드혹 스파크 연산자 SQL 조작 호환 100 %, SnappyData 스파크 작업에 도입이 빠르게 하이브를 통해 HDFS 또는 데이터를 알고 있습니다.

일반적인 OLAP 대비

데이터베이스 응답 시간 동시성 집단 처리 용량 분석 기술 결점
임팔라 천천히 낮은 보통 대규모 데이터를 지원 표준 SQL 및 멀티 테이블 및 윈도우 함수에 가입 지원 하지 실시간 성능 저하,
기린 빠른 높은 활동적인 대규모 데이터를 지원 고성능, 표준 SQL을 지원합니다 미리 계산 된 요구 멀티 테이블을 지원할 수없는
드루이드 빠른 높은 활동적인 대규모 데이터를 지원 고성능,하지만 약한 SQL 지원 애드혹를 지원하지 않는 메모리를 먹고
그것은이다 빠른 활동적인 소규모 데이터 지원 고성능,하지만 약한 SQL 지원 고분자는 하나의 테이블을 정렬에만 패킷을 지원합니다
ClickHouse 비활성 데이터는 일반적으로 규모를 지원 성능,하지만 약한 SQL 지원 확장 성이 약하고 애드혹을 지원하지 않습니다
도리스 빠른 보통 대규모 데이터를 지원 그것은 표준 SQL을 지원합니다 아직 배양 단계에서, 그것은 생태 하둡와 호환되지 않습니다
SnappyData 빠른 비활성 데이터 지원 중형 완벽하게 호환 스파크 SQL 업데이트 및 삭제 작업 지원 가난한 안정성, OOM의 위험이

snappydata 커뮤니티 활성화되지 않은,하지만 개인적으로 안정성하지만 사용과 성능의 용이성에 snappydata 타협이 정말 너무 유혹 할 경우에도 공식 웹 사이트, 충분한 제공하는 최초의 직접 정보를 느끼지만

신청

다음은 간단한 예에서는 사용 SnappyData을 설명 : SnappyData 오기 전에 로그 데이터 자체 사용자 다각적 인 분석을 달성했다.

  • 설치
1、官网下载最新的SnappyData文件 ,

2、分发在20台hadoop nodemanager节点上

3、
启动 locator(任意两台):
./sbin/snappy-locator.sh start -peer-discovery-address=hadoop011 -peer-discovery-port=8888  -dir=/data/work/snappydata-1.1.0-bin/data/locator_1 -heap-size=1024m  -locators=hadoop010:8888

启动 lead(任意两台):
./sbin/snappy-lead.sh start -dir=/data/work/snappydata-1.1.0-bin/data/lead_1 -heap-size=4096m -spark.ui.port=2480 -locators=hadoop011:8888,hadoop010:8888 -spark.executor.cores=20

启动 server(所有节点):
./sbin/snappy-server.sh start -dir=/data/work/snappydata-1.1.0-bin/data/server_1  -heap-size=8096m -locators=hadoop010:8888,hadoop011:8888

4、监控
浏览器输入如下地址
 http://hadoop010.eqxiu.com:2480/dashboard/ 

  • 가져 오기 로그 데이터는
    우리가 불꽃 ETL 데이터 이주 스크립트를 사용 마루하기 위해 압축 된 형식으로 저장 HDFS에 일일 로그 데이터에 있기 때문에 다음과 같이 명령은 다음과 같습니다
val snappy = new org.apache.spark.sql.SnappySession(spark.sparkContext)

val df = spark.read.parquet("/data/merge/tracker_view/page_view/201906/01")

val sn = snappy.createDataFrame(df.rdd, df.schema)

#第一次执行saveAsTable 会自动在SnappyData中创建对应的表
sn.write.format("column").saveAsTable("tracker_view")

#之后每天增量执行
sn.write.format("column").insertInto("tracker_view")

또한 수동으로 테이블을 만든 다음 데이터를 가져올 수 있습니다

CREATE TABLE CUSTOMER ( 
    C_1     INTEGER NOT NULL,
    ...
    ...
 )
 USING COLUMN OPTIONS (BUCKETS '10', PARTITION_BY 'C_1')

다른 매개 변수

1、COLOCATE_WITH:COLOCATE_WITH {exist_table}语法的含义是对于新建的表,与exist_table具有相同的分区键,且相同键存储在同一个节点上,即数据存储本地化。这样做的好处是当2个表发生基于key的join时,那些非常耗资源的hash join就不用跨节点进行数据传输(广播),而是在本地进行join。这个设计思路非常像关系型数据库Oracle中的cluster存储。这种数据存储本地化的特点,也是SnappyData在做join时比Spark快很多的原因之一。

2、PARTITION_BY:PARTITION_BY {COLUMN}语法的含义是按某列进行分区,当然也可以指定多个列作为组合。行表如果没有指定分区键,那么将是一张全局复制表;列表如果没有指定,那么内部也会有个默认的分区。列表中的分区遵循Spark Catalyst的hash分区,使得join时最小化shuffle。

3、BUCKETS:分区的个数。默认是128个,最小的数据存储单元。本地存储,这个值可以设置为集群core数量的2倍。

4、REDUNDANCY:分区的副本数,如果设置为0,表示没有副本;如果设置大于0,则会为partition创建对应的副本数,以防止member失败,达到数据的高可用性的目的。

5、EVICTION_BY:驱逐,很像Flink window中的eviction设置。列表上默认的参数值是LRUHEAPPERCENT,根据LRU算法达到阀值时,开始将内存中的较“冷”的数据溢出到本地磁盘:SnappyStore存储。

6、PERSISTENCE:持久化。默认是允许持久化的,数据会从内存中持久化到本地SnappyStore存储中,当重启memeber时,SnappyData会自动从本地的SnappyStore存储中恢复数据。

7、OVERFLOW:溢出,默认是true,即允许溢出。如果没有指定PERSISTENCE,且将OVERFLOW设置为false,那么当失败时,内存中的数据将被丢失。

8、DISKSTORE:为持久化的数据或溢出的数据提供持久化目录。可以通过CREATE DISKSTORE为表提前创建出本地文件目录,可以指定文件、配置数据收缩、配置数据异步到磁盘的频率等等.

9、EXPIRE:过期时间。为了提高内存使用率,对于很老的历史数据,可以通过设置过期时间使得超过阀值的行数据过期。但是过期参数只适合行表。

10、COLUMN_BATCH_SIZE:刚才提到了,delta row buffer的batch大小,默认24MB。超过阀值就会写到列表。

11、COLUMN_MAX_DELTA_ROWS:delta row buffer的最大行数,默认10000行。超过阀值会写到列表。

  • 테스트
    일억 1~2초의 데이터 양의 패킷 수준에서 중합 종료 다음
select pro,count(distinct c_i) cn from tracker_view group by pro order by cn desc limit 11

개요

이것은 우리 프로세스는 문제와 환영 메시지가 발생했습니다 사용, 구덩이 작성 기사가 아니기 때문에 SnappyData 빌드 프로세스를함으로써 또한, 여기에 나열되지, 구덩이가 많이 발생했습니다.
유연성이 충분하지만, 다소 덜 특정 안정성, 권고의 일부 안정성있는 제품을 사용하여, 테스트 후, 우리의 가장 큰 두 비즈니스 테이블 작업 (수백만) + 사용자는 연결 분석, 아웃 초 (할) 시나리오 덜 까다로운, 높은 내부 분석 적시성 요구 사항을 사용하여.

추천

출처blog.csdn.net/weixin_34293246/article/details/91001387