Flink+Iceberg环境搭建
概述
作为实时计算的新贵,Flink受到越来越多公司的青睐,它强大的流批一体的处理能力可以很好地解决流处理和批处理需要构建实时和离线两套处理平台的问题,可以通过一套Flink处理完成,降低成本,Flink结合数据湖的处理方式可以满足我们实时数仓和离线数仓的需求,构建一套数据湖,存储多样化的数据,实现离线查询和实时查询的需求。目前数据湖方面有Hudi和Iceberg,Hudi属于相对成熟的数据湖方案,主要用于增量的数据处理,它跟spark结合比较紧密,Flink结合Hudi的方案目前应用不多。Iceberg属于数据湖的后起之秀,可以实现高性能的分析与可靠的数据管理,目前跟Flink集合方面相对较好。
安装
前置安装条件:
已经安装好下列组件:
mysql8
Iceberg 0.13.1
Hadoop 3.2.2
Hive3.1.2
如果尚未安装,按照上面顺序安装
本次主要基于flink1.13.6+iceberg 0.13.1进行环境搭建。
1.安装flink
安装并启动hadoop、hive等相关环境。
下载flink安装包,解压后安装:
下载地址: https://archive.apache.org/dist/flink/flink-1.13.6/
cd /usr/local
wget https://link.zhihu.com/?target=https%3A//archive.apache.org/dist/flink/flink-1.13.6/flink-1.13.6-bin-scala_2.11.tgz
tar xzvf flink-1.13.6-bin-scala_2.11.tgz
解压后目录为:/usr/local/flink-1.13.6
在/etc/profile 加入变量:HADOOP_CLASSPATH
export HADOOP_CLASSPATH=`hadoop classpath`
然后启用/etc/profile:
source /etc/profile
启动flink集群:
cd /usr/local/flink
./bin/start-cluster.sh
注:这里会遇到第一个坑,iceberg-0.13.1支持的是flink1.13.6 的版本,如果使用过高的版本,会报一堆找不到类和方法的异常(因为变动很大,不是类找不到,就是方法不对)。请使用Flink1.13.6版本进行安装。
2.下载Iceberg环境包
主要是/iceberg-flink-runtime-0.13.1.jar和flink-sql-connector-hive-2.3.6_2.11-1.11.0.jar两个jar包,并放到flnk lib目录
下载地址:
cd /usr/local/flink-1.13.6/lib
wget https://mvnrepository.com/artifact/org.apache.flink/flink-connector-hive/flink-connector-hive_2.12-1.11.0.jar
iceberg-flink-runtime-0.13.1.jar 这个jar不好找,找不到的朋友可以私信我。
3.启动Flink-sql
执行命令启动flink-sql。
./bin/sql-client.sh embedded \
-j /usr/local/flink-1.13.6/lib/iceberg-flink-runtime-0.13.1.jar \
-j /usr/local/flink-1.13.6/lib/flink-connector-hive_2.12-1.11.0.jar \
-j /usr/local/hive/lib/hive-metastore-2.3.9.jar \
-j /usr/local/hive/lib/libthrift-0.9.3.jar \
-j /usr/lo