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稳定版本已经发布
大数据的框架太多了==》造成框架版本的兼容性 ==》 框架版本的升级型怎么做
框架太多了,如何统一的管理框架的版本号,如何做到统一的框架的升级???
免费开源的版本apache:版本更新迭代比较快,但是版本之间的兼容性,版本的升级,apache不管
实际生产线上环境,一般不要用apache的版本
免费开源的版本hortOnWorks :在开源版本的基础上,做好了版本的兼容,做好了版本的升级,有一定的群众基础,有一定的人用
服务软件收费版本:Cloudera 致力于做大数据软件框架的生态圈。生产环境用的比较多的版本。版本的升级,版本的兼容都做好了
MapR ==>大数据软件的公司
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
1、standAlone环境:一般用不到。用一台机器来运行hadoop的环境
2、伪分布式环境:一般用于学习测试环境。主节点与从节点都运行在一台机器上面。从节点还运行在其他机器上面
3、完全分布式的环境:一般用于线上正式环境。主节点与从节点完全分开到不同的机器上面去,主节点完全分开,主节点一般都独立的占用一台机器
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是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每秒