千家信息网

spark+kafka+redis统计网站访问者IP

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,*目的是为了防采集。需要对网站的日志信息,进行一个实时的IP访问监控。1、kafka版本是最新的0.10.0.02、spark版本是1.613、下载对应的spark-streaming-kafka-a
千家信息网最后更新 2026年11月01日spark+kafka+redis统计网站访问者IP

*目的是为了防采集。需要对网站的日志信息,进行一个实时的IP访问监控。

1、kafka版本是最新的0.10.0.0

2、spark版本是1.61

3、下载对应的spark-streaming-kafka-assembly_2.10-1.6.1.jar放到spark目录下的lib目录下

下载地址 https://repo1.maven.org/maven2/org/apache/spark/

4、利用flume将nginx日志写入到kafka(后续补充)

5、编写python脚本,命名为test_spark_collect_ip.py

# coding:utf-8__author__ = 'chenhuachao''''利用pyspark连接kafka,统计访问者的IP信息,做出的一个实时的防采集'''import sysreload(sys)sys.setdefaultencoding('utf-8')import redisimport datetimefrom pyspark.streaming.kafka import KafkaUtilsfrom pyspark.streaming import StreamingContextfrom pyspark import SparkConf, SparkContextdef parse(logstring):    try:        infodict =  eval(logstring.encode('utf-8'))        ip =infodict.get('ip')        assert infodict['tj-event'] == 'onload'        assert ip        return (ip)    except:        return ()def insert_redis(rdd):    '''将符合条件的结果写入到redis'''    conn = redis.Redis(host='redis的IP',port=6380)    for i,j in rdd.collect():        print i,j        if j >=3 and j != "":            conn.sadd('cheating_ip_set_{0}'.format(datetime.datetime.now().strftime("%Y%m%d")),i)            conn.expire('cheating_ip_set',86400)if __name__ == "__main__":    topic = 'statis-detailinfo-pageevent'    sc = SparkContext(appName="pyspark_kafka_streaming_chc")    ssc = StreamingContext(sc,10)    checkpointDirectory = '/tmp/checkpoint/cp3'    ssc.checkpoint(checkpointDirectory)    kvs = KafkaUtils.createDirectStream(ssc,['statis-detailinfo-pageevent'],kafkaParams={"auto.offset.reset": "largest","metadata.broker.list":"kafka-IP:9092,kafka-IP:9092"})    #kvs.map(lambda line:line[1]).map(lambda x:parse(x)).pprint()    #这里用到了一个滑动窗口的概念,需要深入了解的可以参考http://www.kancloud.cn/kancloud/spark-programming-guide/51567    #ipcount = kvs.map(lambda line: line[1]).map(lambda x:parse(x)).map(lambda ip:(ip,1)).reduceByKey(lambda ips,num:ips+num)    ipcount = kvs.map(lambda line: line[1]).map(lambda x:parse(x)).map(lambda ip:(ip,1)).reduceByKeyAndWindow(lambda ips,num:ips+num,30,10)    # 预处理,如果需要多次计算则使用缓存    # 传入rdd进行循坏,即用于foreachRdd(insertRedis)    ipcount.foreachRDD(insert_redis)    # 各节点的rdd的循坏    # wordCounts.foreachRDD(lambda rdd: rdd.foreach(sendRecord))    ssc.start()

6、执行命令

bin/spark-submit --jars lib/spark-streaming-kafka-assembly_2.10-1.6.1.jar test_spark_collect_ip.py

7、输出界面

8、更多信息,请参考spark的官网http://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#module-pyspark.streaming.kafka

信息 实时 日志 版本 目录 参考 网站 访问者 统计 命令 地址 更多 条件 概念 界面 目的 结果 缓存 脚本 节点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 中国互联网科技工作委员会毛军 国智互联网科技 科技互联网政务服务 重庆互联网络科技 鑫亿盛互联网科技 奇酷互联网络科技公司 互联网科技有限公司 翻译 成都玖崟互联网科技有限公司乐商圈怎么样 温州喔噻互联网科技有限公司 字节跳动和互联网科技 互联网科技与管理 银川新华互联网科技学校联系电话 恒生互联网科技业指数调整周期 华中科技大学互联网的牛人 互联网科技资金流入 南京一网一红互联网科技有限公司 互联网时代高科技布局 广西泛欧互联网科技有限公司 武汉亿视互联网科技有限公司 今日互联网科技 互联网科技媒体 广州紫鲸互联网科技 互联网科技公司需要的职位 广州慧亚互联网科技怎么样 华服互联网科技官网 雨阳互联网卡科技有限公司 从那以后互联网科技有限公司 互联网科技融合创新 科技和互联网行业的特点
0