接触项目:
1.搭环境
2.了解项目组架构,数据存在哪里,用到什么计算引擎
存储层kudu
计算层spark sparkGraphx(统一用户识别)
快速查询层 impala
数据展示层 zeeplin 实现数据图表化
根据数据类型选择存储引擎
(hdfs hbase kudu)
静态数据:保存后不会进行修改。以日志数据为主,数据量大—>hdfs存储,高吞吐量,随机读写能力比较弱。
动态数据:吞吐量远远比不上hdfs,随机读写能力强(rowkey索引机制)。
kudu基础
存储引擎kudu与查询工具impala、分析工具spark结合紧密。
kudu是一个与hbase类似的列式存储分布式数据库。
kudu基本架构:
- master:管理集群元数据(以表的形式存在,他只有一个tablet,叫catalogTable)。相当于hdfs-nameNode。master leader 负责读与写,master follower 负责读。
- tabletServer:存储实际数据(tablet)。相当于hdfs-dataNode,hbase-regionServer。
半数选举—奇数台master
副本机制
kudu中数据是以table形式存储,table会划分为多个tablet—相当于hbase的region。
复习hbase读写流程:
启动遇到了一个问题:
解决方法:关闭服务后删除数据,再启动:
kudu创建表,注意:
1.创建分区的时候,分区数必须>=2。
2.副本数必须是奇数且<=tabletServer个数。
3.分区字段只能是主键字段。
4.StructType第一个add在scala里第一个字段可以不是主键字段,java里第一个字段必须是主键字段
其他注意:
1.更新数据的时候,必须带上主键字段,不需要更新的字段可以不用带上。
2.删除数据的时候只能用主键字段,如果使用sparkAPI 带上非主键字段删除会报错,如果使用javaAPI 带上非主键字段删除不会报错,但是没有删除掉。
3.也支持 更新或插入 行为—upsertRows
4.有两种查询和写入方式,另一种是API—write、read。(write目前只支持append模式,效果与upsert一样)
5.查询条件只能有一个,不能多个条件。—整合impala才能实现多个条件
impala与sparksql 比较:
impala是将所有数据放在内存,sparksql 有些数据会落地到磁盘。
故impala的查询速度比sparksql还要快,就是比较耗内存。
impala 基于hive。
Impala日志路径:/var/log/impala/catalog.ERROR
启动命令:
node03: service impala-state-store start
service impala-catalog start
service impala-server start
node01\node02:
service impala-server start
查看impala进程是否存在:
ps -ef | grep impala
webui:
http://node03:25000/
http://node02:25000/
http://node01:25000/
http://node03:25010/
http://node03:25020/
集群的总资源在哪里看?
webui 8088端口可看到内存有多大,cpu核数有多少。