首页 理论教育协助企业高效查询Hadoop数据的开源项目

协助企业高效查询Hadoop数据的开源项目

【摘要】:Apache Drill,为了帮助企业用户寻找更为有效、加快Hadoop数据查询的方法,Apache软件基金会发起了一项名为Drill的开源项目。Hadoop体系如图5-3所示。图5-4Hadoop 1.0生态系统的集群架构Hadoop 2.0生态系统主要是指Hadoop 2.X及以后版本,并包含很多相关子系统的完整的大数据处理生态系统。Hadoop 2.0生态系统的集群架构主要是以MapReduce、HDFS和YARN为核心,但总体上仍然是Master/Slave结构。图5-5Hadoop 2.0生态系统的集群架构3.Hadoop运行环境服务器角色及服务类型:Master,Name Node,Secondary Name Nade,Job Tracker,Data Node。

1.Hadoop概述

Hadoop是一个能够对大量数据进行分布式处理的软件框架,是一个能够让用户轻松架构和使用的分布式计算平台。Spark是一个基于内存计算的开源集群计算系统,目的是更快速地进行数据分析。Storm是一种开源软件,一个分布式、容错的实时计算系统。Apache Drill,为了帮助企业用户寻找更为有效、加快Hadoop数据查询的方法,Apache软件基金会发起了一项名为Drill的开源项目。大数据未来发展趋势:数据资源化、数据科学和数据联盟的成立、大数据隐私和安全问题,开源软件成为推动大数据发展的动力,大数据在多方位地改善我们的生活。Hadoop的核心思想如表5-3所示。

表5-3 Hadoop的核心思想

Hadoop的架构与组成:Hadoop的核心模块包含HDFS、MapReduce和Common。HDFS是分布式文件系统,MapReduce提供了分布式计算编程框架,Common是Hadoop体系最底层的一个模块,为Hadoop各模块提供基础服务。

Hadoop的特点:Hadoop可以高效地存储并管理海量数据,同时分析这些海量数据以获取更多有价值的信息。Hadoop中的HDFS可以提高读写速度和扩大存储容量,因为HDFS具有优越的数据管理能力,并且是基于Java语言开发的,具有容错性高的特点,所以,Hadoop可以部署在低廉的计算机集群中。Hadoop中的MapReduce可以整合分布式文件系统上的数据,保证快速分析处理数据。与此同时,还采用存储冗余数据来保证数据的安全性。

2.Hadoop生态系统

Hadoop体系中HDFS解决海量数据存储,YARN解决资源管理调度问题,MapReduce解决海量数据分析,HBase解决分布式实时数据库,Spark解决内存计算问题,Flume和Spoop解决数据采集问题,Zookeeper提供分布式协作服务。Hadoop体系如图5-3所示。

图5-3 Hadoop体系

Hadoop 1.0生态系统主要是指Hadoop 1.X及其以前的版本(Hadoop 0.23.X除外),并包含很多相关子系统的完整的大数据处理生态系统。Hadoop 1.0生态系统的集群架构主要是以MapReduce和HDFS为核心,其管理节点(Master Node)主要负责两个核心功能:大数据存储(HDFS)和数据并行计算(MapReduce)的管理。Hadoop 1.0生态系统的集群架构如图5-4所示。

图5-4 Hadoop 1.0生态系统的集群架构

Hadoop 2.0生态系统主要是指Hadoop 2.X及以后版本,并包含很多相关子系统的完整的大数据处理生态系统。Hadoop 2.0生态系统的集群架构主要是以MapReduce、HDFS和YARN为核心,但总体上仍然是Master/Slave结构。Hadoop 2.0生态系统集群架构如图5-5所示。

图5-5 Hadoop 2.0生态系统的集群架构

3.Hadoop运行环境

服务器角色及服务类型:Master,Name Node,Secondary Name Nade,Job Tracker,Data Node。

Master的功能:运行Name Node、Job Tracker和Secondary Name Node节点。配置基线:CPU,双四核英特处理器;内存,24GB DDR3;网卡,2×1GB Ethernet;硬盘,至少两块SATA。说明:如果中等规模集群(400节点以上),就要考虑内存翻倍,即考虑再增加24G内存;对于大型集群,最好再翻倍,即96G以上会更好一些。

Name Node的功能:记录HDFS中元数据,即包括文件名、权限、所有者、所有组、每个文件对应的Block列表,以及每个Block的副本目前存在于哪个机器上。配置基线:内存,足够的内存;硬盘,适当的专用硬盘(稳定性至关重要)。说明:Name Node信息会随着集群的使用以及规模的增大而增加;大约100万个Block(64M或128M)或文件会占据Name Node 1GB的内存。

Secondary Name Nade的功能:功能同Name Node。配置基线:内存,足够的内存;硬盘,专用硬盘(稳定性至关重要)。说明:建议与Name Node使用一样的硬件配置,便于维护管理;Hadoop 2.0生态系统支持Name Node HA,而其中的Standby Name Node取代了Secondary Name Node,但两者功能相同,因此,二者硬件配置一样。

