Hadoop详解

hadoop来源

  • 创始人 doungcuting
  • GFS MAPREDUCE BIGTABLE 谷歌2003年发表的三篇论文
  • Java语言实现的

Hadoop是什么

分布式开源的框架 高可用 将硬件故障看作常态

四大模块

  • common :工具包 rpc框架(通信框架)
  • hdfs :分布式文件系统 Hadoop distributed file system
    • namenode 老大
    • datanode 小弟
    • secondarynamenode 助理
  • mapreduce :分布式计算框架
  • yarn :资源调度框架
    • resourcemanager 老大
    • nodemanager 小弟

搭建过程中遇到的问题:

1)主机找不到

  • (1)/etc/sysconfig/network /etc/hosts
  • (2)重启机器

2)格式化的时候错误

  • 配置文件错误 根据错误提示去相应文件进行调整,修改完毕再格式化

启动过程中遇到的问题:

1)某些进程启动不了

  • 措施1:暴力,全部关闭集群,重新启动

    • stop-dfs.sh 任意节点都可以执行
    • stop-yarn.sh 在yarn主节点执行

    重新启动

    • start-dfs.sh
    • start-yarn.sh
  • 措施2:单独启动未启动的进程

    • 单独启动hdfs相关的进程
    • hadoop-demon.sh start hdfs进程
    • hadoop-demon.sh start datanode
    • hadoop-demon.sh start secondarynamenode
    • 单独启动yarn的相关命令
    • yarn-demon.sh start yarn的相关进程
    • yarn-demon.sh start resourcemanager

搭建过程的注意事项:

1)集群的成功的格式化只能格式化一次,不成功则一直努力到格式化成功

  • 格式化的过程中:创建出来namdnode存储相关的目录
  • VERSION文件:记录集群的版本信息,每格式化一次就好生成新版本
  • 想要重复格式化:
    • 1、删除namenode的数据目录
      • rm -rf /home/hadoop/data/hadoop/name
    • 2、删除datanode的数据目录
      • rm -rf /home/hadoop/data/hadoop/data

集群搭建环境变量配置

jdk hadoop

  • 在Linux下修改环境变量有三个地方

    • 1、/etc/profile 系统环境变量 针对所有用户
    • 2、~/.bashrc 用户环境变量 针对当前用户
    • 3、~/.bash_profile 用户环境变量 针对当前用户
  • 这三个配置文件的加载顺序:

    • /etc/profile > ~/.bashrc > ~/.bash_profile
  • 生效:最后一次加载的生效

时间同步问题:

  • 只要是完全分布式或者多个分布式之间一定要做时间同步
  • 目的:
    • 集群内部各个节点直接时间保持一致
  • 为什么?
    • 集群内部各个节点需要进行通信,尤其是datanode和namenode之间,它们之间的通信是依靠心跳,心跳是有一个时间控制的,这个时间是630s,所以需要做时间同步

集群搭建模式

1)单机模式

  • 直接解压的方式,什么都不配置,并且在一个节点上
  • 没有分布式文件系统的,所用的所有文件都来自于本地
  • 几乎没人用
  • 测试

2)伪分布式

  • 可以看做是完全分布式但是跑在一一个节点上,所有的进程全部配置到一个节点上
  • 有分布式文件系统的,只不过这个文件系统只有一个节点
  • 个人学习测试

3)完全分布式

hdfs为例

  • 在宏观_上看就是一一个大的节点,
  • 后台采用的硬件配置是三台机器的硬件配置之和,但是对于用户来说完全感觉不到
  • 在完全分布式中有主节点,有从节点。
  • 主节点namenode只有一个,从节点有多个,真实生产中namenode会单独做-一个节点,
  • 如果集群中namenode宕机,整个集群还可以使用吗?不可以
  • namenode:
    • 1)主要作用存储元数据(管理数据的数据,存储的就是datanode存储数据的描述)
    • 数据存储在datanode的哪一一个节点,数据是谁上传的等等
    • 2)处理读写请求. 上传、下载
  • datanode:负责集群中真正数据存储的
  • 如多namenode宕机集群无法使用,这也是完全分布式的一大缺点,存在单点故障问题
  • 一般生产中不太使用学习的,公司中测试 节点个数比较少的时候有时候也会使用这种模式
  • 节点数目越多namenode宕机的可能性越大 压力太大
  • 助理secondarynamenode:只是一个助理,仅仅分担namenode的压力但是不能代替
  • 架构:一主多从

