数据分析工具--hadoop(hdfs)

鼠扑  金牌会员 | 2025-1-15 10:11:24 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 927|帖子 927|积分 2781

1.数据分析价值和技能图谱

1.1 数据分析先容

数据分析是指运用适当的统计分析方法或者工具对收集来的大量数据举行整理和归纳**,将它们加以汇总和明白并消化,提取有价值信息,从中发现因果关系、内部接洽和业务规律,以求最大化地开发数据的功能,形成有效结论的过程,发挥数据的**作用
1.2 数据分析的流程

1、明白分析目的和思绪/提出假设
2、数据收集
数据库业务数据 + 日志数据 + 公开出版物 + 互联网 + 市场观察
3、数据处理/整理
数据处理是指对收集到的大量数据举行加工、整理,把它变成得当数据分析的样式。
数据处理重要包罗:数据清洗、数据转化、数据提取、数据计算等处理方法。
4、数据分析/验证假设
Python的Numpy/Pandas,SPSS/SAS,RDBMS/MySQL/Hive
5、数据显现/可视化图表
柱状图,折线图,散点图,饼图,条形图,雷达图,舆图,热力图,气泡图,面积图...
6、报告撰写
三个要求:好的分析框架 + 明白的结论 + 发起/办理方案
1.3 数据分析技能图谱



2. Hadoop

2.1 hadoop先容
   Hadoop 是 Apache 旗下的一套开源软件平台 Hadoop 提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据举行分 布式处理
  2.2 hadoop产生背景
   Hadoop 最早劈头于 Nutch。 Nutch 的计划目标是构建一个大型的全网搜索引擎,包罗网 页抓取、索引、查询等功能,但随着抓取网页数目的增加, 遇到了严重的可扩展性问题 ——如何办理数十亿网页的存储和索引问题 2003 年、 2004 年谷歌发表的两篇论文为该问题提供了可行的办理方案 1、 分布式文件体系 GFS,可用于处理海量网页的存储 2、 分布式计算框架 MapReduce,可用于处理海量网页的索引计算问题 3、 分布式数据库 BigTable, 每一张表可以存储上 billions 行和 millions 列 Nutch 的开发人员完成了相应的开源实现 HDFS 和 MapReduce,并从 Nutch 中剥离成为 独立项目 Hadoop,到 2008 年 1 月, Hadoop 成为 Apache 顶级项目,迎来了它的快速发 展期
  2.2 hadoop构成(2.x)


  • Common(基础功能组件)(工具包, RPC 框架) JNDI 和 RPC
  • HDFS(Hadoop Distributed File System 分布式文件体系)
  • YARN(Yet Another Resources Negotiator 运算资源调度体系)
  • MapReduce(Map 和 Reduce 分布式运算编程框架)
3. HDFS

3.1 hdfs先容
   HDFS: Hadoop Distributed File System Hadoop 分布式文件体系,重要用来办理海量数据的存 储问题
  3.2 hdfs焦点计划头脑
   分而治之:将大文件,大批量文件,分布式的存放于大量服务器上。以便于采取分而治 之的方式对海量数据举行运算分析 1、 大文件被切割成小文件,使用分而治之的头脑让许多服务器对同一个文件举行团结管理 2、 每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失
  3.3 hdfs架构


  • 主节点 Namenode: 集群老大,掌管文件体系目录树,处理客户端读且哀求
  • SecondaryNamenode: 严格说并不是 namenode 备份节点,重要给 namenode 分担压力之用
  • 从节点 Datanode: 存储整个集群全部数据块,处理真正数据读写
