Hadoop 介绍

Hadoop是一个开发和运行处理大规模数据的软件平台,是Apache的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心设计就是:MapReduce和HDFS。MapReduce提供了对数据的分布式计算,HDFS提供了海量数据的分布式存储。
在Hadoop家族中,收入了20多个用于计算、分析、存储、监控、管理等组件和工具,这些家族成员极大的丰富了Hadoop的各方面的功能。

Hadoop常见家族成员

下面简单的列举几个常见的组件:

  • Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
  • Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  • Apache Pig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
  • Apache HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
  • Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  • Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务
  • Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
  • Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身
  • Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制
  • Apache Ambari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
  • Apache Chukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供 Hadoop 进行各种 MapReduce 操作。
  • Apache Hama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
  • Apache Flume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
  • Apache Giraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
  • Apache Oozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。
  • Apache Crunch: 是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库
  • Apache Whirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持Amazon EC2和Rackspace的服务。
  • Apache Bigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
  • Apache HCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
  • Cloudera Hue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。

Ambari介绍

Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.6.0。Ambari 是用来创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含:

  • 通过一步一步的安装向导简化了集群供应。
  • 预先配置好关键的运维指标(metrics),可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。
  • 支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。
  • 通过一个完整的RESTful API把监控信息暴露出来,集成了现有的运维工具。
  • 用户界面非常直观,用户可以轻松有效地查看信息并控制集群。

使用Ambari部署Hadoop集群

在使用Ambari安装部署Hadoop时,需要对下载镜像源,配置本地环境。

配置说明

  • 主机:
    node-1 : 192.168.10.11 , 配置:2C8G-30G ,yum 镜像源,数据库, java环境
    node-2 : 192.168.10.12, 配置:2C8G-30G ,java环境
    node-2 : 192.168.10.12, 配置:2C8G-30G , java环境
  • 软件包 Hadoop 软件镜像压缩包,Ambari镜像压缩包,版本2.6

    配置本地yum源

    1、在node-1上配置hadoop所有组件的yum源。安装httpd:

    [root@node-1 ~]# yum install httpd -y

    2、在官方下载镜像文件,此文件大概7G,可以使用p2p工具下载,其中包含两个repo文件和4个压缩包:

    wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.1.0/ambari.repo
    wget http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.4.0/hdp.repo
    wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.1.0/ambari-2.6.1.0-centos7.tar.gz
    wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
    wget http://public-repo-1.hortonworks.com/HDP-GPL/centos7/2.x/updates/2.6.4.0/HDP-GPL-2.6.4.0-centos7-rpm.tar.gz
    wget http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.4.0/HDP-2.6.4.0-centos7-rpm.tar.gz

    3、将对应的tar包解压到httpd的文件目录:

[root@node-1 html]# tar xf ambari-2.6.1.0-centos7.tar.gz
[root@node-1 html]# tar xf HDP-2.6.4.0-centos7-rpm.tar.gz 
[root@node-1 html]# tar xf HDP-GPL-2.6.4.0-centos7-rpm.tar.gz 
[root@node-1 html]# mkdir HDP-UTILS
[root@node-1 html]# tar xf HDP-UTILS-1.1.0.22-centos7.tar.gz -C HDP-UTILS/

4、配置基础源,创建hadoop的repo文件,修改repo文件源路径:

# ambari 源
vim /etc/yum.repo.d/ambari.repo

[ambari-2.6.1.0]
name=ambari Version - ambari-2.6.1.0
baseurl=http://192.168.10.11/ambari/centos7/2.6.1.0-143
gpgcheck=1
gpgkey=http://192.168.10.11/ambari/centos7/2.6.1.0-143/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

# HDP源:

vim /etc/yum.repo.d/hdp.repo

#VERSION_NUMBER=2.6.4.0-91
[HDP-2.6.4.0]
name=HDP Version - HDP-2.6.4.0
baseurl=http://192.168.10.11/HDP/centos7/2.6.4.0-91
gpgcheck=1
gpgkey=http://192.168.10.11/HDP/centos7/2.6.4.0-91/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

[HDP-UTILS-1.1.0.22]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.22
baseurl=http://192.168.10.11/HDP-UTILS/
gpgcheck=1
gpgkey=http://192.168.10.11/HDP-UTILS/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

[HDP-GPL-2.6.4.0]
name=HDP-GPL Version - HDP-GPL-2.6.4.0
baseurl=http://192.168.10.11/HDP-GPL/centos7/2.6.4.0-91
gpgcheck=1
gpgkey=http://192.168.10.11/HDP-GPL/centos7/2.6.4.0-91/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

启动httpd。
5、将本地源的repo配置拷贝到其它节点,并创建缓存:

