前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop入门

Hadoop入门

作者头像
阿dai学长
发布2020-01-27 09:44:25
6060
发布2020-01-27 09:44:25
举报
文章被收录于专栏:阿dai_linux

概述

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

Hadoop能做什么?

hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

Hadoop基础组件

  • Hadoop Common:支持hadoop其他模块运行的基础工具;
  • Hadoop Distribution File System(HDFS):分布式文件系统,提供对数据的接口访问。
  • Hadoop Yarn:任务调度、集群资源管理框架
  • Hadoop MapReduce:基于Yarn的并行处理大数据的系统。
  • Hadoop Submarine:hadoop机器学习引擎。
  • ... ...

Hadoop-HDFS

存储模型:字节

  • 文件线性切割(Block):偏移量 offset(byte)
  • Block分散存储在集群节点中
  • 单一文件Block大小一致,文件与文件可以不一致
  • Block可以设置副本数,副本无序分散在不同节点中
    • 副本数不要超过节点数,不然将会有replication部分,该服务器挂掉,整个服务将不可用(即,数据越大,完整性越难保障)
  • 文件上传可以设置Block大小和副本数
  • 已上传的文件Block副本数可以调整,大小不变
  • 2.0+ 版本默认文件大小为128M(取值范围1M~128M),副本数 3 bcocks
  • 只支持一次写入多次读取,同一时刻只有一个写入者
  • 可以append追加数据,不能改变单个文件大小(关系到offset——蝴蝶效应)

Hadoop-Block的副本放置策略

  • 第一副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点;
  • 第二个副本:放置在于第一个副本不同的机架的节点上;
  • 第三个副本:于第二个副本相同机架的节点;
  • 更多副本:随机节点

如下图:

Hadoop—架构模型

  • 文件元数据Metadata,文件数据
    • 元数据
    • 数据本身
  • (主)NameNode节点保存文件元数据:单节点 POSIX
  • (从)DataNode节点保存文件Block数据:多节点
  • DataNode与NameNode保持心跳,提交Block列表
  • HdfsClient与NameNode交互元数据信息(描述数据的信息,即属性)
  • HdfsClient与DataNode交互文件Block数据(CS)
  • DataNode利用服务器本地文件系统存储数据块

CS交互过程:

  1. Client在NameNode获取元数据信息(Block列表);
  2. 数据本身存储位置返回给Client;
  3. Client到DataNode节点获取数据。

Hadoop 3.0开篇介绍

Hadoop3 新特性

  • Classpath isolation:防止不同版本jar包冲突;
  • Shell重写
  • 支持HDFS中的擦除编码 Eraser Encoding
    • 支持的EC策略可以节省50%的存储空间,同时还可以承受更多的存储故障
  • DataNode内部添加了负载均衡 Disk Balancer
    • 磁盘之间的负载均衡
  • MapReduce任务级本地优化
  • MapReduce内存参数自动推断
    • mapreduce.{map,reduce}.memory.mb(旧) ==》mapreduce.{map,reduce}.java.opts(新)
  • 基于cgroup的内存隔离和IO Disk隔离
  • 支持更改分配容器的资源Container resizing

伪分布式安装(Pseudo-Distributed Operation)

  • 下载 hadoop 安装包,解压,修改配置;
  • 环境变量配置
    • 配置java环境变量 etc/hadoop/hadoop-env.sh : export JAVA_HOME=/usr/bin/java
    • 配置角色用户: export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDDATANODE_USER=root
  • 参数配置 参考 : core-default.xml hdfs-default.xml hdfs-rbf-default.xml mapred-default.xml yarn-default.xml Deprecated Properties
    • core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hostname:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> </configuration>
    • hdfs-site.xml: <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hostname:9868</value> </property> </configuration>
    • workers: hostname
  • 启动:
    • 格式化文件系统: $ bin/hdfs namenode -format # 初始化文件信息及元数据信息,只需首次执行
    • 后台启动NameNode和DataNode: $ sbin/start-dfs.sh
    • web访问地址(NameNode):http://localhost:9870/
    • 创建执行MapReduce任务需要的HDFS目录: $ bin/hdfs dfs -mkdir /user $ bin/hdfs dfs -mkdir /user/<username>
    • 将要输入的文件拷贝到分布式文件系统: $ bin/hdfs dfs -mkdir input $ bin/hdfs dfs -put etc/hadoop/*.xml input
    • 运行一些示例任务: $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
    • 检查输出文件: $ bin/hdfs dfs -get output output $ cat output/* 或者在分布式文件系统查看输出文件 $ bin/hdfs dfs -cat output/*
  • 停止服务: $ sbin/stop-dfs.sh 关于hdfs相关命令,使用 --help 查看。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • Hadoop能做什么?
      • Hadoop基础组件
        • Hadoop-HDFS
        • Hadoop-Block的副本放置策略
        • Hadoop—架构模型
        • Hadoop 3.0开篇介绍
          • Hadoop3 新特性
            • 伪分布式安装(Pseudo-Distributed Operation)
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档