02-hadoop的发展,架构模型,三种运行环境

离线课程第二天

课程回顾

1、三台虚拟机的联网创建

2、linux基础增强

​ 查找命令: ps -ef | grep xxxx

​ find / -name hello.txt

​ 用户与用户组:useradd hadoop passwd hadoop

​ su与sudo: su:切换用户

​ sudo:权限的借用 visudo

​ linux的权限管理:chmod -R 777 文件/文件夹

​ chown -R 777 文件/文件夹

​ chmod u+x o+w g+x 精确控制权限

​ 系统服务管理:service 服务名称 status|start|stop

​ 网络管理:

​ 主机名的配置:vim /etc/sysconfig/network

​ IP地址的配置: vim /etc/sysconfig/network-scripts/ifcfg-eth0

​ 域名映射:vim /etc/hosts

​ 网络端口监听:netstat -nltp

​ crontab : crontab -e crontab -l

linux的shell编程: 除了变量不空格,其他到处都空格

​ 变量的定义 变量名=变量值

​ 变量的引用: ${变量名} $变量名

​ 流程控制语句: for循环 if elif while

​ 函数的使用

大数据集群的环境准备:搞定

zookeeper:分布式的服务协调的框架

​ 主从的架构 +主备的架构:

​ leader: 主节点,处理事务性以及非事务性的请求

​ follower:从节点,处理非事务性的请求,以及转发事务性的请求给leader ,参与投票选举

zk的特性:全局数据一致性

​ zk的集群环境的搭建

​ zk的shell操作。添加节点,修改节点,删除节点,查询节点数据

​ 节点的类型:

​ 永久节点:普通永久节点,序列化的永久节点

​ 临时节点:普通的临时节点,序列化的临时节点

​ 客户端一旦断开连接,临时节点消失

​ zk的数据模型:树形结构,zk当中每一个节点称之为一个znode,znode兼具有文件和文件夹的特性

​ zk的watch机制:zk当中的监听器的机制,主要用于监听节点的变化

​ watch机制与临时节点搭配使用,效果非常好====》实现某些服务的监听

课程大纲:

hadoop的历史发展介绍

hadoop历史版本介绍

hadoop的三大发行公司

hadoop的架构模型

hadoop三种环境的安装

cdh版本的冲洗编译

cdh的zk环境的搭建

cdh伪分布式环境的搭建

hadoop集群使用体验

hadoop集群的基准测试

hadoop最早起源于nutch的项目

nutch:是一个爬虫的框架,通用的爬虫框架。Doug Cutting

爬的数据太多了。

第一个问题:数据的检索问题,Lucene,solr solrCloud Elasticsearch

第二个问题:数据的存储问题,如何解决海量数据的存储问题 TB ==》 PB ==》ZB

单台的服务器已经解决不了数据存储的问题了

2003 -2004年谷歌发表了两篇论文 ==》介绍了谷歌的分布式文件存储的概述 MapReduce(分布式文件计算系统) GFS(google FileSystem)

hadoop (hdfs(hadoop distributed FileSystem)+MapReduce) 最早的版本是0.x版本

广义上来说:hadoop指代一个大数据框架的生态圈

狭义上来说:hadoop就是一个框架

重复的造轮子。学大数据成本大。大数据开发工程师比JAVAWeb薪资高

现在hadoop已经经历了三大版本 0.x == > 1.x ==》 2.x ==》3.x稳定版本已经发布

hadoop三大发行公司的介绍:

大数据的框架太多了==》造成框架版本的兼容性 ==》 框架版本的升级型怎么做

框架太多了,如何统一的管理框架的版本号,如何做到统一的框架的升级???

免费开源的版本apache:版本更新迭代比较快,但是版本之间的兼容性,版本的升级,apache不管

实际生产线上环境,一般不要用apache的版本

免费开源的版本hortOnWorks :在开源版本的基础上,做好了版本的兼容,做好了版本的升级,有一定的群众基础,有一定的人用

