简介: 日志是任何计算系统中一个必不可少的部分,支持从审计到错误管理等功能。随着日志的发展和日志来源数量的不断增加(比如在云环境中),有必要提供一个可扩展的系统来高效处理日志。这篇实践将探讨如何在典型 Linux 系统上使用 Apache Hadoop 来处理日志。
日志形态千差万别,但随着应用程序和基础架构的发展,结果产生了大量对用户有用的分布式数据。从 Web 和邮件服务器到内核和引导日志,许多现代的服务器拥有丰富的信息集。大量的分布式数据是 Apache Hadoop 的完美应用,就像日志文件(按时间排序的结构化文本数据)一样。
您可以使用日志处理来提取各种信息。其中最常用的一种用法是提取错误,或是对某个系统中的一些事件(比如登录失败)的发生次数进行计数。您还可以提取某些类型的性能数据,比如每秒连接数或每秒处理的事务数。其他有用的信息包括 Web 日志中的站点访问量(减少)的提取(映射)和构造。这一分析除了支持检测文件访问统计之外,还支持对惟一用户访问的检测。
概述
关于本文通过练习开始工作之前,您可能想阅读以下文章:
使用 Linux 和 Hadoop 进行分布式计算
用 Hadoop 进行分布式数据处理,第 1 部分:入门
用 Hadoop 进行分布式数据处理,第 2 部分:进阶
用 Hadoop 进行分布式数据处理,第 3 部分:应用程序开发
使用 Apache Pig 处理数据
这些练习将为您提供以下几方面的实践:
建立一个简单的 Hadoop 环境并运行它
与 Hadoop 文件系统 (HDFS) 进行交互
编写一个简单的 MapReduce 应用程序
编写一个过滤的 Apache Pig 查询
编写一个累计的 Pig 查询
先决条件
要从这些练习中获得最大的益处,您应当掌握 Linux® 的基本应用知识。对虚拟设备有一些了解也有助于建立一个简单的环境。
要建立 Hadoop 环境并运行它,有两种方法。第一种是安装 Hadoop 软件,然后针对您的环境(最简单的情况是一个单节点实例,其中所有的守护程序都在单个节点上运行)对其进行配置。参见 用 Hadoop 进行分布式数据处理,第 1 部分:入门
以了解有关的详细信息。
第二种(也是较为简单的一种)方法是通过使用 Cloudera 的 Hadoop Demo VM(包含一个 Linux 映像和一个预配置的 Hadoop 实例)。Cloudera 虚拟机 (VM) 运行于 VMware、基于 Kernel 的虚拟机或 Virtualbox 之上。
选择一种方法,并完成安装。然后,完成以下任务:
通过发出一个 HDFS ls 命令来验证 Hadoop 是否正在运行。HDFS 是一种专用的文件系统,用来管理一个 Hadoop 集群内的数据和副本,并将它们分配给各个计算节点,以便高效处理它们。尽管 HDFS 是一种专用的文件系统,但它仍然可以实现许多典型的文件系统命令。要检索 Hadoop 的帮助信息,可发出 hadoop dfs 命令。请执行以下任务:
在 HDFS 内创建一个测试子目录。 使用 copyFromLocal 将一个文件从本地文件系统移动到 HDFS 子目录中。 对于额外的练习,请使用 hadoop dfs 命令查看 HDFS 内的文件。