我爱编程大数据

Hadoop大数据平台架构与实践 | hadoop概述与安装

2017-04-28  本文已影响1058人  拾壹北

e> Hadoop大数据平台架构与实践--基础篇


目录

内容概要
Hadoop前生
Hadoop的功能与优势
Hadoop的生态系统和版本
Hadoop安装

内容概要

1、大数据技术的相关概念
2、Hadoop的架构和运行机制
3、Hadoop的安装和配置
4、Hadoop开发

Hadoop前生

大数据的存储和分析,出现系统瓶颈:存储容量、读写速度、计算效率...

Google提出了大数据技术:MapReduce、BigTable、GFS(Google File System)
(1)成本降低,不一定非得用大型机和高端存储,也可使用PC机
(2)由软件 容错 硬件故障,通过软件保证可靠性
(3)简化并行分布式计算,无需控制节点同步和数据交换,MapReduce:简化分布式计算

Google只发表了相关论文,没有公开源码;Hadoop是模仿Google大数据技术的开源实现。

Hadoop的功能与优势

开源的分布式存储、分布式计算平台

用来支撑Hadoop的两个核心:

HDFS:分布式文件系统,存储海量数据
MapReduce:并行处理框架,实现任务分解和调度;分布式数据处理模型和执行环境

Hadoop的功能:

(1)搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务:搜索引擎、商业智能、日志分析、风险评估等

Hadoop的优势:

(1)高扩展:增加硬件提升容量和性能
(2)低成本:不依赖于高端硬件、通过软件容错保证系统可靠性
(3)成熟的生态圈:工具集

  1. 运行方便:Hadoop是运行在由一般商用机器构成的大型集群上。Hadoop在云计算服务层次中属于PaaS(Platform-as-a- Service):平台即服务。
  2. 健壮性:Hadoop致力于在一般的商用硬件上运行,能够从容的处理类似硬件失效这类的故障。
  3. 可扩展性:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集。
  4. 简单:Hadoop允许用户快速编写高效的并行代码。

Hadoop的生态系统和版本

Hadoop生态系统
HDFS(分布式文件系统)
MapReduce(分布式计算框架)
Hive(基于MapReduce的数据仓库)
Pig(数据仓库)
HBase(分布式数据库)
Mahout(数据挖掘库)
Zookeeper(分布式协作服务)
Sqoop(数据同步工具)
Flume(日志收集工具)
Oozie(作业流调度系统)

Hadoop的生态系统

其中:

2)Nutch:互联网数据及Nutch搜索引擎应用
3)HDFS:Hadoop的分布式文件系统
5)MapReduce:分布式计算框架
6)Flume、Scribe,Chukwa:数据收集,收集非结构化数据的工具
7) Hiho、Sqoop:将关系数据库中的数据导入HDFS的工具
8) Hive:数据仓库,pig分析数据的工具
10)Oozie:作业流调度引擎
11)Hue:Hadoop自己的监控管理工具
12)Avro:数据序列化工具
13)mahout:数据挖掘工具
14)Hbase:分布式的面向列的开源数据库

Hadoop2.0时代的生态系统
Hadoop2.0时代的生态系统
Hadoop的核心
Hadoop的核心

Hadoop1.0与Hadoop2.0的区别:
Hadoop1.0的核心由HDFS(Hadoop Distributed File System)和MapReduce(分布式计算框架)构成,而在Hadoop2.0中增加了Yarn(Yet Another Resource Negotiator),来负责集群资源的统一管理和调度。

HDFS(Hadoop Distributed File System,分布式文件系统)

HDFS简单入门

为什么需要HDFS呢?HDFS是一个file system,对文件进行管理。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。

文件的读取和写入都需要时间,而且写文件需要更多的时间,大概是读文件的3倍;当数据集(文件)的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上——分布式文件存储。

经典的分布式文件存储概念

** HDFS的基本原理**

** HDFS的特点 **

HDFS的应用场景

MapReduce(分布式计算框架)

Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。

我们要学习的就是这个计算模型的运行规则。在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。

Hive(基于MapReduce的数据仓库)

Hive由facebook开源,最初用于解决海量结构化的日志数据统计问题;是一种ETL(Extraction-Transformation-Loading)工具。它也是构建在Hadoop之上的数据仓库;数据计算使用MR,数据存储使用HDFS。

Hive定义了一种类似SQL查询语言的HiveQL查询语言,除了不支持更新、索引和事务,几乎SQL的其他特征都能支持。它通常用于离线数据处理(采用MapReduce);我们可以认为Hive的HiveQL语言是MapReduce语言的翻译器,把MapReduce程序简化为HiveQL语言。但有些复杂的MapReduce程序是无法用HiveQL来描述的。

Hive提供shell、JDBC/ODBC、Thrift、Web等接口。

Hive应用场景

Pig(数据仓库)

