elasticsearch在2.3.5版本中,在写入数据量比较大的时候经常遇到load超高的情况。决定升级到5.1.2看看效果。目前来看升级后机器load有显著降低。
以下记录升级过程中需要注意的一些事情,以及java api和spark api的变化。
kafka安装和配置
以0.9.0.1版本kafka为例,介绍kafka的安装、配置步骤,以及如何开启jmx等。
greenplum分区
创建分区表
|
|
分区前后性能对比
分区前后复杂sql的执行时间对比,单位是秒
分区前 | 分区后 |
---|---|
3.666 | 2.836 |
7.105 | 2.873 |
4.763 | 2.624 |
6.018 | 3.070 |
5.024 | 2.310 |
3.101 | 1.967 |
5.357 | 3.095 |
查看表空间大小
查看指定表大小
1select pg_size_pretty(pg_relation_size('test'));查看指定schema下所有表大小
1select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc;
附录
copy
|
|
检查schema是否存在
|
|
检查table是否存在
|
|
参考
spark自定义分区策略(partitioner)
Spark内部提供了HashPartitioner
和RangePartitioner
两种分区策略,但有些场景下,我们希望能够根据业务需求自定义分区策略。只需要继承Partitioner
,然后实现其方法即可。
|
|
spark使用jdbc connector连接数据库
使用spark-shell测试
|
|
使用 --driver-class-path
参数在进行计算时会报错, Did not find registered driver with class com.mysql.jdbc.Driver
。猜测是由于yarn没有默认加载mysql-connector-java.jar造成的。
创建DataFrame
参考
kafka manager
yahoo出品的kafka管理工具,git地址https://github.com/yahoo/kafka-manager。
手动打包
kafka-manager用scala
编写,需要使用sbt
进行打包。sbt环境配置这里不详细介绍,但为加快依赖包下载速度,可以修改project/plugins.sbt
,增加或修改resolvers
。
|
|
然后使用./sbt clean dist
进行打包,打包后的zip包在target/universal/
下。
也可以直接下载我打包好的zip包:
配置修改
解压后启动前需要进行一些设置:
修改
conf/application.conf
中kafka-manager.zkhosts
为你自己的zookeeper地址,此zk地址是kafka-manager使用的,用来保存一些kafka-manager的状态等。多个zk时用逗号分隔,
1kafka-manager.zkhosts="my.zookeeper.host.com:2181,other.zookeeper.host.com:2181"更改日志目录,修改
conf/logback.xml
中name为FILE
的appender。123456789101112<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- <file>${application.home}/logs/application.log</file> --><encoder><pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>logs/application.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>5</maxHistory><totalSizeCap>5GB</totalSizeCap></rollingPolicy></appender>
启动
指定java home和端口启动。
|
|
Oozie中添加sqoop用到的jdbc包
CDH5中,在oozie中执行sqoop命令时,可能需要手动添加一些jdbc包。
将jar包放置到hdfs中lib目录
|
|
然后使用oozie的sharelibupdate
命令更新
|
|
参考
Linux iostat监测IO状态
Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。
常见用法: