python上传本地文件到远程hdfs_Python之——自动上传本地log文件到HDFS(基于Hadoop 2.5.2)...
一、场景描述
比如我们的网站共有5台Web设备,日志文件存放在/data/logs/日期(20180114)/access.log。日志为默认的Nginx定义格式,如下所示:
10.2.2.234 - - [12/Jan/2018:08:36:23 +0800] "POST /statistics/count/collection?company=6F79078F79D77550739EF61CD0DC2A83&nonce_str=nbmmn8bds4j84spu0c50ed0tm2ihfk3e&timeStamp=1515717383974&sign=91803CDB91BD598F29643F899E529D4A&client=ios&server=statistics HTTP/1.1" 200 287 "-" "CareHeart/2.2.7 (iPhone; iOS 10.3.1; Scale/2.00)"共有12列数据(空格分隔)分别为:
1)客户端IP
2)空白(远程登录名称)
3)空白(认证的远程用户)
4)请求时间
5)UTF时差
6)方法
7)资源(访问的路径)
8)协议
9)状态码
10)发送的字节数
11)访问来源
12)客户端信息(不具体拆分)
二、编写部署HDFS的客户端
这里,我们新建脚本文件hdfsput.py,具体通过subprocess.Popen()方法调用HDFS相关外部命令,实现创建HDFS目录及客户端文件上传,具体代码如下:
【/usr/local/python/source/hdfsput.py】
# -*- coding:UTF-8 -*-
'''
Created on 2018年1月14日
@author: liuyazhuang
'''
import subprocess
import sys
import datetime
webid = "web1" #HDFS存储日志的标志,其他Web服务器分别为web2、web3、web4、web5
currdate = datetime.datetime.now().strftime('%Y%m%d')
#日志本地存储路径
logspath = "/data/logs/" + currdate + "/access.log"
#HDFS存储日志名
logname = "access.log." + webid
try:
#创建HDFS目录,格式为website.com/20180114
subprocess.Popen(["/usr/local/hadoop-2.5.2/bin/hadoop", "fs", "-mkdir", "hdfs://liuyazhuang121:9000/user/root/website.com/" + currdate], stdout = subprocess.PIPE)
except Exception,e:
pass
#上传本地日志到HDFS
putinfo = subprocess.Popen(["/usr/local/hadoop-2.5.2/bin/hadoop", "fs", "-put", logspath, "hdfs://liuyazhuang121:9000/user/root/website.com/" + currdate+ "/" + logname], stdout = subprocess.PIPE)
for line in putinfo.stdout:
print line
三、部署HDFS的客户端
我们需要在5台Web服务器部署HDFS的客户端,以便定期上传Web日志到HDFS存储平台,最终实现分布式计算。需要安装JDK(配置环境变量)、Hadoop(配置环境变量)。然后添加上传日志的功能到crontab,内容如下:
55 23 * * * /usr/bin/python /usr/local/python/source/hdfsput.py >> /dev/null 2>&1截止目前,数据的分析源已经准备就绪,接下来的工作便是分析了。
python上传本地文件到远程hdfs_Python之——自动上传本地log文件到HDFS(基于Hadoop 2.5.2)...相关推荐
- dw本地文件传不到远程服务器,用DW上传站点 怎么设置远程服务器
用DW上传站点 怎么设置远程服务器 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 ...
- python下载文件传到服务器_windows上python上传下载文件到linux服务器指定路径【转】...
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
- 用Python上传文件
Python正在吞噬这个世界!您会发现许多热情的Python程序员和同样多的批评者,但不可否认的是,Python在当今软件开发中是一个强大的.相关的.不断增长的力量. Python只是一种语言,语言不 ...
- python上传文件到windows_python自动化-WinSpy+pywin32文件上传操作
'''百度首页搜索上传图片为例''' #前提条件 1.使用winspy定位绝对路径 #前提条件 2.安装库pywin32 采用pip安装pip install pywin32 或其他途径安装 #1.访 ...
- python上传大文件s3_aws s3上传大文件的4种方法
aws s3 上对存储的数据容量是没有限制的,各个 Amazon S3 数据元的大小可在 1 字节至 5 TB 之间,可在单个 PUT 中上传的最大数据元为 5 GB,对于大于 100 MB 的数据元 ...
- django + python上传文件的两种方式
突然心血来潮,研究了下django+python上传文件的两种方式. 第一:直接采用文件读写的方式上传 1. settings.py文件中设置文件的存放路径和文件读取路径 MEDIA_ROOT = o ...
- mac 上传ftp服务器文件大小,mac与windows通过ftp传输文件
1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...
- Linux安装FTP及使用python上传下载ftp
参考 https://www.cnblogs.com/mingforyou/p/4103022.html 一.安装及配置 1.直接使用yum安装 yum -y install vsftpd 2.配置文 ...
- idea怎么将本地文件和远程git对比_IntelliJ IDEA将文件和文件夹与本地版本进行比较...
将部署的文件和文件夹与其本地版本进行比较 IntelliJ IDEA 项目中的文件和文件夹之间的通信及其在服务器上的版本是通过部署服务器映射设置的.为了简单起见,您的 IntelliJ IDEA 项目 ...
最新文章
- 面试题:Class.forName 和 ClassLoader 有什么区别?
- 简单JS实现走马灯效果的文字(无需jQuery)
- vue项目中 axios请求拦截器与取消pending请求功能 - 年少、 - 博客园
- VM Ware 虚拟机centos 时间与本地时间不一致
- iQOO Neo6现身安兔兔数据库:高导热稀土散热加入 跑分轻松破百万
- swift可选隐式可选类型
- 《一》Android 数据库 SQlite SQLiteOpenHelper
- vue 跨域请求js添加代码
- 爱心宠物诊所管理系统
- Xshell5(远程终端工具)工具的安装使用 【免费】
- 国基北盛-openstack-容器云-环境搭建
- Vant Webapp步骤表单
- 关于深度可分离卷积 Depthwise Pointwise Convolution
- 题目二:课程设计报告
- centos7 安装oracle的问题
- ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilit
- android java json_探究Android系统中解析JSON数据的方式
- webix .datatable 表格分页
- 什么是实验室信息管理
- 工业相机镜头接口的种类
热门文章
- web框架Django一
- 在配置文件web.xml中配置Struts2的启动信息
- 转]@SuppressWarnings 详解
- Oracle logmnr使用
- Membership、MembershipUser和Roles类
- [转载] python 需求清单_Python清单操作摘要
- [转载] Python Dictionary用法小结
- [转载] NumPy 基本操作(ndarray通用函数 / 常用函数)
- SignalR 跨域解决方案全面
- 裴蜀(贝祖)定理及其证明