作为一名IT从业者,同时也是一名计算机专业的教育工作者,我来回答一下这个问题。
首先,当前大数据的知识体系还是比较庞大的,随着大数据技术生态的逐渐成熟和完善,大数据领域也逐渐形成了更多的岗位细分,从事不同的岗位细分方向则需要学习不同的知识。
大数据分析工具OurwayBI采用Node.js。Node.js是一个Javascript运行环境(runtime),它实际上是对GoogleV8引擎进行了封装。V8引擎执行Javascript的速度非常快,利用基于时间序列的内存计算技术,减少与数据库的交互,可大大提升效率。操作指引更易上手:OurwayBI为了让用户不进行任何培训即可掌握常用操作,设置了操作指引,智能引导用户逐步掌握基本操作及各项技巧。整个产品的UI进行了大量细节优化,以增加使用者的美观要求与使用体验等。
奥威BI轻松实现大屏监控,满足各种大屏可视化应用场景!
不论是内部战情观察,还是外部成果展示,不论是会议室,还是生产现场,透过大屏监控,企业关键数据一览无遗!
包括数十种酷炫图表,支持文本、图片、视频等,不论单块或拼接LED屏幕,不论大小,都可以任意布局,完美自适应。
大屏可视化可实现实时刷新,不论是双11实时交易状况,还是生产现场,都可以及时监控、及时预警。
Flume和Kafka有一部分功能是相同的,但是整体来看,两者的差别还是很大的;它们使用的场景有所不同,但是可以相互配合使用。
Flume
简单的说,Flume是分布式日志收集系统,它把各个服务器上的日志收集起来,传送到制定的地方,比如传送到HDFS中。
Kafka
Kafka的定位是分布式消息中间件,自带存储,提供push和pull存取数据功能。
使用场景
在实际应用中,系统实时产生的日志需要最后进入HDFS,但是生产上的日志数量会有波动,比如由于访问量的增加,导致突然之间产生大量的日志,这时候可能会导致日志写入HDFS失败,所以这时候可以先把日志数据写入到Kafka中,再由Kafka导入到HDFS中。
总结:在日志采集系统中,把Kafka当做日志缓存更加合适,Flume做数据采集,因为它可以定制很多数据源,减少开发量,所以Flume和Kafka可以配合起来一起工作。
整体的流程是这样的:
服务器上的日志Kafka-->HDFS-->离线计算
服务器上的日志Kafka-->Storm
希望我的回答能够帮助到你!
Kafka是如何保证数据可靠性和一致性?
什么是可靠性
对于消息系统来说,所谓可靠性就是指消息可以从生产者(producer)准确的送达到消费者(consumer)。可靠性保证有三个层次:
- At most once 最多一次。消息可能会丢失,但是决不重复。
- At least once 至少一次。消息决不丢失,但可能会重复。
- Exactly once 恰好一次。这是最完美的,既不丢失,也不重复。
如果要可靠的准确的传达消息,需要生产者程序,消息系统和消费者程序相互合作。
什么是一致性
对于消息系统来说,一致性是指,如果一个消费者c1读到消息m1的offset是x,那么之后的任何消费者读到的offset是x的消息一定也是c1。
可以参看我的一个视频《分布式系统中的强一致性和弱一致性》
Kafka如何保证可靠性和一致性
如果要可靠的准确的传达消息,需要生产者程序,消息系统和消费者程序相互合作。
生产者程序 Producer
生产者需要确认消息成功送达kafka的服务区broker,并且得到broker的返回消息,确认消息已经提交(commit)。如果没有成功返回需要重发,直到发送成功。
详细的配置解释,可以参考我的头条文章《Kafka的可靠性保证 - 生产者的配置》
Kafka服务器集群 Cluster
Kafka的服务器是一个集群,集群中至少需要包含3个以上的节点。通过主从备份可以保证不丢消息。只要提交的消息就保证不丢。
详细的配置解释,可以参考我的头条文章《Kafka的一致性保证》
消费者程序 Consumer
消费者从Kafka读取消息以后要妥善处理。所谓妥善处理,就是完成自己获取这一条消息的目标,比如生成一条业务数据存入数据库,或者发送消息到其他的系统。
消费者需要准确的维护offset,也就是消费到哪一条消息了。如果维护不好,就会导致丢消息或者重复消费。可以参考我的头条动画视频《[动画] 如何设计可靠的Kafka的消费者程序 - exactly once》。
详细的配置解释,可以参考我的头条文章《Kafka的可靠性保证 - 消费者的配置》
本人,@小马过河Vizit,专注于分布式系统原理和实践分享。希望利用动画生动而又准确的演示抽象的原理。欢迎关注。
关于我的名字。小马过河Vizit,意为凡事像小马过河一样,需要自己亲自尝试,探索才能获得乐趣和新知。Vizit是指Visualize it的缩写。一图胜千言,希望可以利用动画来可视化一些抽象的原理。