首页 文章 精选 留言 我的

精选列表

搜索[日志],共10013篇文章
优秀的个人博客,低调大师

squid 日志分析 - hadoop hive

#!/usr/bin/env python #-*-coding:UTF-8-*- """ @Item : Hadoop analysis squid log @Author : Villiam Sheng @Group : Linux Group @Date : 2012-09-13 @Funtion: Use hadoop squid processing log ...................... """ import os,re,threading,tarfile,shutil,time,sys,datetime import sys,traceback sys.path.append('/usr/local/hive/lib/py') from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from hive_service import ThriftHive from hive_service.ttypes import HiveServerException class split_log(threading.Thread): def __init__(self,files,lock): threading.Thread.__init__(self) self.files = files self.path = '/data1/squid_log' self.lock = lock def log(self,info): files = open('%s/split_log'%self.path,'a') try: files.write(info) except IOError: files.close() files.close() size = os.path.getsize('%s/split_log'%self.path) / 1024 if size >= 1024: fp = open('%s/split_log'%self.path,'w') fp.write('') fp.close() def run(self): try: if not os.path.isdir(self.files): tar = tarfile.open('%s/%s'%(self.path,self.files)) for name in tar.getnames(): tar.extract(name,'/%s/%s/'%(self.path,self.files.split('.tgz')[0])) tar.close() self.log('%s file:%s run.info:tar done \n'%(time.ctime(),self.files)) except Exception,e: self.log('%s files:%s run.info:%s \n'%(time.ctime(),self.files,e)) try: fp = open('%s/%s/access.log.0'%(self.path,self.files.split('.tgz')[0]),'r') for i in fp.readlines(): b = i.split() fps = open('%s/%s/tmp.log'%(self.path,self.files.split('.tgz')[0]),'a+') fps.write("%s\t%s\t%s\t%s\t%s\n" %(datetime.datetime.strptime(b[3].split('[')[1],'%d/%b/%Y:%H:%M:%S').strftime('%Y%m%d%H%M%S'),b[0],i.split('/')[4],b[-5],b[-1])) fps.close() fp.close() except Exception,e: self.log('%s file:%s inert.info:insert done \n'%(time.ctime(),self.files.split('.tgz')[0])) try: asql="load data local inpath \'%s/%s/tmp.log\' overwrite into table squid.squid_tmp partition(pt_ip = \'%s\')" %(self.path,self.files.split('.tgz')[0],self.files.split('.tgz')[0]) self.lock.acquire() transport = TSocket.TSocket('127.0.0.1',10000) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = ThriftHive.Client(protocol) transport.open() try: client.execute(asql) except: pass transport.close() self.lock.release() os.remove ('%s/%s'%(self.path,self.files)) shutil.rmtree('%s/%s' %(self.path,self.files.split('.tgz')[0])) except: self.log('Exception error : %s '%traceback.print_exc()) def work(): ip_list = re.compile('^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$') lock = threading.RLock() for i in os.listdir('/data1/squid_log/'): if not ip_list.match(i.split('.tgz')[0]): continue st = split_log(i,lock) st.start() while threading.active_count() != 1: time.sleep(1) transport = TSocket.TSocket('127.0.0.1',10000) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = ThriftHive.Client(protocol) transport.open() client.execute("use squid") client.execute("set hive.exec.dynamic.partition=true") client.execute("set hive.exec.dynamic.partition.mode=nonstrict") sql = "insert into table squid_log partition(pt_ip, pt_dt) select visittime, clientip, visitdom, visiturl, visitstat, pt_ip, substr(visittime, 1, 8) as pt_dt from squid_tmp" client.execute(sql) transport.close() if __name__ == "__main__": try: pid = os.fork() if pid > 0 : sys.exit(0) os.setsid() os.chdir('/') sys.stdin = open("/dev/null","r+") sys.stdout = os.dup(sys.stdin.fileno()) sys.stderr = os.dup(sys.stdin.fileno()) while True: work() time.sleep(300) work() except: pass 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1142212

优秀的个人博客,低调大师

squid 日志分析 - hive 删除

#!/usr/bin/env python #-*-coding:utf8-*- import os,re,threading,tarfile,shutil,time,sys,datetime import sys,traceback sys.path.append('/usr/local/hive/lib/py') from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from hive_service import ThriftHive from hive_service.ttypes import HiveServerException transport = TSocket.TSocket('127.0.0.1',10000) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = ThriftHive.Client(protocol) transport.open() client.execute("use squid") class threads_del(threading.Thread): def __init__(self,pt_ip,pt_dt): threading.Thread.__init__(self) self.pt_ip = pt_ip self.pt_dt = pt_dt def run(self): client.execute("set hive.exec.dynamic.partition=true") client.execute("set hive.exec.dynamic.partition.mode=nonstrict") sql = "alter table squid_log drop partition(pt_ip = '%s', pt_dt=%s)"%(self.pt_ip,self.pt_dt) client.execute(sql) def work(): client.execute('show partitions squid_log') info = client.fetchAll() infos = {} for i in info: a = re.split("/",i) try: infos[re.split("=",a[0])[1]].append(re.split("=",a[1])[1]) except: infos[re.split("=",a[0])[1]] = [] infos[re.split("=",a[0])[1]].append(re.split("=",a[1])[1]) for k,v in infos.items(): st = threads_del(k,min(v)) st.start() st.join() while threading.active_count() >1: time.sleep(1) transport.close() if __name__ == "__main__": st = work() 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1142457

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册