大数据技术原理与应用(一)

本文为个人期末考试复习使用

ch01 大数据概述

ch02 大数据处理架构Hadoop

2.1 配置hadoop

2.1.1 免密登录

ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2.1.2 vim $HADOOP_HOME/etc/hadoop/core-site.xml

Hadoop Core的配置项,包含HDFS和MapReduce常用的I/O设置

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/usr/local/hadoop/tmp</value>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://127.0.0.1:9000</value>
	</property>
</configuration>

2.1.3 vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

Hadoop 守护进程的配置项,包括namenode、SecondaryNameNode和DataNode等

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/tmp/hdfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/local/hadoop/tmp/hdfs/data</value>
	</property>
</configuration>

2.1.4 vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

此处node01即Master节点

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>node01:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>node01:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>

2.1.5 vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

此处node01即Master节点

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>node01</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

2.1.5 格式化及启动

$HADOOP_HOME/bin/hadoop namenode -format
$HADOOP_HOME/sbin/start-all.sh
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

2.2 第二名称节点

2.2.1 SecondaryNameNode用途

  • 不是热备份
  • 主要是防止日志文件EditLog过大,导致名称节点失败恢复时消耗过多时间
  • 附带起到冷备份功能

2.2.2 冷备份

  • SecondaryNameNode会定期和NameNode通信
  • 从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下
  • 执行EditLog和FsImage文件合并
  • 将新的FsImage文件发送到NameNode节点上
  • NameNode使用新的FsImage和EditLog(缩小了)

2.3

ch03 分布式文件系统HDFS

3.1 HDFS数据读写

HDFS Client 向HDFS写入数据

