您的位置:首页 > 大数据 > Hadoop

第七第八 hadoop环境的搭建&HDFS分布式文件存储系统的学习

2019-07-11 21:24 477 查看

课堂学习笔记

  • 第八天课程:Apache Hadoop介绍&环境搭建
  • 第七天课程:Apache Hadoop介绍&环境搭建

    Apache Hadoop介绍

    1. 核心组件:
      HDFS:分布式文件系统,解决海量数据存储
      YARN:作业调度和集群资源管理的框架,解决资源任务调度
      MAPREDUCE:分布式运算编程框架,解决海量数据运算

    Apache Hadoop集群介绍

    1. hadoop集群包括HDFS集群和YARN集群
    2. HDFS:主从集群 主:NameNode 从:DataNode 主的助手:SecondaryNameNode
    3. YARN:主从集群 主:ResourceManager 从:NodeManager
    4. Hadoop 部署方式分三种,
    5. Standalone mode(独立模式)。独立模式又称为单机模式,仅 1 个机器运行 1 个 java 进程,主要用于调试。
    6. Pseudo-Distributedmode(伪分布式模式)。伪分布模式也是在 1 个机器上运行 HDFS 的 NameNode 和 DataNode、YARN 的
      ResourceManger 和 NodeManager,但分别启动单独的 java 进程,主要用于调试。
    7. Cluster mode(集群模式)。集群模式主要用于生产环境部署。会使用 N 台主机组成一个 Hadoop 集群。
      这种部署模式下,主节点和从节点会分开部署在不同的机器上。 我们以 3 节点为例进行搭建,角色分配如下:
      node-01:NameNode DataNode ResourceManager
      node-02:DataNode NodeManager SecondaryNameNode
      node-03:DataNode NodeManager

    Apache Hadoop集群搭建&集群规划

    1. 使用相同资源的不要在一台机器上
    2. 职责之间有关系、有依赖的在一台机器上
    3. 考虑以后工作的方便性(尽量减少ssh)
    4. 开始规划:
      三台机器
      node 1: NameNode DataNode | ResourceManager NodeManager
      node 2: DataNode SecondaryNameNode | NodeManager
      node 3: DataNode | NodeManager
    5. 规划跟实际效果之间,要想保证一致,需要配置文件的约束。
      因此hadoop集群的搭建重点在于,规划好之后,配置文件的编写,体现出规划思想。

    Apache Hadoop集群搭建–服务器环境准备&jdk安装

    1. 三台虚拟机时间同步:ntpdate cn.pool.ntp.org
    2. 配置IP、主机名映射
    3. 配置ssh免密登陆
      #生成 ssh 免登陆密钥
      ssh-keygen -t rsa (四个回车)
      执行完这个命令后,会生成 id_rsa(私钥)、id_rsa.pub(公钥) 将公钥拷贝到要免密登陆的目标机器上
      ssh-copy-id node-02
    4. 配置防火墙
      #查看防火墙状态
      service iptables status
      #关闭防火墙
      service iptables stop
      #查看防火墙开机启动状态 chkconfig iptables --list
      #关闭防火墙开机启动 chkconfig iptables off
    5. jdk环境安装

    Apache Hadoop集群搭建–源码编译意义&安装目录讲解

    1. hadoop目录:
      bin:基本脚本命令
      sbin:集群管理启停命令
      etc:配置文件
      share:官方自带实例

    Apache Hadoop集群搭建–配置文件详解

    1. hadoop配置文件三大类
      a. hadoop环境配置文件:hadoop-env.sh
      b. 四个文件:
      core-site.xml:指定默认文件系统,指定hdfs运行时数据放在哪
      hdfs-site.xml:指定副本个数,默认是3,指定SecondaryNameNode在哪台机器
      mapred-site.xml:指定mr程序运行的模式,yarn模式
      yarn-site.xml:指定yarn leader在哪台机器上,指定mr附属服务
      c. salves:配置两个集群小弟所在的ip,配合一键启动脚本使用的
    2. 配置环境变量

    Apache Hadoop集群搭建–NameNode格式化操作

    1. 首次启动 HDFS 时,必须对其进行格式化(初始化)操作。 清理并创建hdfs运行时所需要的文件、目录。
    2. 注意事项:
      格式化只能进行一次,在集群搭建完毕之后,第一次启动之前。否则,数据全部丢失、datanode识别不了namenode
      格式化是初始化的操作,hadoop.tmp.dir指定的目录也在这时创建,另外创建一些文件,这些文件和hdfs运行元数据相关。
      格式化的操作一般在namenode所在的机器上执行,其他机器不需要执行。

    Apache Hadoop集群搭建–脚本启动&单节点逐个启动

    1. hadoop集群启动方式:
      一键式脚本启动:
      start-dfs.sh start-yarn.sh
      stop-dfs.sh stop-yarn.sh
      单节点逐个启动:
      hadoop-daemon.sh
      hadoop-daemon.sh start namenode(关闭当前机器的namenode,不关闭所有机器的namenode)
      hadoop-daemon.sh start datanode
      hadoop-daemon.sh start secondarynamenode
      yarn-daemon.sh

    Apache Hadoop集群搭建–集群启动&初体验

    1. NameNode http://nn_host:port/ 默认 50070.
      ResourceManager http://rm_host:port/ 默认 8088
      比如 http://nn_host:port/
    2. HDFS 使用
      hadoop fs -mkdir /666 创建 666文件夹
      hadoop fs -put a.txt /666 将a.txt 上传到分布式文件系统中的666文件夹
      hadoop fs -get /666/a.txt ./ 将分布式文件系统中的文件下载 到当前文件目录
    3. 运行 mapreduce 程序
      在 Hadoop 安装包的 hadoop-2.7.4/share/hadoop/mapreduce 下有官方自带 的 mapreduce 程序。我们可以使用如下的命令进行运行测试。
      示例程序 jar:
      hadoop-mapreduce-examples-2.7.4.jar 计算圆周率:
      hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 20 50
    4. 单词统计小程序:
      需求:有几个文件,每个文件都有英文,统计每个单词出现的次数
      vi 1.txt
      vi 2.txt
      hadoop fs -mkdir /input
      hadoop fs -put 1.txt 2.txt /input
      hadoop jar hadoop-mapreduce-examples-2.7.4.jar wordcount /input /output
      说明:新建input文件夹,上传记录单词的文件1.txt 2.txt到input,使用自带jar包里面的wordcount计算两个文件里面的单词次数。
    5. 待探索问题
      好像每次程序第一步都是找yarn的leader—ResourceManager,是在找资源?
      mapreduce,好像先map再reduce
    6. 解答
      每次在执行mr的时候,都会去yarn申请资源
      yarn作为一个资源管理器,负责每个maptask的容器申请。
      先map后reduce
      是mapreduce的一种思想,分而治之
      即先分数据,再合并数据
      在map的时候,就将数据进行大致的分类,已确保数据会去哪个reduce中去处理
      在reduce的时候,会将各个map端产生的结果进行复制合并,再统一操作,最后将数据写入到hdfs中
      在执行流程中都是先map后reduce,但如果需求比较简单,就会只有map,而没有reduce。

    第八天课程:Apache Hadoop介绍&环境搭建

    13–Hadoop HDFS–如何模拟实现分布文件系统

    1. HDFS: hadoop distributed file system
    2. 解决的问题:大数据存储
    3. 海量数据存储时,传统的存储模式遇到的问题:
      1、来数据就存数据–>遇到存储瓶颈 内存不足,磁盘不足 -
      纵向扩展,加内存加磁盘,但是有上限。
      横向扩展,分布式存储
      2、当数据被分布式存储时,随意摆放查找时困难
      建立数据的索引–>元数据:记录数据所在的位置。
      3、数据文件很大时,读取或上传 IO耗时长,浪费资源–>将文件切为block。
      4、当文件被分块存储在不同的机器上时,万一某一个机器挂了怎么办?
      为了保证安全,备份比较安全。当数据备份时,元数据也要记录。

    14–Hadoop HDFS–如何模拟实现分布文件系统小结

    1. 备份数越多,越安全,冗余度(重复性)越高。

    15–Hadoop HDFS–设计模板

    1. 故障的检测和自动快速恢复是 HDFS 的核心架构目标
    2. 以流式读取数据,相较于数据访问的反应时间,更 注重数据访问的高吞吐量
    3. HDFS 被调整成支持大文件。 它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中 还应该支持千万级别的文件。
    4. 大部分 HDFS 应用对文件要求的是 write-one-read-many 访问模型。一个文 件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性 问题,使高吞吐量的数据访问成为可能。
    5. 移动计算的代价比移动数据的代价低,将计算的应用移动到数据越近越高效。
    6. 在异构的硬件和软件平台上的可移植性

    16–Hadoop HDFS–重要特性

    1. 是一个文件系统,分布式的。
    2. master/slave 架构
      HDFS 采用 master/slave 架构。一般一个 HDFS 集群是有一个Namenode和一定数目的Datanode 组成。Namenode是HDFS 集群主节点,Datanode 是 HDFS 集群从节点。
    3. 分块存储
      HDFS 中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在hadoop2.x 版本中是block size = 128M。
    4. 名字空间 :Namenode 负责维护文件系统的名字空间
    5. NameNode元数据管理:目录结构及文件分块位置信息叫做元数据
    6. DataNode数据存储:文件的各个 block 的具体存储管理由 datanode节点承担。每一个block 都 可以在多个 datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block 信息。
      存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。
    7. 副本机制:为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系 数都是可配置的。
    8. 一次写入,多次读出
      HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改。

    17–Hadoop HDFS–shell客户端操作

    1. hadoop fs
    2. 对于 HDFS,命令示例如下:
      hadoop fs -ls hdfs://namenode:host/parent/child
      hadoop fs -ls /parent/child
      比如 hadoop fs -ls hdfs://node-1:9000/ 相当于 hadoop fs -ls /
      配置文件里面:
      fs.defaultFS
      hdfs://node-1:9000
    3. 查看本地文件:ls / 相当于 hadoop fs -ls file:///
    4. 操作是哪一个文件系统,取决于路径的url
      hdfs://node-1:9000开头的,操作hdfs
      file:/// linux系统
    5. ** Shell 常用命令介绍**
      -ls
      使用方法:hadoop fs -ls [-h] [-R] 功能:显示文件、目录信息。
      示例:hadoop fs -ls /user/hadoop/file1
      h可以看文件的大小
      R可以查看路径下子节点
      -mkdir
      使用方法:hadoop fs -mkdir [-p]
      功能:在 hdfs 上创建目录,-p 表示会创建路径中的各级父目录。 示例:hadoop fs -mkdir –p /user/hadoop/dir1
      -put
      从本地上传到hdfs
      使用方法:hadoop fs -put [-f] [-p] [ -| … ]. 功能:将单个 src 或多个 srcs 从本地文件系统复制到目标文件系统。
      -p:保留访问和修改时间,所有权和权限。
      -f:覆盖目的地(如果已经存在)
      示例:hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
      -get
      使用方法:hadoop fs -get [-ignorecrc] [-crc] [-p] [-f] -ignorecrc:跳过对下载文件的 CRC 检查。
      -crc:为下载的文件写 CRC 校验和。
      功能:将文件复制到本地文件系统。
      示例:hadoop fs -get hdfs://host:port/user/hadoop/file localfile
      -appendToFile
      使用方法:hadoop fs -appendToFile … 功能:追加一个文件到已经存在的文件末尾
      示例:hadoop fs -appendToFile localfile /hadoop/hadoopfile
      北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
      -cat
      使用方法:hadoop fs -cat [-ignoreCrc] URI [URI …] 功能:显示文件内容到 stdout
      示例:hadoop fs -cat /hadoop/hadoopfile
      -tail
      使用方法:hadoop fs -tail [-f] URI 功能:将文件的最后一千字节内容显示到 stdout。 -f 选项将在文件增长时输出附加数据。 示例:hadoop fs -tail /hadoop/hadoopfile
      -chgrp
      使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] 功能:更改文件组的关联。用户必须是文件的所有者,否则是超级用户。
      -R 将使改变在目录结构下递归进行。
      示例:hadoop fs -chgrp othergroup /hadoop/hadoopfile
      -chmod
      功能:改变文件的权限。使用-R 将使改变在目录结构下递归进行。 示例:hadoop fs -chmod 666 /hadoop/hadoopfile
      -chown
      功能:改变文件的拥有者。使用-R 将使改变在目录结构下递归进行。 示例:hadoop fs -chown someuser:somegrp /hadoop/hadoopfile
      -copyFromLocal
      使用方法:hadoop fs -copyFromLocal URI 功能:从本地文件系统中拷贝文件到 hdfs 路径去 示例:hadoop fs -copyFromLocal /root/1.txt /
      -copyToLocal
      功能:从 hdfs 拷贝到本地
      示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz
      北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
      -cp
      功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径
      示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
      mv
      功能:在 hdfs 目录中移动文件
      示例: hadoop fs -mv /aaa/jdk.tar.gz /
      -getmerge
      功能:合并下载多个文件
      示例:比如 hdfs 的目录 /aaa/下有多个文件:log.1, log.2,log.3,… hadoop fs -getmerge /aaa/log.* ./log.sum
      -rm
      功能:删除指定的文件。只删除非空目录和文件。-r 递归删除。 示例:hadoop fs -rm -r /aaa/bbb/
      -df
      功能:统计文件系统的可用空间信息 示例:hadoop fs -df -h /
      -du
      功能:显示目录中所有文件大小,当只指定一个文件时,显示此文件的大小。 示例:hadoop fs -du /user/hadoop/dir1
      -setrep
      功能:改变一个文件的副本系数。-R 选项用于递归改变目录下所有文件的副本 系数。
      示例:hadoop fs -setrep -w 3 -R /user/hadoop/dir1

    总结

    1. hadoop是大数据处理平台
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: