使用Hadoop和Hive来进行应用的日志数据分析
整个架构流程的背景是:
1、各个应用产生日志打印约定格式的syslog,然后在服务器端部署syslog-ng server做日志的统一收集。
2、在syslog-ng server所在的服务器做日志文件的分类然后发送日志消息给storm做实时流数据统计。
3、同时每日凌晨启动rsync服务将前一天的日志文件发送到Hadoop和hive服务器做非实时数据分析
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------
使用hadoop和hive来进行应用的日志数据分析的详细流程:
1、安装hadoop
2、安装hive
hive的安装非常简单,只需要下载安装包:
wget http://mirrors.cnnic.cn/apache/hive/hive-0.10.0/hive-0.10.0.tar.gz
然后解压后,修改一点点配置文件用于连接hadoop的配置即可。
3、在hive中创建表
/**
* 根据日期来创建hive的邮件日志表
* @param date
* @return
* @throws SQLException
*/
public String createTable(Calendar cal) throws SQLException
{
String tableName = getTableName(cal.getTime());
StringBuilder sql = new StringBuilder();
sql.append("create table if not exists ");
sql.append(tableName);
sql.append("( ");
sql.append("syslog_month string, ");
if(cal.get(Calendar.DAY_OF_MONTH)<10){
sql.append("syslog_day_pre string, ");
}
sql.append("syslog_day string, ");
sql.append("syslog_time string, ");
sql.append("ip string, ");
sql.append("source string, ");
sql.append("message array<string>, ");
sql.append("information1 string, ");
sql.append("information2 string, ");
sql.append("information3 string, ");
sql.append("information4 string, ");
sql.append("information5 string) ");
sql.append("row format delimited fields terminated by ' ' ");
sql.append("collection items terminated by ',' ");
sql.append("map keys terminated by ':' ");
LOG.info("[创建HIVE表的DLL]"+sql.toString());
HiveUtil.createTable(sql.toString());
return tableName;
}