服务软件收费版本:Cloudera 致力于做大数据软件框架的生态圈。生产环境用的比较多的版本。版本的升级,版本的兼容都做好了

MapR ==>大数据软件的公司

hadoop的架构模型:

hadoop1.x架构模型:

​ hdfs分布式文件存储系统:典型的主从架构。没有主备

​ NameNode:主节点,维护管理集群当中的元数据信息,处理用户的读写数据的请求

​ SecondaryNameNode:辅助namenode管理元数据信息

​ DataNode:从节点,主要用于存储数据

元数据信息:描述数据的数据,叫做元数据信息

时间简史这本书:查询系统 == 》书名,作者,书在哪个科目,科目究竟在哪一层楼,哪一层楼的哪一个书架,书架的第几排,书架哪一格。这些信息都是描述了我们这本书放在哪里,有了这些信息,我就可以快速找到一本书

只要知道了这些描述性的信息,我就可以快速的找到这本书

第二个问题:你怎么认识你同桌的????描述性的信息 ,什么样的样貌,环肥燕瘦,什么样的体型,长头发还是短头发,圆脸还是马脸,你已经记住了你同桌长什么样子。描述同桌的一些信息

第三个问题:文件系统改如何处理。计算机存储的文件,如何能够快速的找到呢????

路径,文件的名字,文件类型,创建时间,修改时间,文件权限,文件路径,文件名字,所属者。这些都是一些描述性的信息。

描述性的信息===》叫做元数据信息 ==》描述数据的数据

如果文件系统当中没有描述性的信息会怎么样????找不到文件了

文件的描述信息非常重要==》元数据==》与数据内容没有关系==》元数据都是用来确认数据究竟在哪里的==》只要抓住了元数据信息,就抓住了我们的数据

​ Mapreduce分布式文件计算系统:

​ JobTracker:主节点,主要职责用于接收客户端的计算任务,并且分配任务给TaskTracker去执行

​ TaskTracker:从节点。主要职责用于处理JobTracker分配的任务

hadoop2.x架构模型: 每个节点的作用,背下来

​ hdfs分布式文件存储系统:

​ Namenode:主节点,维护管理集群当中的元数据信息,处理客户端的读写数据的请求

​ SecondaryNameNode:辅助namneode管理元数据信息

​ DataNode:从节点,主要职责用于存储数据

​ Yarn资源调度系统:hadoop2.x新增的模块,取代了原来的jobTaks以及TaskTracker

​ ResourceManager:主节点。接收客户端的计算任务,并且分配资源(CPU,内存)。不分配任务

​ NodeManager:从节点。主要职责用于计算分配的任务

为了解决主节点(namenode,resourceManager) 的单点故障问题,引入了高可用,namenode最多可以有两个,一个主节点,一个是备份节点,resourceManager最多也可以有两个,一个是主节点,一个是备份节点

如果hdfs是高可用的时候:

​ Namenode:主节点,维护管理集群当中的元数据信息,处理客户端的读写数据的请求

​ journalNode:在两个namenode之间同步元数据,保证两个namenode之间的元数据信息一致

​ DataNode:从节点,主要职责用于存储数据

​ zkfc:namenode的守护进程,就是监看namenode的健康状况

如果namenode ha 那么就没有secondaryNamenode

hadoop运行的三种环境安装

1、standAlone环境:一般用不到。用一台机器来运行hadoop的环境

2、伪分布式环境:一般用于学习测试环境。主节点与从节点都运行在一台机器上面。从节点还运行在其他机器上面

3、完全分布式的环境:一般用于线上正式环境。主节点与从节点完全分开到不同的机器上面去,主节点完全分开,主节点一般都独立的占用一台机器

standAlone环境的安装

bin:存放执行脚本

sbin:存放执行脚本

etc/hadoop:配置文件存放路径

lib/native:hadoop的本地库,很重要。存放了一些C程序库。一定要支持本地库

share:hadoop运行需要的各种jar包