package edu.tyut.exam;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class WriteData {
    public static void main(String[] args) {
        try {
            Configuration configuration = new Configuration();
            configuration.set("fs.defaultFS", "hdfs://192.168.246.6:9000");
            configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(configuration);
            FSDataOutputStream os = fs.create(new Path("/user/hadoop/test.txt"));
            byte[] buff = "TestData".getBytes();
            os.write(buff , 0 , buff.length);
            os.close();
            fs.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

HDFS Client 从HDFS读出数据

package edu.tyut.exam;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ReadData {
    public static void main(String [] args){
        try{
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS","hdfs://192.168.246.6:9000");
            conf.set("fs.dfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
//            FSDataInputStream inputStream = fs.open(new Path("/user/hadoop/test.txt"));
//            FSDataInputStream inputStream = fs.open(new Path("/user/hadoop/Hello World"));
            FSDataInputStream inputStream = fs.open(new Path("/user/hadoop/input/yarn-site.xml"));
            InputStreamReader reader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(reader);
            String s = bufferedReader.readLine();
            while ( s != null ){
                System.out.println(s);
                s = bufferedReader.readLine();
            }
//            String s = bufferedReader.readLine();
//            System.out.println(s);
            bufferedReader.close();
            fs.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

ch04 分布式数据库Hbase

4.1 Hbase数据模型

HBase是稀疏的、多维度的、排序的、持久化存储的映射表
[ 行键 ,列族 , 列限定符 , 时间戳 ] ==> [ 值 ]
在这里插入图片描述
在这里插入图片描述

序号详情
1在Hbase中 行键 、列限定符、单元格中数据 存储为 字节数组 byte[ ]
2列名都以列族作为前缀  { 列名格式为: [ 列族 : 列限定符 ] }
3列族需在表创建时定义好
Region 是HBase 中 负载均衡 和 数据分发 的 基本单位
Region 是根据 行键 的 值域区间 划分的
任何时刻, 一个Region 只能分配给 一个Region 服务器

4.2 Hbase与传统关系型数据库对比

角度传统关系型数据库HBase
存储模型NSMDSM

4.3 HBase 功能组件

组件功能介绍

功能组件功能
库函数链接到客户端
Master主服务器

① 管理和维护HBase表的分区信息

② 维护Region服务器列表

③ 实时监测Region服务器

④ 处理模式变化

多个Region服务器存储和维护分配给自己的Region [集合],处理来自客户端的读写请求

客户端注意事项

序号详情
1客户端时借助于zookeeper来获得Region的位置信息,从不和Master通信 - - - > Master负载很小
1客户端访问HBase上数据时,无需Master 参与, 客户端可以访问ZooKeeper获取-ROOT-表地址,最终到达相应的Region服务器进行数据读写
2管理类操作 , 客户端与Master服务器 RPC
3数据读写类操作,客户端与Region服务器 RPC

Region定位相关

序号详情
1.META.表 即 元数据表
2.META.表 的条目 :[ Region标识符 , Region 服务器标识 ]
3Region 标识符 : “表名 + 开始主键 + RegionID”

在这里插入图片描述

在这里插入图片描述

Region服务器工作原理

Region服务器时HBase的核心模块,Store则是Region服务器的核心
在这里插入图片描述
Region服务器(多个)
         |__ Hlog(仅一个)
         |__ Region(一系列)
                       |__ Store(多个)[对应 一个列族的存储]
                       |          |__ MemStore(仅一个)[缓存]
                       |          |__ StoreFile(多个)[磁盘中的文件]
                       |__ Store(多个)[对应 一个列族的存储]
                       |          |__ MemStore(仅一个)
                       |          |__ StoreFile(多个)
                       |__ Store(多个)[对应 一个列族的存储]
                                  |__ MemStore(仅一个)
                                  |__ StoreFile(多个)

4.4 HBase编程

安装HBase

  • 查找镜像
docker search hbase
  • 拉取镜像
docker pull harisekhon/hbase
  • 运行容器
docker run -d --name hbase -p 2181:2181 -p 16010:16010 -p 16020:16020 -p 16030:16030 harisekhon/hbase

ch05 NoSQL

5.1 NoSQL 特点

  1. 灵活的可扩展性
  2. 灵活的数据模型
  3. 与云计算紧密结合

5.2 关系数据库无法满足WEB2.0需求

关系数据库表现方面关系数据库 关键特性 在WEB 2.0 鸡肋
无法满足海量数据的需求不要求严格的数据事务
无法满足数据高并发的需求不要求严格的读写实时性
无法满足高可扩展性和高可用性的需求不包含大量复杂的SQL查询

5.3 NoSQL 四大类型

数据库类型 介绍 优点 缺点 产品
键值型扩展性好,灵活性好
大量写操作时性能高
无法存储结构化信息
条件查询效率较低
Redis
列族型查找速度快
可扩展性强
容易进行分布式扩展
复杂性低
功能较少
大都不支持强事务一致性
BigTable、Hbase、Cassandra
文档型 性能好(高并发),灵活性高
复杂性低、数据结构灵活
数据结构灵活提供嵌入式文档功能
将经常查询的数据存储在同一个文档中
既可以根据键来构建索引
也可以根据内容构建索引
缺乏统一的查询语法MongoDB
灵活性高,支持复杂的图形算法
可用于构建复杂的关系图谱
复杂性高
只能支持一定的数据规模
Adobe、Cisco、T-mobile

5.4 NoSQL 三大基石

CAPC : 一致性A : 可用性P : 分区容忍性
BASEBA: 基本可用S 软状态E : 最终一致性
最终一致性

数据库事务ACID四性:

  • A           Atomicity          原子性
  • C          Consistency      一致性
  • I            Isolation           隔离性
  • D          Duration           持续性

ch06 云数据库

6.1 云数据库类型

  1. IaaS      基础设施即服务
  2. PaaS    平台即服务
  3. SaaS    软件即服务

6.2 云数据库特性

ch07 MapReduce

传统并行计算框架MapReduce
集群架构/容错性共享式(共享内存/共享存储),容错性差非共享式,容错性好
硬件/价格/扩展性刀片服务器、高速网、SAN,价格贵,扩展性差普通PC机,便宜,扩展性好
编程/学习难度what-how,难what,简单
适用场景实时、细粒度计算、计算密集型批处理、非实时、数据密集型

ch08 Hadoop 2.0特性

角度Hadoop 1.0 存在问题Hadoop 2.0特性
HDFS单点失效问题HA 高可用
无法实现资源隔离HDFS Federation 联邦
MapReduce资源管理效率低YARN
Hadoop 1.0 存在主要不足
抽象层次,需人工编码
表达能力有限
开发者自己管理作业(Job)之间的依赖关系
难以看到程序整体逻辑
执行迭代操作效率低
资源浪费(Map和Reduce分两阶段执行)
实时性差(适合批处理,不支持实时交互式)

8.1 HDFS HA

在这里插入图片描述

  • HDFS HA(High Availability)是为了解决单点故障问题
  • HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”
  • 两种名称节点的状态同步,可以借助于一个共享存储系统来实现
  • 一旦活跃名称节点出现故障,就可以立即切换到待命名称节点
  • Zookeeper确保一个名称节点在对外服务
  • 名称节点维护映射信息,数据节点同时向两个名称节点汇报信息

8.2 HDFS Federation

在这里插入图片描述

注意说明
1HDFS Federation 不能解决单点故障问题 ,可以很好解决 可扩展性、系统性能和隔离性 问题
2在HDFS 2.0 , 每个名称节点部署一个后备名称节点
3HDFS Federation 拥有多个独立的命名空间
4HDFS Federation 每个 命名空间 管理属于自己的一组块
5HDFS Federation 中属于 同一 命名空间的块 构成 块池
6HDFS Federation 块池 中的 块 存储在 不同的 数据节点

8.3 Yet Another Resource Negotiator

MapReduce 1.0 Yarn功能
JobTrakcerResourceManager处理客户端请求
启动/监控ApplicationMaster
监控NodeManager
资源分配与调度
ApplicationMaster为应用程序申请资源,并分配给内部任务
任务调度、监控与容错
TaskTrackerNodeManager单个节点上的资源管理
处理来自ResourceManger的命令
处理来自ApplicationMaster的命令

ch09 Hive

在这里插入图片描述
说明:
④ 是对③遍历 [查询块] 得到的操作树 进行 逻辑优化器 优化,得到 变换后的操作树
⑥ 是对⑤遍历 [操作树] 得到的MapReduce作业 进行 物理优化器 优化,得到 最终的MapReduce

ch10 Spark

ch11 流计算

11.1 流计算特征

特征
1.数据快速到达,潜在大小无穷无尽的
2.数据来源众多,格式复杂
3.数据量大,不关注存储
4.注重数据的整体价值
5.数据顺序颠倒、或者不完整

11.2 流计算系统应达到的需求

特征
1.高性能
2.海量式
3.实时式
4.分布式
5.易用性
6.可靠性

11.3 流计算处理流程

  1. 数据实时采集
  2. 数据实时计算
  3. 实时查询服务

11.3.1 数据实时采集

11.3.2 数据实时计算

11.3.3 实时查询服务

11.4 Storm

2014年Twitter开发的Storm开源

11.4.1 Storm特点

特征
1.整合性
2.简用的API
3.可扩展性
4.容错性
5.可靠的消息处理
6.支持各种编程语言
7.快速部署
8.免费、开源

11.4.2 Storm设计

HadoopStorm说明
应用名称JobToplogy将Spouts 和 Bolts 组成的网络 抽象为 Toplogy[ 一个流转换图 ]
系统角色JobTrackerNimbus在Master 节点运行
负责在集群范围内分发代码
为Worker分配任务和监测故障
系统角色TaskTrackerSupervisor在Worker节点运行
根据Nimbus分配的任务来决定启动或停止Worker进程
组件接口Map / ReduceSpout / BoltStreams 抽象 为无限的Tuple序列
将每个Stream的源 抽象 为Spouts
将Streams的状态转换 抽象 为Bolts

11.4.3 Storm与SparkStreamming对比

StormSpark Streamming
实时性纯实时准实时
延迟度毫秒级秒级
吞吐量
动态调整并行度支持不支持

11.4.3 Flink

Flink核心组件栈

组件栈说明
物理部署层Local模式
Standalone、Yarn
云服务
Runtime 核心层流处理(DataStream API)
批处理(DataSet API)
API & libraries层CEP (Complex Event Process) 基于处理
SQL&Table库                    基于流或批处理
FlinkML                                    基于处理
Gelly                                         基于处理

在这里插入图片描述

Flink体系架构

在这里插入图片描述

MapReduce体系结构

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值