[root@node-1 ~]# scp /etc/yum.repos.d/ambari.repo 192.168.10.12:/etc/yum.repos.d/
[root@node-1 ~]# scp /etc/yum.repos.d/ambari.repo 192.168.10.13:/etc/yum.repos.d/
[root@node-1 ~]# scp /etc/yum.repos.d/hdp.repo 192.168.10.12:/etc/yum.repos.d/
[root@node-1 ~]# scp /etc/yum.repos.d/hdp.repo 192.168.10.13:/etc/yum.repos.d/

在各个节点创建缓存:

# yum clean all
# yum makecache fast

初始化环境

1、各个节点安装java-1.8.0-openjdk:

 yum install java-1.8.0-openjdk -y

2、解析主机名:

 echo "192.168.10.11 node-1" >> /etc/hosts
 echo "192.168.10.12 node-2" >> /etc/hosts
 echo "192.168.10.13 node-3" >> /etc/hosts

3、创建主机信任关系,主要是master节点到slave节点:

 [root@node-1 ~]# ssh-keygen -t rsa
 [root@node-1 ~]# cp id_rsa.pub /root/.ssh/authorized_keys
 [root@node-1 ~]# scp id_rsa.pub 192.168.10.12:/root/.ssh/authorized_keys
 [root@node-1 ~]# scp id_rsa.pub 192.168.10.13:/root/.ssh/authorized_keys

4、安装配置数据库:

yum install mariadb-server -y
systemctl start mariadb
mysql_secure_installation 

# 创建数据库:

MariaDB [(none)]> create database ambari default character set utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on ambari.* to ambari@localhost identified by 'bigdata';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on ambari.* to ambari@'%' identified by 'bigdata';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> create database hive default character set utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on hive.* to hive@localhost identified by 'hive';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on hive.* to hive@'%' identified by 'hive';

安装Amabri服务

1、在node-1上安装ambari-server,并启动配置向导:

[root@node-1 ~]# yum install ambari-server -y
[root@node-1 ~]# ambari-server setup 

提示: 如果安装配置用户时,出现如下报错:
ERROR: Unexpected error 'getpwuid(): uid not found: 1001',可以查看ambari.repo文件的权限,修改为默认的root 644权限即可。

2、按照配置向导信息,配置用户,java_home:

 [root@node-1 ~]# ambari-server setup
Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'disabled'
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):ambari  
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
==============================================================================
Enter choice (1): 3
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre  # 填写java_home
Validating JDK on Ambari Server...done.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? n
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? y  
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL / MariaDB
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
[7] - BDB
==============================================================================
Enter choice (1): 3
Hostname (localhost): 
Port (3306): 
Database name (ambari): 
Username (ambari): 
Enter Database Password (bigdata): 
Configuring ambari database...
WARNING: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java and set property "server.jdbc.driver.path=[path/to/custom_jdbc_driver]" in ambari.properties.
Press <enter> to continue.

3、到上面一步时,根据提示上传mysql的 jdbc驱动,并修改配置文件,指定jdbc驱动文件位置:

[root@node-1 ~]# cd /usr/share/java
[root@node-1 java]# ll
total 3388
-rw-r--r-- 1 root root 3467861 Jan 22 16:16 mysql-connector-java-5.1.45.tar.gz
[root@node-1 java]# tar xf mysql-connector-java-5.1.45.tar.gz 
[root@node-1 java]# mv mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar ./

修改配置文件:

 vim /etc/ambari-server/conf/ambari.properties 

server.jdbc.driver.path=/usr/share/java/mysql-connector-java-5.1.45-bin.jar

配置完成后继续,会出现如下提示:

Press <enter> to continue.
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)? 

4、出现上述提示时,根据信息导入数据库:

[root@node-1 ~]# mysql -uroot -p ambari < /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

5、启动服务:

[root@node-1 ~]# ambari-server start

6、服务启动成功后,会监听8080端口,使用浏览器登录,账号密码admin/admin正常登录,则安装完成。
使用Ambari搭建Hadoop集群

创建集群

使用ambari的web界面课完成对集群的所有管理操作,创建一个实例集群。
使用Ambari搭建Hadoop集群

选择本地源,移除不必要的版本:
使用Ambari搭建Hadoop集群

添加主机节点,上传id_rsa文件:
使用Ambari搭建Hadoop集群

安装成功后,会显示如下界面:
使用Ambari搭建Hadoop集群

选择需要安装的服务:
使用Ambari搭建Hadoop集群

根据需要选择服务配置:
使用Ambari搭建Hadoop集群

在后续的配置中,会提示配置账户密码,数据库等信息,根据提示配置即可。

使用Ambari搭建Hadoop集群

参考文档:

https://baike.baidu.com/item/Ambari
https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin
http://blog.fens.me/hadoop-family-roadmap/