​ bin/hadoop checknative 检测hadoop的本地库是否支持的命令

​ hadoop: true /export/servers/hadoop-2.7.5/lib/native/libhadoop.so.1.0.0 本地C程序库的的支持。可以通过C程序来访问hadoop几群的数据

​ zlib: true /lib64/libz.so.1 压缩程序库
​ snappy: false 压缩程序库 谷歌出品的一种压缩算法。谷歌出品,必属精品
​ lz4: true revision:99 压缩程序库
​ bzip2: false 压缩程序库
​ openssl: false Cannot load libcrypto.so 压缩程序库

apache的版本的hadoop软件天生默认不支持snappy压缩,如果需要使得其支持,需要重新编译hadoop

hadoop更改配置的6个核心配置文件

core-site.xml:核心配置文件,决定了我们hdfs的集群究竟是分布式的,还是单机版的

hdfs-site.xml:主要定义了我们hdfs相关模块的一些配置。

一般刀片服务器,都有6个硬盘插槽。最少可以插入6块硬盘。一般硬盘可以到12T或者24T左右

hadoop-env.sh:定义我们的jdk的路径即可

mapred-site.xml:定义我们mr相关的模块的配置

yarn-site.xml:主要定义我们yarn的运行的相关的配置

slaves:决定我们从节点运行在哪些机器上面,Datanode NodeManager

注意:hadoop集群格式化的操作,只在hadoop初次搭建的时候执行一次,以后都不要执行了,因为格式化会将hdfs所有的数据全部删掉。类似于我们买回来一块新的硬盘

浏览器查看端口:

http://node01:50070/dfshealth.html#tab-overview hdfs的概览

http://node01:8088/cluster yarn集群的概览

http://node01:19888/jobhistory 历史完成任务的概览

完全分布式高可用环境服务规划

192.168.1.100 192.168.1.110 192.168.1.120
zookeeper zk zk zk
HDFS JournalNode JournalNode JournalNode
namenode NameNode(active) NameNode (standBy)
ZKFC ZKFC
DataNode DataNode DataNode
YARN ResourceManager standBy ResourceManager active
NodeManager NodeManager NodeManager
MapReduce JobHistoryServer

重新编译CDH版本的hadoop以便于支持本地库以及支持snappy的压缩

hdfs的基本介绍:

hdfs是hadoop当中一个核心的组件

hdfs的特性:

​ master/slave架构:主从架构 namenode主节点,datanode从节点

​ 分块存储:将大的文件化成了一个个的小的block块,进行分块存储

​ 命名空间:对外提供统一的数据访问的格式 hdfs://

​ 元数据信息管理:namenode统一管理元数据信息

​ datanode:数据存储。datanode就是出磁盘的

​ 副本机制:所有的block块都会进行冗余存储,每个block块都会有三个副本

​ 一次写入,多次读取:简单的相关模型,设计hdfs之初就是假设我们hdfs上面的数据都是一次写入,多次读取的。擅长处理数据的读取,不太擅长处理频繁的写入

hdfs借鉴了linux的文件管理思想,提供了大量的类似于linux的命令来操作hdfs上面的文件

hdfs上面的文件可以限额

可以通过文件数量的限额,限制你最多可以上传多少个文件到hdfs上面去

可以通过空间大小的限额,限制你最多传多少M的数据到hdfs上面去

普通用户百度网盘2T

360网盘:每个人移动端登录送你36T

网盘上面的东西没法快速盈利。国家监管太严了

检测视频合法性已经很难了 ==》 鉴黄师

360网盘死了

城通网盘:唯一一个在盈利支持的网盘。卖广告

企业网盘的开发制作

hdfs的安全模式:hadoop当中提供的一种安全的模式。主要作用在我们集群刚启动的时候,需要进入安全模式进行自检。检测datanode状况,检测我们namenode的健康状况等等。默认30S之后会退出安全模式

安全模式打开的时候,对外不接受写数据请求,只提供读数据请求。有时候做一些集群健康的检测的时候,或者添加减少节点的时候,可以进入安全模式