Pig由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc数据分析工具。它通常用于进行离线分析。

Pig是构建在Hadoop之上的数据仓库,定义了一种类似于SQL的数据流语言–Pig Latin,Pig Latin可以完成排序、过滤、求和、关联等操作,可以支持自定义函数。Pig自动把Pig Latin映射为MapReduce作业,上传到集群运行,减少用户编写Java程序的苦恼。

Pig有三种运行方式:Grunt shell、脚本方式、嵌入式。

Pig与Hive的比较
HBase(分布式数据库)

Hbase原理、基本概念、基本架构

HBase是一个构建在HDFS上的分布式列存储系统,基于Google的Big Table模型开发,是典型的key/value系统,主要用于海量结构化数据存储,它是NoSQL的典型代表产品。

从逻辑上讲,HBase将数据按照表、行和列进行存储。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

Hbase表的特点

HBase数据模型

Hbase使用场景

Mahout(数据挖掘库)

Mahout是基于MapReduce的数据挖掘 / 机器学习库,充分利用了MapReduce和HDFS的扩展性和容错性,实现了聚类算法、分类算法和推荐算法

Mahout提供的算法
Zookeeper(分布式协作服务)

ZooKeeper 是一个分布式的,开源的协作服务,可应用于分布式应用程序。它发布了一组简单的原子操作,分布式应用程序在此基础之上可以实现更高层次的服务,如同步、配置维护、群组和命名管理 等。它为易于编程而设计,并且使用了一个类似于文件系统的目录结构风格的数据模型。ZooKeeper service运行于Java环境中,也可绑定于Java和C.

ZooKeeper 是一个用于对分布式系统进行协作管理的服务程序,它本身也是分布式的,所以不要弄混了。对于我们自己的分布式系统来说,ZooKeeper就是一个用来管理的应用程序(或者说服务)。ZooKeeper提供了一个简单易用的框架,由Service和Client两大部分组成。

ZooKeeper的两大组成部分

Zookeeper解决分布式环境下数据管理问题:

Sqoop(数据同步工具)

Sqoop是连接Hadoop与传统数据库之间的桥梁,它支持多种数据库,包括MySQL、DB2等;插拔式,用户可以根据需要支持新的数据库。

Sqoop实质上是一个MapReduce程序,充分利用MR并行的特点,充分利用MR的容错性。

Sqoop工作示意
Flume(日志收集工具)

Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

**Fulme 的特点: **

Oozie(作业流调度系统)

目前计算框架和作业类型种类繁多:如MapReduce、Stream、HQL、Pig等。这些作业之间存在依赖关系,周期性作业,定时执行的作业,作业执行状态监控与报警等。如何对这些框架和作业进行统一管理和调度?

解决方案有多种:

Oozie

Oozie工作流周期图
Hadoop发行版(开源版)介绍

推荐使用2.x.x版本
下载地址:http://hadoop.apache.org/releases.html

Hadoop安装

参考:
安装并运行hadoop
SSH免密码登录以及失败解决方案

配置(伪分布式的配置)

Hadoop-2.5.1集群安装配置笔记

修改1个环境变量文件
修改3个配置文件
遇到的坑

在ubuntu中配置SSH(解决connect to host localhost port 22: Connection refused问题)
为什么要安装SSH?因为在Hadoop启动以后,namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的。

Ubuntu默认并没有安装ssh服务,如果通过ssh链接Ubuntu,需要自己手动安装openssh-server。判断是否安装ssh服务,可以通过如下命令进行:

ssh localhost

在这之前要开启 ssh-agent:

$ eval ssh-agent

添加私钥:

$ ssh-add ~/.ssh/id_rsa

告诉ssh允许 ssh-agent 转发:
# 修改全局:
$ echo "ForwardAgent yes" >> /etc/ssh/ssh_config

启动ssh service:

/etc/init.d/ssh start
启动
[root@HostName sbin]# ./start-dfs.sh
[root@HostName sbin]# ./start-yarn.sh  
停止
[root@HostName sbin]# ./stop-dfs.sh  
[root@HostName sbin]# ./stop-yarn.sh
验证hadoop是否安装成功

http://localhost:50030/ (MapReduce的web页面)
http://localhost:50070/ (HDFS的web页面)

跑个wordcount程序验证一下:
# 建一个input目录,作为输入
$mkdir input
$cd input

# 新建两个文本文件
$echo "hello world">test1.txt
$echo "hello hadoop">test2.txt
$cd ..

# 将input文件上传到HDFS,并重命名为in
$bin/hadoop dfs -put input in

# 调用yarn jar启动YARN applications(Use yarn jar to launch YARN applications instead.)
$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /in/input out

# 查看分析结果
$bin/hdfs dfs -cat /user/root/out/*

输出:


上一篇 下一篇

猜你喜欢

热点阅读