hadoop
hadoop起源于一个开源的项目nutch,主要是做通用爬虫的,遇到两个问题,一个是数据量太大,没法搜索,一个是数据量太大没法存储。
- 检索的问题:使用lucene解决
- 数据的存储问题:看到谷歌开源的三篇论文 GFS(google fileSystem),MapReduce(分布式计算框架) BigTable(key,value对的非关系型数据库)产生两个框架 hadoop(HDFS+MapReduce) HBase
hadoop从广义上来说是指代一个大数据软件的生态圈,包括各种周边的其他框架。
zookeeper:主要是一个分布式的服务协调框架
zookeeper架构图:
leader:主节点,处理事务性的请求,增删改
follower:从节点,主要处理非事务的请求(查询操作),以及转发事务请求给主节点
zookeeper的特性:全局数据一致性,任何一台机器的数据都是一样的
zookeeper的shell操作:添加、删除、查看节点,修改节点数据
zookeeper的节点类型:永久节点、临时节点、永久序列化节点、临时序列化节点
zookeeper的数据模型:每一个节点称之为znode,兼具文件和文件夹的特性
zookeeper的watch机制:监听器的应用,瞄着某一个节点的变法,一旦有变化,马上感知到
zookeeper的API操作
hadoop 1.x与2.x的架构模型介绍
- hadoop1.x架构模型:主要分为两大块,一块是分布式文件存储,一块是分布式文件计算
分布式文件存储:HDFS
nameNode:主节点,主要用来维护元数据信息
dataNode:从节点,主要用来存储数据
SecondaryNameNode:作用就是用于合并元数据信息,辅助nameNode管理元数据信息
分布式文件计算:MapReduce
JobTracker:主节点,主要功能接受用户提交的计算任务,分配任务给从节点执行
taskTracker:从节点,主要用于接受主节点分配的任务,并执行任务
- 元数据信息:描述数据的数据
例一:如果有一堆书,如何快速查找到我需要的时间简史?
书本的分类、书本的编号、书本所在的书架、书本的位置,如果记录了这些信息,就可以快速找到对应的书本这些信息,描述了我们需要的书本在哪里,确定了这些描述信息,就可以唯一定位到这本书。这些都是一些描述数据,叫做我们的元数据信息。
例二:如何设计一个文件系统?
盘符、文件名 、文件的类型 、文件大小 、创建时间修改时间、所属权限 、文件的路径,这些数据都是用于描述一个文件或者文件夹,只要有了这些描述信息,那么我们就能定位到一个唯一的文件或者文件夹。这些都是一些描述数据,叫做我们的元数据信息。 - 1.x当中,主节点 namenode jobtracker都存在单节点故障问题。
- hadoop2.x的架构
分布式文件存储:HDFS
nameNode:主节点,主要用来维护元数据信息
dataNode:从节点,主要用来存储数据
SecondaryNameNode:作用就是用于合并元数据信息,辅助nameNode管理元数据信息
资源调度系统:yarn平台
resourceManager:主要两个作用,接收用户的计算任务请求,分配资源
nodeManager:主要用于接收appmaster分配的任务
AppMaster:resourceManager为每个计算任务启动一个AppMaster,AppMaster主要负责资源的申请,任务的分配
- 如果namenode高可用:就没有secondaryNamenode了,取而代之的是journalNode:主要用于同步元数据信息,保证两个namenode的元数据信息是一致的并且journalNode需要奇数个,半数及以上的journalNode写入元数据成功,就代表写入成功。
- nameNode active状态:主要负责用户的写请求
- nameNode standBy状态:主要负责瞄着active什么时候死了,赶紧上位
- 为什么要保证两个namenode看到的元数据信息是一样的?
答:集群的脑裂:为了避免集群的脑裂,造成看到的数据不一致,一定要保证两个namenode当中的元数据信息一模一样,journalnode就是同步两个namenode当中的元数据信息,保证两个namenode当中的元数据信息一模一样。namenode高可用的自动切换,主要是通过两个守护进程zkfc来实现的
hadoop基础
- hadoop安装包结构
hadoop-2.7.3/bin:一些shell脚本,供我们使用
hadoop-2.7.3/sbin:一些shell脚本,供我们使用
hadoop-2.7.3/etc/hadoop:所有的配置文件的路径
hadoop-2.7.3/lib/native:本地的C程序库 - 检测hadoop的本地程序库
bin/hadoop checknative
hadoop: true 本地库,支持我们使用C程序来访问hadoop
zlib: true 压缩库
snappy: false 压缩库 谷歌出品的一种压缩算法,谷歌出品,必属精品
lz4: true 压缩库
bzip2: false 压缩库 - hadoop 核心配置文件的作用:
core-site.xml:核心配置文件,主要定义了我们文件访问的格式 hdfs://
hadoop-env.sh:主要配置我们的java路径
hdfs-site.xml:主要定义配置我们的hdfs的相关配置
mapred-site.xml 主要定义我们的mapreduce相关的一些配置
slaves:控制我们的从节点在哪里 datanode nodemanager在哪些机器上
yarn-site.xml:配置我们的resourcemanager资源调度 - hadoop 安装注意事项
集群搭建好了之后,第一次需要进行格式化,工作中,以后都不要再格式化了,格式化之后所有的数据都没了。
hdfs
全称是hadoop distributed file system ,数据存储的核心组件
- hdfs的特性:
master/slave架构:namenode是我们的主节点,datanode是我们的从节点; namenode主要管理元数据信息 datanode主要存储各种数据。一次写入,多次读取:频繁的写入会造成元数据的频繁的更新改变,比较麻烦 - hdfs常用的操作命令
- hdfs的高级命令使用:主要就是用于限制某个路径下面的文件的个数,或者限制某个路径下面文件的大小
- hadoop的安全模式:hadoop集群刚启动的时候,默认处于安全模式30秒,安全模式的时候对外不提供给任何服务刚开始启动的时候,处于安全模式:检测我们的datanode去了。
网友评论