4)高可用

  • 最广泛的搭建方式

  • 高可用:集群可以持续对外提供服务 做到7*24小时不间断

  • 依赖于zookeeper

  • 高可用集群架构:双主多从,但是同一时间只有一个是活跃的,我们把这个活跃的namenode成为active,另外一个处于热备状态,称为standby,但是两个主节点存储的
    元数据是一模一样的,当active namenode宕机的时候,standby namenode可以立马切换为active namenode对外提供服务,就会做到集群持续对外提供服务的功能,如果
    宕机的namenode又活过来了,这个namenode只能是standby

  • 缺陷:

    • 在同一时间中集群只有一个active namenode,也就是说我们集群的主节点的能力只有一个节点,集群中节点个数过多(1000节点)的时候就好造成namenode崩溃
    • namenode存储的是元数据,元数据过多的时候会造成namenode崩溃(两个都崩溃)没有真正的分担namenode
  • 实际生产中使用

5)联邦机制

  • 同一个集群中可以有多个主节点,这些主节点的地位是一样的

  • 同一时间可以有多个活跃的active namenode

  • 这些namenode共同使用集群中所有的datanode,每个namenode只负责管理集群中的datanode上的一部分数据

  • 联邦+高可用

  • 超大集群

  • 每个namenode进行数据管理靠的Block PoolID ,不同的namnode管理的Block PoolID不一样

Hadoop

  • common
  • hdfs
  • mapreduce
  • yarn

hdfs介绍:

hdfs:分布式文件系统

设计思想:

  • 1)分块存储 每个块叫block
    • 块的大小不能太大,太大会造成负载不均衡
    • hadoop2.x默认的切分块大小为128M
    • 如果一个文件不足128M,也会单独存一个块,占用实际文件大小
    • 这个分块存储思想中,如果有一个块的存储节点宕机了,这个时候数据的完整性就得不到保障
  • 2)HDFS中默认块的存储采用备份机制,默认备份个数是3,测试环境配置的为dfs.replication=2 2份备份,所有备份没有主次之分
    • 相同数据块的副本一定存储在不同的节点上

    • 如果节点总共2个,dfs.replication=3,实际存储2个,另外一个进行记账,当集群节点大于等于3的时候会进行复制这个副本,最终达到3个
      假设集群中有4个节点,配置副本3个,有一个副本节点宕机了,这个时候会发现副本个数小于设定的个数,就好进行复制,达到3个副本,这个时宕机的节点恢复,这个时候集群副本个数为4,集群会等待一段时间后如果发现还是4个副本就会删除一个副本

    • 备份越多越好吗?

    • 副本越多,数据安全性越高,但是副本数越多会占用过多的存储资源,会造成集群的维护变得困难

hdfs的目录结构和linux操作系统的类似,以/为根节点,我们将这个目录树成为抽象目录树
因为hdfs的目录结构代表的是所有数据节点的抽象出来的目录,不代表任何一个节点

  • hdfs: /hadoop. zip 500M 被分成4个块存储
  • hdfs中存储的数据块是有编号的 blk_1 blk_2 blk_3 blk_4
  • /spark.zip 300M 3个块, blk_5 blk_6 blk_7
  • 底层存储的时候每-一个block都有--个唯一的id
  • hdfs的数据底层存储的时候,还是存在真正的物理节点上

hdfs的整体架构:

主从结构

  • 一个主节点 多个从节点

  • namenode:

    • 用于存储元数据
      • 这里的元数据包括:1.抽象目录树 2.存储数据和block的对应关系 3.block存储的实际位置
    • 处理客户端的读写请求
      • 读--下载 写--下载
  • datanode:

    • 负责真正的存储数据,存储数据block
    • 真正处理读写
  • secondarynamenode:

    • 冷备份节点:助理 当namenode宕机时不能主动切换成namenode,但是secondarynamenode中存储的数据和namenode中‘相同’
    • 主要作用是:
        1. namenode宕机的时候帮助namenode恢复
      • 2)帮助namenode做些事情,分担namenode的压力

hdfs的优缺点

优点:

  • 1.可构建在廉价机器上
    • 通过多副本提高可靠性,提供了容错和恢复机制
  • 2.高容错性
    • 数据自动保存多个副本,副本丢失后,自动恢复
  • 3.适合批处理
    • 移动计算而非数据,数据位置暴露给计算框架
  • 4.适合大数据处理
    • GB、TB、甚至PB级数据,百万规模以上的文件数量,10K+节点规模
  • 5.流式文件访问 不支持数据修改
    • 一次性写入,多次读取,保证数据- -致性

