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 支持的其他命令行参数如下:
- [-appendToFile <localsrc> ... <dst>]
- [-cat [-ignoreCrc] <src> ...]
- [-checksum <src> ...]
- [-chgrp [-R] GROUP PATH...]
- [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
- [-chown [-R] [OWNER][:[GROUP]] PATH...]
- [-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
- [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
- [-count [-q] <path> ...]
- [-cp [-f] [-p] <src> ... <dst>]
- [-createSnapshot <snapshotDir> [<snapshotName>]]
- [-deleteSnapshot <snapshotDir> <snapshotName>]
- [-df [-h] [<path> ...]]
- [-du [-s] [-h] <path> ...]
- [-expunge]
- [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
- [-getfacl [-R] <path>]
- [-getmerge [-nl] <src> <localdst>]
- [-help [cmd ...]]
- [-ls [-d] [-h] [-R] [<path> ...]]
- [-mkdir [-p] <path> ...]
- [-moveFromLocal <localsrc> ... <dst>]
- [-moveToLocal <src> <localdst>]
- [-mv <src> ... <dst>]
- [-put [-f] [-p] <localsrc> ... <dst>]
- [-renameSnapshot <snapshotDir> <oldName> <newName>]
- [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
- [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
- [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
- [-setrep [-R] [-w] <rep> <path> ...]
- [-stat [format] <path> ...]
- [-tail [-f] <file>]
- [-test -[defsz] <path>]
- [-text [-ignoreCrc] <src> ...]
- [-touchz <path> ...]
- [-usage [cmd ...]]
复制代码 常用命令参数先容:
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 的状态。
- Namenode 感知到 Datanode 掉线死亡的时长计算:
- HDFS 默认的超时时间为 10 分钟+30 秒。
- 计算公式为:
- timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval,
- 默认的 heartbeat.recheck.interval 大小为 5 分钟,dfs.heartbeat.interval 默认的大小为 3 秒。
- 需要注意的是 hdfs-site.xml 配置文件中的heartbeat.recheck-interval的单位为毫秒,
- dfs.heartbeat.interval 的单位为秒
- 所以,举个例子,如果heartbeat.recheck-interval 设置为 5000(毫秒), dfs.heartbeat.interval
- 设置为 3(秒,默认),则总的超时时间为 40 秒
- <property>
- <name>heartbeat.recheck-interval</name>
- <value>5000</value>
- </property>
- <property>
- <name>dfs.heartbeat.interval</name>
- <value>3</value>
- </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、 或者可以手动强行退出安全模式(但是并没有真正办理问题)
- namenode 的内存元数据中,包含文件路径、副本数、 blockid,及每一个 block 所在
- datanode 的信息,而 fsimage 中,不包含 block 所在的 datanode 信息,那么,当 namenode
- 冷启动时,此时内存中的元数据只能从 fsimage 中加载而来,从而就没有 block 所在的
- datanode 信息——>就会导致 namenode 认为所有的 block 都已经丢失——>进入安全模式—
- —>datanode 启动后,会定期向 namenode 汇报自身所持有的 blockid 信息, ——>随着
- datanode 陆续启动,从而陆续汇报 block 信息, namenode 就会将内存元数据中的 block 所
- 在 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 上的数据分布的工具
- sbin/start-balancer.sh
- sbin/start-balancer.sh -threshold 5
- sbin/start-balancer.sh -t 10%
- 机器容量最高的那个值 和 最低的那个值得差距 不能超过 10%
复制代码
- 自动举行均衡非常慢, 一天能移动的数据量在 10G-10T 的级别,很难满足超大集群的需求 原因: HDFS 集群默认不允许 balance 操纵占用很大的网络带宽,这个带宽是可以调解的
- hdfs dfsadmin -setBalanacerBandwidth 10485760
- 该数值的单位是字节,上面的配置是10M/s,默认是1M/s。
复制代码
- <property>
- <name>dfs.balance.bandwidthPerSec</name>
- <value>10485760</value>
- <description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description>
- </property>
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |