Flink+iceberg环境搭建以及问题处理

概述

作为实时计算的新贵,Flink受到越来越多公司的青睐,它强大的流批一体的处理能力可以很好地解决流处理和批处理需要构建实时和离线两套处理平台的问题,可以通过一套Flink处理完成,降低成本,Flink结合数据湖的处理方式可以满足我们实时数仓和离线数仓的需求,构建一套数据湖,存储多样化的数据,实现离线查询和实时查询的需求。目前数据湖方面有Hudi和Iceberg,Hudi属于相对成熟的数据湖方案,主要用于增量的数据处理,它跟spark结合比较紧密,Flink结合Hudi的方案目前应用不多。Iceberg属于数据湖的后起之秀,可以实现高性能的分析与可靠的数据管理,目前跟Flink集合方面相对较好。

环境搭建

环境:
hadoop 2.7.7
hive 2.3.6
Flink 1.11.3
iceberg 0.11.1
jdk 1.8
mac os

下载软件

Hadoop :https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/
Hive:https://archive.apache.org/dist/hive/hive-2.3.6/
Flink: https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.13.0/flink-1.13.0-bin-scala_2.11.tgz
Iceberg:https://repo.maven.apache.org/maven2/org/apache/iceberg/iceberg-flink-runtime/0.11.1/

查看环境

安装配置

安装软件

解压hadoop压缩包:
tar -xvf hadoop-2.7.7.tar.gz /Users/xxx/work
解压hive压缩包:
tar -xvf apache-hive-2.3.4-bin.tar.gz /Users/xxx/work/hadoop-2.7.7/apache-hive-2.3.4-bin

重命名:

cd /Users/xxx/work/hadoop-2.7.7/
mv apache-hive-2.3.4-bin hive
解压flink压缩包:
tar -xvf flink-1.11.3-bin-scala_2.11.tgz /Users/xxx/work

配置环境变量

打开配置文件(针对mac系统):

cd ~
vim .bash_profile 

添加环境变量:

export HADOOP_HOME=/Users/xxx/work/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HIVE_HOME=/Users/xxx/work/hadoop-2.7.7/hive
export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin:$HIVE_HOME/conf

执行source:

source .bash_profile 

验证是否配置完成:

xxx@jiacunxu ~ % hadoop version
Hadoop 2.7.7
Subversion Unknown -r c1aad84bd27cd79c3d1a7dd58202a8c3ee1ed3ac
Compiled by stevel on 2018-07-18T22:47Z
Compiled with protoc 2.5.0

xxx@jiacunxu ~ % hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/xxx/work/hadoop-2.7.7/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/xxx/work/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in file:/Users/xxx/work/hadoop-2.7.7/hive/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> 

如上显示标识,hadoop和hive环境变量配置OK,已经生效

配置Hadoop

进入hadoop目录:

cd /Users/xxx/work/hadoop-2.7.7/etc/hadoop

配置hadoop-env.sh,配置如下一行

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home

配置core-site.xml:

<configuration>
    <property>
        
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Flink iceberg环境搭建需要以下几个步骤: 1. 安装Hadoop 首先需要安装Hadoop,并且配置好Hadoop的环境变量和相关配置文件,确保Hadoop能够正常使用。可以参考Hadoop官方文档进行安装和配置。 2. 下载Iceberg jar包 Iceberg是一个开源的数据表格管理库,可以在Hadoop上管理海量数据表。可以在Maven仓库中下载最新的Iceberg jar包,或者从GitHub上下载源码进行编译打包。 3. 配置Flink环境 在Flink环境中,需要配置Iceberg的相关依赖和参数。可以在Flink配置文件中添加以下内容: ``` flink.executor.extraClasspath: /path/to/iceberg.jar flink.sql.catalog.iceberg.type: iceberg flink.sql.catalog.iceberg.factory-class: org.apache.iceberg.flink.IcebergCatalogFactory flink.sql.catalog.iceberg.catalog-type: hadoop flink.sql.catalog.iceberg.warehouse: hdfs://<namenode-host>:<namenode-port>/<warehouse-dir> ``` 其中,`/path/to/iceberg.jar`为Iceberg jar包的路径,`<namenode-host>`和`<namenode-port>`为Hadoop的NameNode地址和端口号,`<warehouse-dir>`为Iceberg表格的存储目录。 4. 创建Iceberg表格 在Flink中,可以使用SQL语句创建Iceberg表格。例如: ``` CREATE TABLE my_table ( id INT, name STRING, age INT ) PARTITIONED BY (gender STRING) WITH ( 'type'='iceberg', 'catalog'='hadoop', 'catalog-namespace'='my_namespace', 'warehouse'='hdfs://<namenode-host>:<namenode-port>/<warehouse-dir>' ) ``` 其中,`my_table`为表格名称,`id`、`name`、`age`和`gender`为表格字段,`catalog-namespace`为Iceberg表格的命名空间。 5. 插入数据 使用Flink的DataStream或Table API插入数据到Iceberg表格中。例如: ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<MyData> dataStream = env.fromElements( new MyData(1, "Alice", 20, "female"), new MyData(2, "Bob", 30, "male") ); Table table = ... // get the Iceberg table table.executeInsert(dataStream); ``` 其中,`MyData`为数据类型,`table`为Iceberg表格对象。 通过以上步骤,就可以在Flink中搭建Iceberg环境,并且使用Iceberg管理海量数据表。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值