hdfs集群管理命令

Usage: hdfs dfsadmin
Note: Administrative commands can only be run as the HDFS superuser.
        [-report [-live] [-dead] [-decommissioning]]
        [-safemode ]
        [-saveNamespace]
        [-rollEdits]
        [-restoreFailedStorage true|false|check]
        [-refreshNodes]
        [-setQuota  ...]
        [-clrQuota ...]
        [-setSpaceQuota  ...]
        [-clrSpaceQuota ...]
        [-finalizeUpgrade]
        [-rollingUpgrade []]
        [-refreshServiceAcl]
        [-refreshUserToGroupsMappings]
        [-refreshSuperUserGroupsConfiguration]
        [-refreshCallQueue]
        [-refresh   [arg1..argn]
        [-reconfig   ]
        [-printTopology]
        [-refreshNamenodes datanode_host:ipc_port]
        [-deleteBlockPool datanode_host:ipc_port blockpoolId [force]]
        [-setBalancerBandwidth ]
        [-fetchImage ]
        [-allowSnapshot ]
        [-disallowSnapshot ]
        [-shutdownDatanode  [upgrade]]
        [-getDatanodeInfo ]
        [-metasave filename]
        [-triggerBlockReport [-incremental] ]
        [-listOpenFiles]
        [-help [cmd]]

hadoop的基准测试:主要用于我们新的集群搭建成功之后,测试一下集群的容量,以及数据的读写速度

做基准测试就是向hdfs当中写入或者读取文件

实际工作的当中 5Gb ==> 50Gb ==> 200Gb ==>500Gb ==>1T

数据的写入速度:取决于我们机械磁盘的转速

实际工作当中写入速度大概在20-30M每秒

实际工作当中,读取数据需要涉及到跨越交换机,那么我们 数据的传输速度就取决于我们的交换机够不够快

一般交换机都是使用万兆网卡,最次也要到千兆网卡

传输速度一般在50-100M

课程总结:

1、hadoop的发展历史介绍 了解

2、历史版本 了解

3、hadoop的三大发行公司

4、hadoop的架构模型:

​ 1.x架构模型:

​ hdfs:分布式文件存储系统

​ namenode:主节点,管理元数据信息,接收客户端的请求

​ 元数据信息:描述数据的数据

​ datanode:从节点 存储数据

​ mapreduce:分布式的文件计算系统

​ JobTracker: 主节点,接收客户端的计算任务请求,分配任务

​ taskTracker:从节点,执行jobtracker分配的任务

​ 2.x架构模型: 背下来

​ hdfs:分布式的文件存储系统

​ namenode:管理元数据信息,接收客户端的请求

​ datanode:存储数据

​ snn:辅助namenode管理元数据信息

​ 如果namenodeHA

​ journalNode:两个namenode之间同步元数据信息

​ zkfc:namenode的守护进程,监看namenode的健康状况

​ yarn:资源调度系统

​ resourceManager:主节点,主要用于接收客户端的计算任务请求,并且分配资源

​ nodemanager:从节点,主要负责执行任务

hadoop三种运行环境:apache版本的三中运行环境 不强求

​ standAlone:所有的服务都运行在一台机器上面

​ 伪分布式:主节点都在同一台机器上面,从节点分不到不同的机器

​ 完全分布式:所有的主节点与从节点完全分开,所有的主节点,独立占用一台机器

cdh版本的hadoop的重新编译:

重新编译以支持本地库lib/native

cdh版本的zk环境搭建

伪分布式hadoop的环境的搭建 一定要搞定

hadoop 集群的使用体验: hadoop的shell操作 ls lsr mkdir 操作命令熟练的掌握

hadoop的高级命令的使用 了解知道

hadoop的基准测试:得要知道如何做基准测试

测试的正常值

写入正常值:20-30M每秒

读取正常值:50-100M每秒

你可能感兴趣的:(hadoop,hdfs,大数据)