centos7 Hadoop集群部署
一、Hbase概念剖析
Hbase 是Hadoop Database的简称,本质上来说就是Hadoop系统的数据库,为Hadoop框架当中的结构化数据提供存储服务,是面向列的分布式数据库。这一点与HDFS是不一样的,HDFS是分布式文件系统,管理的是存放在多个硬盘上的数据文件,而Hbase管理的是类似于Key—Value映射的表。
Hbase底层仍然依赖HDFS来作为其物理存储,并且还需要Zookeeper协助提供部分配置服务,包括维护元信息和命名空间等。
Hadoop分布式集群主要包括三个核心部分:
1、FS(Hadoop分布式文件系统),
HDFS:分布式文件系统,在分布式(提供更快的读/写访问)和冗余(提供更好的可用性)方式中存储大量数据 。
2、计算框架(MapReduce)
MapReduce:以分布式和并行方式处理这些巨大的数据。但MapReduce并不仅限于HDFS 。作为FS,HDFS缺乏随机读/写功能,它适用于顺序数据访问,这就是HBase出现的地方。它是一个NoSQL数据库,在Hadoop集群上运行,提供对数据的随机实时读/写访问。
3、管理桥(Yet Another Resource Negotiator)。
是统一资源管理和调度平台。它解决了上一代Hadoop资源利用率低和不能兼容异构的计算框架等多种问题。提供了资源隔离方案和双调度器的实现。
其他重要组件还有:
Hadoop Common、Spark、HBase、Zookeeper、Pig、Impala、Mahout、Flume、Sqoop、Kafka
Hadoop Common
是Hadoop体系最底层的一个模块,为Hadoop各个子模块提供各种工具,比如系统配置工具Configuration、远程调用RPC、序列化机制和日志操作等等,是其他模块的基础。
Spark
是加州伯克利大学AMP实验室开发的新一代计算框架,对迭代计算有很大优势,与MapReduce相比性能提升明显,并且可以和Yarn集成,并且还提供了SparkSQL组件。
HBase
来源于Google的Bigtable论文,HBase是一个分布式的,面向列族的开源数据库。采用了Bigtable的数据模型–列族。HBase擅长大规模数据的随机、实时读写访问。
Zookeeper
作为一个分布式服务框架,是基于Fast Paxos算法实现,解决分布式系统中一致性的问题。提供了配置维护,名字服务,分布式同步,组服务等。
Hive
Hive最早是facebook开发并使用的,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,提供简单的SQL查询功能。并将SQL转为MapReduce作业运行。其有点就是学习成本低。降低了Hadoop的使用门槛。
Pig
与Hive类似,也是对大数据集进行分析和评估的工具,不同于Hive的是Pig提供了一种高层的,面向领域的抽象语言PigLatin.同样Pig也可以将Pig Latin转化为MapReduce作业。相比与SQL,Pig Latin更加灵活,但学习成本更高。
Impala
是Cloudera公司开发,可以对存储HDFS、HBase的海量数据提供交互查询的SQL接口。除了和Hive使用相同的统一存储平台,Impala也使用相同的元数据,SQL语法,ODBC驱动程序和用户界面。Impala还提供了一个熟悉的面向批量或者实时查询的统一平台。Impala的特点是查询非常迅速,其性能大幅度领先于Hive。Impala并不是基于MapReduce的,它的定位是OLAP,是Google的新三驾马车之一Dremel的开源实现。
Mahout
是一个机器学习和数据挖掘库,它利用MapReduce编程模型实现k-means,Native,Bayes,Collaborative Filtering等经典的机器学习算法,并使其具有良好的可扩展性。
Flume
是Cloudera提供的一个高可用,高可靠,分布式的海量日志采集、聚合和传输系统,Flume支持在日志系统中定制各类数据发送方,用于数据收集,同时Flume提供对数据进行简单处理并写到各个数据接收方的能力。
Sqoop
是SQL to Hadoop的缩写,主要作用在于结构化的数据存储与Hadoop之间进行数据双向交换,也就是说,Sqoop可以将关系型数据库的数据导入到HDFS、Hive、也可以从HDFS、Hive导出到关系型数据库中。Sqoop利用了Hadoop的优点,整个导入导出都是由MapReduce计算框架实现并行化,非常高效。
Kafka
是一种高吞吐量的分布式发布订阅消息系统。具有分布式、高可用的特性,在大数据系统里被广泛使用,如果把大数据系统比作一台机器,那么kafka就是前端总线,它连接了平台中的各个组件。
二、Hadoop环境配置
从0开始构建一套Hadoop大数据平台,CentOS 7.x系统。Hadoop的安装部署都属于java进程,就是启动了JVM进程,运行服务。
HDFS:存储数据,提供分析的数据;
NameNode/DataNode
YARN:提供程序运行的资源;
ResourceManager/NodeManager
Hadoop版本:hadoop-3.2.2
192.168.0.47 namenode、datanode、secondary namenode、resource manager
192.168.0.32 datanode、nodemanager
192.168.0.33 datanode、nodemanager
1、Hosts及防火墙设置
node1、node2、node3节点进行如下配置:
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.0.47 node1
192.168.0.32 node2
192.168.0.33 node3
EOF
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
yum install ntpdate rsync lrzsz -y
ntpdate pool.ntp