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

第七天课程: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是大数据处理平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王二小、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值