3.4 hdfs实现shell操纵
HDFS 支持的其他命令行参数如下:
  1. [-appendToFile <localsrc> ... <dst>]
  2. [-cat [-ignoreCrc] <src> ...]
  3. [-checksum <src> ...]
  4. [-chgrp [-R] GROUP PATH...]
  5. [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
  6. [-chown [-R] [OWNER][:[GROUP]] PATH...]
  7. [-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
  8. [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  9. [-count [-q] <path> ...]
  10. [-cp [-f] [-p] <src> ... <dst>]
  11. [-createSnapshot <snapshotDir> [<snapshotName>]]
  12. [-deleteSnapshot <snapshotDir> <snapshotName>]
  13. [-df [-h] [<path> ...]]
  14. [-du [-s] [-h] <path> ...]
  15. [-expunge]
  16. [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  17. [-getfacl [-R] <path>]
  18. [-getmerge [-nl] <src> <localdst>]
  19. [-help [cmd ...]]
  20. [-ls [-d] [-h] [-R] [<path> ...]]
  21. [-mkdir [-p] <path> ...]
  22. [-moveFromLocal <localsrc> ... <dst>]
  23. [-moveToLocal <src> <localdst>]
  24. [-mv <src> ... <dst>]
  25. [-put [-f] [-p] <localsrc> ... <dst>]
  26. [-renameSnapshot <snapshotDir> <oldName> <newName>]
  27. [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
  28. [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
  29. [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
  30. [-setrep [-R] [-w] <rep> <path> ...]
  31. [-stat [format] <path> ...]
  32. [-tail [-f] <file>]
  33. [-test -[defsz] <path>]
  34. [-text [-ignoreCrc] <src> ...]
  35. [-touchz <path> ...]
  36. [-usage [cmd ...]]
复制代码
常用命令参数先容:
  1. -help
  2. 功能:输出这个命令参数手册
  3. [hadoop@hadoop02 ~]$ hadoop -help
  4. [hadoop@hadoop02 ~]$ hadoop fs -help
  5. [hadoop@hadoop02 ~]$ hadoop fs -help ls
  6. -ls
  7. 功能:显示目录信息
  8. 示例: hadoop fs -ls hdfs://hadoop02:9000/
  9. 备注:这些参数中,所有的 hdfs 路径都可以简写成 hadoop fs -ls / 等同上条命令的效果
  10. -mkdir
  11. 功能:在 hdfs 上创建目录
  12. 示例: hadoop fs -mkdir -p /aa/bb/cc/dd
  13. -put
  14. 功能:等同于 copyFromLocal,进行文件上传
  15. 示例: hadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
  16. -get
  17. 功能:等同于 copyToLocal,就是从 hdfs 下载文件到本地
  18. 示例: hadoop fs -get /aaa/jdk.tar.gz
  19. -getmerge
  20. 功能:合并下载多个文件
  21. 示例: 比 getmerge 如 hdfs 的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
  22. hadoop fs -getmerge /aaa/log.* ./log.sum
  23. -cp
  24. 功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径
  25. 示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
  26. -mv
  27. 功能:在 hdfs 目录中移动文件
  28. 示例: hadoop fs -mv /aaa/jdk.tar.gz /
  29. -rm
  30. 功能:删除文件或文件夹
  31. 示例: hadoop fs -rm -r /aaa/bbb/
  32. -rmdir
  33. 功能:删除空目录
  34. 示例: hadoop fs -rmdir /aaa/bbb/ccc
  35. -moveFromLocal
  36. 功能:从本地剪切到 hdfs
  37. 示例: hadoop fs - moveFromLocal /home/hadoop/a.txt /aa/bb/cc/dd
  38. -moveToLocal
  39. 功能:从 hdfs 剪切到本地
  40. 示例: hadoop fs - moveToLocal /aa/bb/cc/dd /home/hadoop/a.txt
  41. -copyFromLocal
  42. 功能:从本地文件系统中拷贝文件到 hdfs 文件系统去
  43. 示例: hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
  44. -copyToLocal
  45. 功能:从 hdfs 拷贝到本地
  46. 示例: hadoop fs -copyToLocal /aaa/jdk.tar.gz
  47. -appendToFile
  48. 功能:追加一个文件到已经存在的文件末尾
  49. 示例: hadoop fs -appendToFile ./hello.txt hdfs://hadoop-server01:9000/hello.txt
  50. 可以简写为:
  51. hadoop fs -appendToFile ./hello.txt /hello.txt
  52. -cat
  53. 功能:显示文件内容
  54. hadoop fs -cat /hello.txt
  55. -tail
  56. 功能:显示一个文件的末尾
  57. 示例: hadoop fs -tail /weblog/access_log.1
  58. -text
  59. 功能:以字符形式打印一个文件的内容
  60. 示例: hadoop fs -text /weblog/access_log.1
  61. -chgrp
  62. -chmod
  63. -chown
  64. 功能: linux 文件系统中的用法一样,对文件所属权限
  65. 示例:
  66. hadoop fs -chmod 666 /hello.txt
  67. hadoop fs -chown someuser:somegrp /hello.txt
  68. -df
  69. 功能:统计文件系统的可用空间信息
  70. 示例: hadoop fs -df -h /
  71. -du
  72. 功能:统计文件夹的大小信息
  73. 示例: hadoop fs -du -s -h /aaa/*
  74. -count
  75. 功能:统计一个指定目录下的文件节点数量
  76. 示例: hadoop fs -count /aaa/
  77. -setrep
  78. 功能:设置 hdfs 中文件的副本数量
  79. 示例: hadoop fs -setrep 3 /aaa/jdk.tar.gz
  80. 补充:查看 dfs 集群工作状态的命令
  81. hdfs dfsadmin -report
复制代码
4.HDFS焦点计划

4.1 心跳机制
   Hadoop 是 Master/Slave 结构,NameNode是Master, DataNode是Slave。 Master 启动的时间会启动一个 IPC(Inter-Process Comunication,历程间通信) server 服 务,等待 slave 的链接。 Slave 启动时,会主动链接 master 的 ipc server 服务,并且每隔 3 秒链接一次 master,这 个间隔时间是可以调解的,参数为 dfs.heartbeat.interval,这个每隔一段时间去连接一次 的机制,我们形象的称为心跳。 Slave 通过心跳汇报自己的信息给 master, master 也通 过心跳给 slave 下达命令。 NameNode 通过心跳得知 Datanode 的状态。
  1. Namenode 感知到 Datanode 掉线死亡的时长计算:
  2. HDFS 默认的超时时间为 10 分钟+30 秒。
  3. 计算公式为:
  4. timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval,
  5. 默认的 heartbeat.recheck.interval 大小为 5 分钟,dfs.heartbeat.interval 默认的大小为 3 秒。
  6. 需要注意的是 hdfs-site.xml 配置文件中的heartbeat.recheck-interval的单位为毫秒,
  7. dfs.heartbeat.interval 的单位为秒
  8. 所以,举个例子,如果heartbeat.recheck-interval 设置为 5000(毫秒), dfs.heartbeat.interval
  9. 设置为 3(秒,默认),则总的超时时间为 40 秒
  10. <property>
  11. <name>heartbeat.recheck-interval</name>
  12. <value>5000</value>
  13. </property>
  14. <property>
  15. <name>dfs.heartbeat.interval</name>
  16. <value>3</value>
  17. </property>
复制代码
4.2 安全模式
   safemode 是 namenode 的一种状态(active/standby/safemode 安全模式)
  

  • namenode 进入安全模式的原理: namenode 发现集群中的 block 丢失率达到肯定比例时(0.1%), namenode 就会进入安全模式,在安全模式下,客户端不能对任何数据举行操纵,只能查看元数据信息如 ls/mkdir) 这个丢失率是可以手动配置的,默认是 dfs.namenode.safemode.threshold-pct=0.999f
  • 如何退出安全模式? 1、 找到问题所在,举行修复(比如修复宕机的 datanode) 2、 或者可以手动强行退出安全模式(但是并没有真正办理问题)
  1. namenode 的内存元数据中,包含文件路径、副本数、 blockid,及每一个 block 所在
  2. datanode 的信息,而 fsimage 中,不包含 block 所在的 datanode 信息,那么,当 namenode
  3. 冷启动时,此时内存中的元数据只能从 fsimage 中加载而来,从而就没有 block 所在的
  4. datanode 信息——>就会导致 namenode 认为所有的 block 都已经丢失——>进入安全模式—
  5. —>datanode 启动后,会定期向 namenode 汇报自身所持有的 blockid 信息, ——>随着
  6. datanode 陆续启动,从而陆续汇报 block 信息, namenode 就会将内存元数据中的 block 所
  7. 在 datanode 信息补全更新——>找到了所有 block 的位置,从而自动退出安全模式
复制代码


  • 安全模式常用操纵命令:
hdfs dfsadmin -safemode leave //强制 NameNode 退出安全模式 hdfs dfsadmin -safemode enter //进入安全模式 hdfs dfsadmin -safemode get //查看安全模式状态 hdfs dfsadmin -safemode wait //等待,不停到安全模式结束
4.3 副本存放计谋



  • 作用 数据分块存储和副本的存放,是保证可靠性和高性能的关键
  • 方法 将每个文件的数据举行分块存储, 每一个数据块又保存有多个副本, 这些数据块副本分 布在不同的机器节点上
  • 存放说明 在多数情况下, 默认副本的存放计谋如下:
  • 第一个 副本放在和 所在的 里(如果 不在集群范围内,则这第一个 是随机选取的,体系会尝试不选择哪些太满或者太忙的 )。
  • 第二个副本放置在与第一个节点不同的机架中的 中(近乎随机选择,体系会尝试不选 择哪些太满或者太忙的 )。
  • 第三个副本和第二个在同一个机架,随机放在不同的 中。
  • 修改副本数
  • 修改集群文件
<property> <name>dfs.replication</name> <value>1</value> </property>


  • 命令设置 bin/hadoop fs -setrep -R 1 /
4.4 负载均衡

   机器与机器之间磁盘利用率不平衡是 HDFS 集群非常轻易出现的情况 尤其是在 DataNode 节点出现故障或在现有的集群上增加新的 DataNode 的时间分析数据块 分布和重新均衡 DataNode 上的数据分布的工具
  

  • 命令
  1. sbin/start-balancer.sh
  2. sbin/start-balancer.sh -threshold 5
  3. sbin/start-balancer.sh -t 10%
  4. 机器容量最高的那个值 和 最低的那个值得差距 不能超过 10%
复制代码


  • 自动举行均衡非常慢, 一天能移动的数据量在 10G-10T 的级别,很难满足超大集群的需求 原因: HDFS 集群默认不允许 balance 操纵占用很大的网络带宽,这个带宽是可以调解的
  1. hdfs dfsadmin -setBalanacerBandwidth 10485760
  2. 该数值的单位是字节,上面的配置是10M/s,默认是1M/s。
复制代码


  • hdfs-site.xml 配置文件中举行设置
  1. <property>
  2.     <name>dfs.balance.bandwidthPerSec</name>
  3.     <value>10485760</value>
  4.     <description> Specifies the maximum bandwidth that each datanode can utilize for  the balancing purpose in term of the number of bytes per second. </description>
  5. </property>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表