title |
---|
常见问题 |
以下这些是 Flink 项目中经常会被问到的常见问题。
如果你还有其他问题,请先查阅文档或[咨询社区]({{ site.baseurl }}/zh/gettinghelp.html)。
{% toc %}
Flink 是一个非常通用的系统,它以 数据流 为核心,用于数据处理和数据驱动的应用程序。这些数据流可以是实时数据流或存储的历史数据流。例如,Flink 认为文件是存储的字节流。因此,Flink 同时支持实时数据处理和批处理应用程序。
流可以是 无界的 (不会结束,源源不断地发生事件)或 有界的 (流有开始和结束)。例如,来自消息队列的 Twitter 信息流或事件流通常是无界的流,而来自文件的字节流是有界的流。
处理有界流的数据通常比无界流更有效。在(近)实时要求的系统中,处理无限的事件流要求系统能够立即响应事件并产生中间结果(通常具有低延迟)。处理有界流通常不需要产生低延迟结果,因为无论如何数据都有点旧(相对而言)。这样 Flink 就能以更加简单有效的方式去处理数据。
DataStream API 基于一个支持低延迟和对事件和时间(包括事件时间)灵活反应的模型,用来连续处理无界流和有界流。
DataSet API 具有通常可加速有界数据流处理的技术。在未来,社区计划将这些优化与 DataStream API 中的技术相结合。
Flink 独立于Apache Hadoop,且能在没有任何 Hadoop 依赖的情况下运行。
但是,Flink 可以很好的集成很多 Hadoop 组件,例如 HDFS、YARN 或 HBase。 当与这些组件一起运行时,Flink 可以从 HDFS 读取数据,或写入结果和检查点(checkpoint)/快照(snapshot)数据到 HDFS 。 Flink 还可以通过 YARN 轻松部署,并与 YARN 和 HDFS Kerberos 安全模块集成。
用户还可以在 Kubernetes、 Mesos 或 Docker 上运行 Flink,甚至可以独立部署。
- 你需要 Java 8 来运行 Flink 作业/应用程序。
- Scala API(可选)依赖 Scala 2.11。
- 避免单点故障的高可用性配置需要有 Apache ZooKeeper。
- 对于可以从故障中恢复的高可用流处理配置,Flink 需要某种形式的分布式存储用于保存检查点(HDFS / S3 / NFS / SAN / GFS / Kosmos / Ceph / ...)。
用户可以同时在小集群(少于5个节点)和拥有 TB 级别状态的1000个节点上运行 Flink 任务。
对于 DataStream API,Flink 通过配置 RocksDB 状态后端来支持大于内存的状态。
对于 DataSet API,所有操作(除增量迭代外)都可以扩展到主内存之外。
常见错误消息在[获得帮助]({{ site.baseurl }}/zh/gettinghelp.html#got-an-error-message)页面上。