互联网公司每天都要统计日志文件,从中挖掘出想要的信息,比如一个软件的安装量、活跃度等。这些信息都需要入库,并进行展示。下面,对这个实现过程进行讲解。
具体的过程可分为以下几个步骤:
(1)awk统计日志文件,并将统计结果拼接成sql语句;
(2)写shell脚本,将这些sql语句入库;
(3)将shell脚本加入linux中的计划任务中,让其每天凌晨定时执行,从而实现每天自动分析日志并入库;
下面分步骤进行讲解。
一. awk统计日志文件,并拼接成sql语句awk是对日志文件分析的一个有效命令,下面通过统计
二. 通过shell脚本将sql语句入库上面我们通过了awk实现了日志文件的统计结果转化成sql语句,下面我们只需要将读取这些sql语句,并将他们执行即可,这样统计结果自然就录入到数据库中了。入库的shell命令如下所示:
mysql -u$user -p$pass -D $db -e “insert into t_table values(xxx,xxx,xxx);”
参考链接:http://blog.csdn.net/jiedushi/article/details/6448740
这里sql语句入库是从入到主库中,当执行这些insert语句时,读取分离代理器会判断这些sql操作是写数据库操作,会将其写到数据库的主库中。但是,当用户请求读取数据库时,也即select操作,读取分离代理器会判断出select是读操作,会将用户请求转移到从库中,所以读的数据是从从库中读取的。即写是写到主库中,读是从从库读。
参考链接:http://www.cnblogs.com/yangligogogo/articles/1939938.html
将shel脚本加入linux中计划任务,可以通过contrab -e命令实现,通过这个命令可以打开当前用户的计划任务编辑器,用户只需要在这里输入自己想要什么时间想要执行的命令就可以了。linux会定期地从该文件中读取命令并执行。
我们输入命令:contrab -e
然后会打开一个编辑器,在其中输入下面这个命令:
0 5 * * * cd /home/ganji/seanzhao; sh dingding_insert_db.sh
之后保存退出即可。这样便加入了linux的计划任务中,上面的命令会每天凌晨5点执行。
参考链接:http://blog.csdn.net/21aspnet/article/details/6798179
最近cloudera hue 环境没有搭建成功,于是开始着手于cloudera 整套环境的搭建,发现网上也有一些文章,
于是借鉴了一些,开始自己着手安装:
1. 安装cloudera manager
cloudera manager 可以通过它来安装cloudera 整个环境,于是先安装 cloudera manager
准备安装环境:
系统:centos 6.3 64位
安装:jdk
配置好网络代理和yum代理 (这里是公司环境需要代理上网)
最好在/etc/yum.conf增加timeout时间,timeout=55555
关闭防火墙 service iptables stop
关闭selinux:setenforce 0或修改/etc/selinux/config:SELINUX=disabled
安装 postgrasql 提供cloudera manager数据库支持
----------------------------------------------------------------------------------
安装 postgrasql
在root用户下执行
安装或者升级postgresql-libs
yum upgrade postgresql-libs
安装postgresql
yum install postgresql postgresql-server
初始化数据库以及启动服务
service postgresql initdb
service postgresql start
yum安装postgresql后的安装路径为:/var/lib/pgsql下,主要配置文件在其data文件夹下,进入data文件夹
修改postgresql.conf文件
如果想让PostgreSQL监听整个网络的话,将listen_addresses前的#去掉,并将listen_addresses = 'localhost'改成listen_addresses = '*' ;端口 前面的 #也去掉
重启服务/etc/init.d/postgresql restart,连接成功
-----------------------------------------------------------------------------------
准备安装文件cloudera-manager-installer.bin,这是个二进制文件,下载地址:
https://ccp.cloudera.com/display/SUPPORT/Cloudera+Manager+Downloads, 这个要在64位的机器上运行,
我让它运行在CentOS-6.3,x86_64上。然后设置下执行权限,chmod u+x cloudera-manager-installer.bin
(我就是在这一步卡了半天,老是提示权限神马滴)接着就直接执行它:
sudo ./ cloudera-manager-installer.bin
在整个安装过程中,要确保你的机器能够联网,会出现让你选择的画面,一 般就enter、next、accpet就行了,然后慢慢等待等到它自行安装结束。
2. 安装cloudera cdh4环境
进入cloudera manager 界面 http://10.1.245.171:7180 用户名:admin 密码:admin
安装步骤一点一点的安装,但是时间会比较长,完成之后直接可以使用了。
从昨天开始,这个问题一直困扰着我。
PHP写的网页,一直是乱码。诡异的是,有一个文件夹的文件不是乱码,打开以后显示正常。
把里面的文件挪到其他地方,或者把内容完全复制到另外一个文件,都还是乱码。
网页内也指定是UTF-8了,网页内容也是UTF-8的。完全是Linux下的操作,按说不会有Windows下那么多蛋疼的问题。
这个问题真是纠结啊…………
后来仔细查看PHP.ini这个文件,有个关于default_charset 是处于注释状态的,而且后面的默认值不是UTF-8。
取消注释,将其改为UTF-8,发现还是不行!嚓!
default_charset = "utf-8"
这都不是事儿,重启apache,成功!
让我纳闷的是,为什么之前有个文件夹下的网页不乱码……
此系统是Fedora core 4, 32bit, php是5.2.8版本的。在比较老的系统上做开发,真是蛋疼10倍不止!