Hadoop整理文档

Hadoop概念

  • 分布式的计算框架 可靠 可扩展
  • 可靠 high-availability(HA)
  • 可扩展 集群可以上万台,分布式计算 分布式存储
  • Hadoop可以做什么
    • 数据仓库
      • 数据库 一般只保存数据的最新状态,极个别重要的值会保存历史版本
      • 数据仓库 会保存所有的历史版本 只记录 很少更新删除
    • PB级数据的存储 处理 分析 统计
      • 日志分析
      • 数据挖掘
      • 商业智能(Business Intelligence,BI)

Hadoop组件

  • Hadoop common
    • 协同其他组件的通用工具
  • HDFS
    • 分布式文件系统
    • 扩展性&容错性&海量数据存储
    • 数据切分成制定大小的数据块进行存储
    • 数据会有冗余(多副本) 保存 通过冗余实现容错
  • MapReduce(离线计算)
    • 分布式计算框架
    • 移动计算到每个节点 MapReduce 移动计算
    • 扩展性&容错性&海量数据离线处理
    • 计算分成两个阶段
      • Map 分
      • Reduce 合
  • YARN
    • 资源管理 作业调度
    • 多个框架会用到HDFS上的数据,先后问题,需要有框架来协调 YARN起到了协调的作用
    • 另一种资源协调者 Mesos
    • Yarn hadoop 2.0版本才加进来

Hadoop优势

  • 高可靠
    • 数据存储:数据块多副本
    • 数据计算:某个节点崩溃,会自动重新调度作业计算
  • 高扩展性
    • 存储/计算资源不够时,可以横向的线性扩展机器
    • 一个集群中可以包含数以千计的节点
    • 集群可以使用廉价机器,成本低
  • Hadoop生态系统成熟

HDFS

  • 数据冗余 高可用 副本数量也可指定
  • 数据拆分 配置文件中指定文件块大小 Block size 128MB
  • A.log 分成3份 block-ID 001 002 003 副本数3 datanode1 datanode 5 datanode 7
  • 架构
    • NameNode
      • 响应客户端请求
      • 元数据存储
      • DataNode管理
    • DataNode
      • 数据存储
      • 和客户端之间io操作
      • 定期向NameNode汇报自身情况
  • NameNode高可用
    • 3台 1台活着 另外两个备份 zookeeper管理(数据一致性、主节点选取)

yarn架构

  • 作用:协调多个框架共同访问hdfs集群资源
  • 架构:
    • ResourceManager: RM资源管理器
      • 响应客户端请求
      • 管理NodeManger状态
      • 响应ApplicaMaster的请求
    • NodeManager: NM节点管理器
      • 管理自身应用
      • 启动container 运行task
      • 响应ApplicationMaster的请求
    • ApplicationMaster: AM
      • 作业解析
      • 向ResourceManager 请求资源
      • 向NodeManager分发task
    • Container容器:封装了CPU、Memory等资源的一个容器
    • Client:客户端提交作业
  • 流程
    1. Client提交作业请求
    2. ResourceManager 进程和NodeManager进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将ApplicationMaster分发到这个容器上面
    3. 在启动的Container中创建ApplicationMaster
    4. ApplicationMaster启动后向ResourceManager注册进程 申请资源
    5. ApplicationMaster申请到资源后, 向对应的NodeManager申请启动Container将要执行的程序分发到NodeManager上
    6. Container启动后, 执行对应的任务
    7. Tast执行完毕之后,向ApplicationMaster返回结果
    8. ApplicationMaster向ResourceManager汇报任务结束请求kill进程
  • 访问50070 8088端口失败 可能是防火墙问题
    • systemctl stop firewall

MapReduce

  • mapreduce 既是分布式计算框架,也是一个编程模型
  • 解决 数据分布式存储带来的分布式计算问题
  • 把作业通过map阶段下发到每一个数据所在的节点
  • 在reduce阶段汇总map阶段的结果
  • 编程时候 要实现map和reduce接口
  • python脚步来写map reduce代码时,是通过hadoop-streaming去实现的 最终还是会编译成 .jar 文件执行
  • hadoop streaming 执行命令
    • STREAM_JAR_PATH="/opt/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.10.0.jar"
    • INPUT_FILE_PATH_1="/data.txt"
    • OUTPUT_PATH="/output"
    • hadoop fs -rm -r -skipTrash $OUTPUT_PATH
    • hadoop jar $STREAM_JAR_PATH -input $INPUT_FILE_PATH_1 -output $OUTPUT_PATH -mapper “/usr/local/bin/python3 mapper.py” -reducer “/usr/local/bin/python3 reducer.py” -file ./mapper.py -file ./reducer.py

MRJob

  • 写一个类继承MRJob
  • 重写mapper和reducer方法
  • 在main方法中调用MRJob.run () 方法开启整个过程
  • MrJob提交作业的方式
    • 本地测试
      • python mrjob代码. py要处理的数据所在位置
    • 提交到Hadoop集群处理
      • python word_ count.py -r hadoop hdfs:///要统计的文件在hadoop的位置-0 hdfs:///输出结果保存的位置
  • 如果是在虚拟环境下运行mrjob可能会报错
    • python word_count.py -r hadoop hdfs:///test.txt -0 hdfs:///output --python-bin/miniconda2/envs/py365/bin/python
  • 如果mapreduce有多个步骤 可以通过steps方法指定 MRStep
  • 数据处理的时候频繁的在磁盘和内存,上进行数据IO而不是始终在内存总处理这些I/0操作导致了速度比较慢

MapReduce架构

  • 1.x的时候
    • JobTracker master 计算集群管理
    • TaskTracker slave 负责具体任务执行的
    • Task Scheduler 作业调度
  • 2.x Yarn出现作业的调度都交给Yarn处理
    • MapReduce只是进行具体任务执行

Hadoop 发型版本选择

  • 社区版
    • XXXXXX.apache.org 下载
    • 可以下载到最新的版本
    • 如果涉及到的大数据框架比较多,版本选择不慎可能会有兼容性问题
  • CDH版
    • 通过统一CDH版本来避免兼容性问题
    • hadoop-2.6.0-cdh-5.7.0 和Flume*-cdh5.7.0只要CDH版本一致就不会存在兼容性问题
    • 缺点:新版本更新比社区版慢、部分内容没有开源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值