大数据中日志分析——5、日志分析总结
Easul Lv6

构建大数据环境的目的

如果数据量生成非常快,且非常多,而又需要对这些数据进行实时的处理,那么就需要用一些工具进行自动化的操作
flume用于实时高效的数据收集,通过source组件监听和收集某个目录下日志的生成,然后缓存到channel,通过sink指定kafka的topic将数据发给kafka
kafka是一个分布式消息订阅系统,组件会注册到zookeeper,在将flume的数据存到topic之后,会实时将数据推送给消息订阅者,这里是spark
spark用于接收kafka传过来的消息,并进行实时处理,语言使用的是scala,处理后的数据可以存到数据库也可以存到HDFS

Created with Raphaël 2.2.0数据源flume内部流程为source➝channel➝sinkkafaka内部流程为producer➝topic➝consumerhadoop或数据库

RDD是弹性分布式数据集(Resilient Distributed Datasets),可由spark从scala的集合本地或HDFS的文件transform创建。因为其分布式特性,一份数据可以拆开放在多台服务器,形成多个分区,一个计算任务调用一个分区的数据,并支持将任务分配给数据所在的服务器。数据在tranform的时候只记录变换的过程,也就是惰性执行,只有在action即计算的时候才会将数据进行处理。多个计算任务可能执行的是相同的处理,所以会有不必要的计算,这样就可以将计算结果cache到内存或者persist到内存、磁盘或二者都有。RDD的数据集生成后就是只读的,所以RDD的多次transform就会有多次依赖关系,从而形成了lineage(血缘)。

因为RDD只是一堆数据,当有了DataFrame之后,就相当于给RDD定义了表头,RDD数据成为了一张数据表。效率更高,代码更简洁,且SQL操作能被自动优化引擎优化。DataFrame也是分布式数据集,可从结构化的数据文件Hive中的表外部数据库已存在的RDD得到数据。

spark streaming可以从kafka, flume, Tcp socket近实时的接收数据,并实时处理。整个数据流被定义为离散流(DStream).以时间片为单位,一个时间片内的流数据叫做批数据(batch data),两个批数据的间隔是批处理时间间隔(batch interval),即一个时间片,底层是RDD。一个窗口长度(window length)可包含多个批数据,也就有多个批处理时间间隔,而滑动间隔(slide interval)就是一个窗口到另一个窗口的的时间间隔。接收数据之后先transformation,在output

常用端口

YAML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
hadoop:
8020: master的NameNode
8030: yarn.resourcemanager.scheduler.address
8031: yarn.resourcemanager.resource-tracker.address
8032: yarn.resourcemanager.address
8033: yarn.resourcemanager.admin.address
8040: yarn.nodemanager.localizer.address
8042: yarn.nodemanager.webapp.address
8088: yarn的webUI端口
50010: DataNode端口
50020: DataNode的RPC服务器地址和端口
50070: hadoop master的webUI端口
50075: DataNode的HTTP服务器端口
50090: Namenode的SecondaryNamenode
spark:
7077: spark基于standalone的提交任务的端口号
8080: master webUI端口
8081: worker webUI端口
zookeeper:
2181: zk为client提供的端口
2888: 集群内的机器通讯使用的端口,只有leader开启次端口
3888: 选举leader使用的端口
kafka:
9092: kafka为client提供的端口
flume:

hadoop能用到的系统端口
hadoop常见端口

 评论