缺点:

  • 1.不支持低延迟的数据访问,不支持实时/近实时
  • 2.不擅长存储大量的小文件 kb级别的
    • 1)寻址时间太长,寻址时间大于读取时间 不划算,进行数据访问的时候先找元数据

      • 元数据是跟block对应的 1block块对应一条元数据
    • 2)造成元数据存储量过大,增加namenode的压力

      • 在hdfs中元数据存储一般情况下一条元数据150byte左右
      • 1000w条元数据------- 10000000*150 1.5G
  • 3.不支持文件内容修改

hdfs的应用

hdfs归根结底就是-一个文件系统 类似于linux命令

  • 1)hdfs命令方式

    • hdfs文件系统中文件的访问只有一种方式只能通过绝对路径

    • 开启hadoop或hdfs的客户端

      • hadoop fs(开启原生文件系统客户端)
      • hadoop fs -ls /
    • hdfs核心功能:上传、下载

    • 上传:put

      • -put [-f] [-p] [-l] < localsrc>...< dst>
      • -put 本地文件目录 hdfs上的目录
      • hadoop fs - put hadoop-3.1.2.tar.gz /test
    • -get

      • 功能:等同于copyToLocal,就是从hdfs下载文件到本地
      • 示例: hadoop fs -get /aaa/jdk.tar.gz
    • -getmerge

      • 功能:
      • 合并下载多个文件
      • 示例:比getmerge
      • 如hdfs的目录/aaa/ 下有多个文件:log.1, log.2,log.3,...
        • hadoop fs -getmerge /aaa/log.* ./log.sum
        • hadoop fs -getmerge /ss/aa.txt /ss/bb.txt /home/hadoop/cc.txt
    • -cp

      • 功能:从hdfs的-一个路径拷贝hdfs的另-一个路径
      • 示例:
        • hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
    • -cat 查看文件内容

      • hadoop fs -cat /ss/aa.txt
    • -rm 删除文件

      • -rm -r(递归) -f(强制)
      • hadoop fs -rm -f /ss/aa.txt
    • -mv 移动文件/修改文件名

      • hadoop fs -mv /ss/bb.txt /ss/test.txt
    • -cp 复制文件

      • hadoop fs -cp /ss/bb.txt /ss/cc.txt
    • -moveFromLocal 从本地剪切到hdfs

    • -appendToFile 文件追加,将本地文件追加到hdfs中,末尾添加

      • 将本地bb. txt追加到hdfs的/aa/aa.txt 这个追加是在原始块的末尾追加的,如果超过128M才会进行切分
    • -tail 显示一个文件的末尾

      • hadoop fs -tail -f /ss/aa.txt
    • -df

      • 功能:统计文件系统的可用空间信息
      • 示例: hadoop fs -df -h
    • -du

      • 功能:统计文件夹的大小信息
      • 示例: hadoop fs -du -S -h /aaa/*
    • -chgrp

    • -chmod

    • -chown

      • 功能: linux文件系统中的用法- -样,对文件所属权限
      • 示例:
        • hadoop fs -chmod 666 /hello.txt
        • hadoop fs -chown someuser:somegrp /hello.txt
    这些命令在集群中任意节点都可以使用,hdfs文件系统中你看到的目录只是一个抽象的目录树,实际存储在集群的节点上
  • 2)java API的方法

  • linux用到的监听命令: tail -f/F文件路径
  • linux的权限管理命令:
    • 修改文件权限的:

      • chmod文件权限文件
      • 文件权限3种:
        • 可读 r 4
        • 可写 W 2
        • 可执行 X 1
        • 最大权限是 7
    • rw-rW- r--

    • -文件属性 d--目录-文件 连接

    • rw-本用户 rw- 本组用户 r-- (其他用户) 权限

      • 6 6 4
    • 修改文件所属用户和组:

      • chown -R 用户名:组名 文件/目录
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • 首先,我们在使用前先看看HDFS是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 4,196评论 0 2
  • 架构设计 NameNode NameNode: 文件系统的命名空间(面试题) 1.文件名称 2.文...
    ly稻草阅读 1,298评论 0 2
  • 一、什么是Hadoop?它包含哪些模块?① Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架...
    堂哥000阅读 1,022评论 0 7
  • HDFS入门 hadoop架构 Hadoop 1.0中的资源管理方案 Hadoop 1.0指的是版本为Apache...
    依天立业阅读 1,056评论 0 1
  • 2018 20180517 有马赖义(1918年~1980年4月),伯爵有马赖宁第三子,出生于东京,日本作家,代表...
    跳小熊舞的哆啦阅读 717评论 0 0