阿里巴巴在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 (权限不够)"
全局搜索一下,可以看到BlobServerPutTest是位于flink-runtime_2.11中的。
从代码来看,应该测试的预期结果就是permission denied:
而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打包
这是我的一个编译好的版本(基于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有了很大区别:
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目录下,即可以访问
其中一个页面: