Blink编译及使用

时间:2024-05-23 09:00:40

阿里巴巴在2019年1月27日左右开源了Blink,Blink目前的版本是基于Flink1.5.1修改的,然后增加了一些比较好的特性。github地址为:https://github.com/apache/flink/tree/blink

 

1.Blink的编译

下面记录一下编译和使用的过程:

 

1.使用mvn clean package打包,遇到报错:

BlobServerPutTest.testPutBufferFailsIncomingForJobHa 
Expected: (an instance of java.io.IOException and exception with message a string containing " (Permission denied)")
     but: exception with message a string containing " (Permission denied)" message was "/tmp/junit7676625048359236107/junit6945675010342658265/blobStore-9db30c78-585e-45aa-9e55-78b255a14b8f/incoming/temp-00000001 (权限不够)"

Blink编译及使用

全局搜索一下,可以看到BlobServerPutTest是位于flink-runtime_2.11中的。

从代码来看,应该测试的预期结果就是permission denied:

Blink编译及使用

 

而test之所以会失败是因为一个中文环境,即预期是“Permission denied”而其实报错出的结果是中文的“权限不够”,导致test失败。

所以,我们用mvn clean package -Dmaven.test.skip=true -Dhadoop.version=2.7.2 忽略测试项进行打包即可。

 

2.[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.6:install-node-and-npm (install node and npm) on project flink-runtime-web_2.11: The plugin com.github.eirslett:frontend-maven-plugin:1.6 requires Maven version 3.1.0 -> [Help 1]

需要用maven 3.1.0打包

Blink编译及使用

这是我的一个编译好的版本(基于hadoop2.7.2):flink-blink-bin.tar.gz

 

blink与flink1.7使用有出入之处:

1.taskmanager memory 不支持5g这样的写法,单位为m,故5g只能写成5120

2.报错:
java.lang.NoSuchMethodError: org.apache.flink.table.api.java.StreamTableEnvironment.registerFunction(Ljava/lang/String;Lorg/apache/flink/table/functions/ScalarFunction;)V

需要将blink中打包好的flink-table_2.11-1.5.1.jar部署到私有仓库,或者安装到本地仓库。

其中部署到私有仓库的写法为:

mvn deploy:deploy-file -DgroupId=com.alibaba.blink -DartifactId=flink-table_2.11 -Dversion=1.5.1 -Dpackaging=jar -Dfile=路径\flink-table_2.11-1.5.1.jar -Durl=http://私有仓库ip/nexus/content/repositories/releases/ -DrepositoryId=releases

然后将pom依赖改为:


      com.alibaba.blink
      flink-table_2.11
      1.5.1

修改完依赖之后就可以发现项目的registerFunction在报错,原因是blink里将ScalarFunction,AggregateFunction等移动到了api包下。根据IDEA的报错重新修改一下import即可。

例如,把

import org.apache.flink.table.functions.AggregateFunction;

修改为:

import org.apache.flink.table.api.functions.AggregateFunction;

 

其余依赖的修改方式与之类似。

 

启动之后的监控界面,已经与原版的flink有了很大区别:

Blink编译及使用

 

2.Blink帮助文档生成

 

1.安装ruby,注意需要在非root用户下操作

ruby2.4下载:https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz

./configure --prefix=/home/xxxuser/ruby2.4

make

make install

 

2.安装完成后,运行ruby -v可以看到还是旧版本的ruby,此时需要建立软链

mv /usr/bin/ruby /usr/bin/ruby.bak

sudo ln -s /home/xxxuser/ruby2.4/bin/ruby /usr/bin/ruby

这时就可以看到ruby -v的版本已经变为了2.4

 

3.运行

gem install bundler

cd flinkpath/docs/

bundler install

注意,需要把gem的源和bundler的源都改成国内的,要不然会出现卡死的现象:

gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/

bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems

 

4.安装完毕后,运行flinkpath/docs下的./build_doc.sh

 

链接是我生成的一份blink帮助文档:blink帮助文档。在本站点可以在线访问的链接为:blink帮助文档

使用方法:

0.解压缩

1.将文件里10.67.1.174:8080全局替换成你的tomcat的ip和端口

2.将文件夹放到tomcat的webapp目录下,即可以访问

其中一个页面:

Blink编译及使用