Sylph 被定位为大数据生态中的一站式流计算平台,您可以使用它来开发、管理、监控、运维您的流计算.
什么没看懂? 没关系apache- hive您总听过吧?(如果依然不知道,那么您最先需要看下最基础的hadoop三件套Hdfs,Yarn,Hive(MapReduce))
hive将您编写的hive-sql转换成分布式MR批计算Job(默认engine),然后自动在Hadoop- Yarn上执行,那么Sylph就是将Stream-Sql转换成分布式(Flink,…)流计算Job,然后同样自动在Hadoop-Yarn上执行,
您可以形象的把它比喻为Stream-Hive
我们来看一个简单导航demo:
-- 注册json解析 udf create function get_json_object as 'ideal.sylph.runner.flink.udf.UDFJson'; -- 定义数据流接入 create input table topic1( _topic varchar, _key varchar, _message varchar, _partition integer, _offset bigint ) with ( type = 'kafka', kafka_topic = 'TP_A_1,TP_A_2', "auto.offset.reset" = latest, kafka_broker = 'localhost:9092', kafka_group_id = 'streamSql_test1' ); -- 定义数据流输出位置 create output table event_log( key varchar, user_id varchar, event_time bigint ) with ( type = 'hdfs', -- write hdfs hdfs_write_dir = 'hdfs:///tmp/test/data/xx_log', eventTime_field = 'event_time', format = 'parquet' ); -- 描述计算逻辑 insert into event_log select _key,get_json_object(_message, 'user_id') as user_id, cast(get_json_object(_message, 'event_time') as bigint) as event_time from topic1
+ 第一步: 您只需编写好Stream Sql,然后Sylph会编译您的sql,将其翻译成具体的物理计算引擎
+ 第二步: 然后你接下来只需点击任务上线,然后sylph就会将这个分布式流计算任务提交到Hadoop-Yarn上运行。 ok到此,你的大数据分布式流计算程序已经上线了,接下来您可以直接在sylph的代理页面查看您的job, 了解下参数情况等,可以在这里管理和杀死job。
对了如果您的分布式job挂了,那么sylph还会尝试重新期待并恢复它。
下面我将列出一些主要的特性, 这里先简单看下sylph的设计:
1, 如上所诉您已经出窥了一些sylph一站式方面的特性
2, Stream SQL支持
3, connector-plugin层提供统一抽象层,随着时间推移我们会有非常多稳定connector供你选择,如果您选择自己编码那么您的代码逻辑甚至无需做改动,就可以同时支持Flink,Spark等引擎
4, Stream SQL支持支持Watermark技术,注:Apache Flink-Table-SQL目前还不支持
5, 支持批流维表join(俗称打宽),注: Apache Flink-Table-SQL目前还不支持
6, Stream SQL支持同时支持基于Prscess Time和 Event Time两种语义进行计算,注:Apache Flink-Table-SQL目前还不支持
未来我们会添加local模式,on ks8等模式,因为一站式的原因,您甚至无做任何业务代码修改就可以非常容易进行过渡和升级,并且local模式可能会在没有hadoop的边缘计算场景中带来价值.
最后欢迎您的阅读!