Job Tracker的功能:在内存中记录所有Job和Task的状态、计数器、进行情况等。配置基线:内存,满足需求大内存;CPU,双六核英特处理器。说明:Job Tracker在内存中默认保留100个运行过的Job信息;Job Tracker的内存使用情况是无法估计的,一定要关注Job Tracker的内存占用情况。

Data Node的功能:每个节点同时既是计算也是存储。配置基线:内存,64GB DDR3;网卡,双1GB网卡;硬盘控制器,SAS 6GB/S;硬盘,12×3 TB SATA;网络,2×1GB Ethernet。说明:对于存储,由于HDFS默认是三个副本,如果系统每天产生1TB数据,则HDFS的需求就增长3TB;对于计算,运行MapReduce需要一定的临时空间,一般考虑按照磁盘空间的20%~30%作为MapReduce的临时目录。

4.单节点部署

基础知识:熟悉虚拟机(virtualbox/vmware),熟悉Linux基本命令(下载文件,使用vi/vim编辑文件,创建文件和创建目录)。

准备工作:在虚拟机中安装好Linux(centos7),使用桥接模式配好网络。

单节点部署安装步骤:在虚拟机中安装Centos7,安装ssh,安装rsync。安装openJDK,确认jdk版本。下载Hadoop的安装包,解压Hadoop,在Hadoop的配置文件(etc/Hadoop/Hadoop-env.sh)中增加环境变量JAVA_HOME。验证配置,运行MapReduce任务。

5.伪分布式部署

安装步骤:SSH免密码登录安装ssh,生成公钥和私钥,将公钥放到目标机器的~/.ssh/authorized_keys中,验证。修改配置文件core-site.xml,hdfs-site.xml。格式化NameNode,启动NameNode和DataNode的守护进程,通过web检查dfs状态,验证dfs是否正常工作,配置YARN。

6.集群部署

准备工作:准备六台Linux服务器,分别配置六台机器的名字为ml~m6,并指定静态IP地址。所有机器配置本地机器名解析,所有机器之间配置ssh免密码登录,关闭防火墙。下载Hadoop安装包,并解压到适当的位置,所有机器上使用相同版本的jdk和Hadoop,并且保证Hadoop的目录在相同的位置。(www.chuimin.cn)

准备工作的验证:验证本地机器名解析正常,验证ssh免密码配置成功。在每台机器上运行java-version,检查jdk版本,在每台机器上检查防火墙状态。

配置文件:配置Hadoop参数,配置etc/Hadoop/Hadoop-env.sh,配置core-site.xml,配置etc/Hadoop/hdfs-site.xml,配置etc/Hadoop/mapred-site.xml,配置etc/Hadoop/yarnsite.xml,配置etc/Hadoop/slaves,分发配置文件。

启动集群:格式化NameNode,启动NameNode,启动DataNode,启动全部dfs进程,启动ResourceManager,启动NodeManager,启动JobHistory Server,用浏览器检查web接口工作是否正常(见图5-6),关闭集群。

图5-6 用浏览器检查web接口

7.Hadoop常用命令

$bin/Hadoop显示帮助

$bin/Hadoop fs文件操作

$bin/Hadoop jar运行MapReduce程序

$bin/Hadoop version查看Hadoop版本

$bin/Hadoop checknative检查Hadoop的本地库

-cat path/file输出文本文件的内容

-appendToFile本地文件集群文件将本地文件的内容追加到集群文件结尾

-copyFromLocal本地文件集群文件将本地文件复制到集群

-copyToLocal集群文件本地文件将集群文件复制到本地

-cp集群原文件集群目标文件复制集群文件

-mv集群原文件集群目标文件移动或重命名文件

-ls路径列出集群文件或者目录

-mkdir路径在集群中创建目录

-setrep[参数][副本数][路径]设置文件副本数

$sbin/start-all.sh$sbin/stop-all.sh启动集群所有服务/关闭集群所有服务

$sbin/start-dfs.sh$sbin/stop-dfs.sh启动dfs关闭dfs

$sbin/start-yarn.sh$sbin/stop-yarn.sh启动YARN关闭YARN

$sbin/Hadoop-daemon.sh[start|stop]服务名单个Hadoop服务启动或者关闭

$sbin/Hadoop-daemons.sh[start|stop]服务名全部slaves上的Hadoop服务启动或者关闭

$sbin/yarn-daemon.sh[start|stop]服务名单个yarn服务的启动或者关闭

$sbin/yarn-daemons.sh[start|stop]服务名全部slaves上的yarn服务启动或者关闭

$bin/hdfs secondarynamenode以控制台的方式启动SecondaryNameNode

$bin/hdfs namenode以控制台的方式启动NameNode

$bin/hdfs datanode以控制台的方式启动DataNode