数据分析

您所在的位置:网站首页 hadoop怎么查看hdfs 数据分析

数据分析

2023-04-14 04:36| 来源: 网络整理| 查看: 265

1.数据分析价值和技术图谱1.1 数据分析介绍

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

1.2 数据分析的流程1、明确分析目的和思路/提出假设2、数据收集

数据库业务数据 + 日志数据 + 公开出版物 + 互联网 + 市场调查

3、数据处理/整理

数据处理是指对收集到的大量数据进行加工、整理,把它变成适合数据分析的样式。

数据处理主要包括:数据清洗、数据转化、数据提取、数据计算等处理方法。

4、数据分析/验证假设

Python的Numpy/Pandas,SPSS/SAS,RDBMS/MySQL/Hive

5、数据展现/可视化图表

柱状图,折线图,散点图,饼图,条形图,雷达图,地图,热力图,气泡图,面积图...

6、报告撰写

三个要求:好的分析框架 + 明确的结论 + 建议/解决方案

1.3 数据分析技术图谱

2. Hadoop2.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 和 RPCHDFS(Hadoop Distributed File System 分布式文件系统)YARN(Yet Another Resources Negotiator 运算资源调度系统)MapReduce(Map 和 Reduce 分布式运算编程框架)3. HDFS3.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 ... ] [-cat [-ignoreCrc] ...] [-checksum ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] ... ] [-copyToLocal [-p] [-ignoreCrc] [-crc] ... ] [-count [-q] ...] [-cp [-f] [-p] ... ] [-createSnapshot []] [-deleteSnapshot ] [-df [-h] [ ...]] [-du [-s] [-h] ...] [-expunge] [-get [-p] [-ignoreCrc] [-crc] ... ] [-getfacl [-R] ] [-getmerge [-nl] ] [-help [cmd ...]] [-ls [-d] [-h] [-R] [ ...]] [-mkdir [-p] ...] [-moveFromLocal ... ] [-moveToLocal ] [-mv ... ] [-put [-f] [-p] ... ] [-renameSnapshot ] [-rm [-f] [-r|-R] [-skipTrash] ...] [-rmdir [--ignore-fail-on-non-empty] ...] [-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set ]] [-setrep [-R] [-w] ...] [-stat [format] ...] [-tail [-f] ] [-test -[defsz] ] [-text [-ignoreCrc] ...] [-touchz ...] [-usage [cmd ...]]

常用命令参数介绍:

-help 功能:输出这个命令参数手册 [hadoop@hadoop02 ~]$ hadoop -help [hadoop@hadoop02 ~]$ hadoop fs -help [hadoop@hadoop02 ~]$ hadoop fs -help ls -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop02:9000/ 备注:这些参数中,所有的 hdfs 路径都可以简写成 hadoop fs -ls / 等同上条命令的效果 -mkdir 功能:在 hdfs 上创建目录 示例: hadoop fs -mkdir -p /aa/bb/cc/dd -put 功能:等同于 copyFromLocal,进行文件上传 示例: hadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2 -get 功能:等同于 copyToLocal,就是从 hdfs 下载文件到本地 示例: hadoop fs -get /aaa/jdk.tar.gz -getmerge 功能:合并下载多个文件 示例: 比 getmerge 如 hdfs 的目录 /aaa/下有多个文件:log.1, log.2,log.3,... hadoop fs -getmerge /aaa/log.* ./log.sum -cp 功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径 示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2 -mv 功能:在 hdfs 目录中移动文件 示例: hadoop fs -mv /aaa/jdk.tar.gz / -rm 功能:删除文件或文件夹 示例: hadoop fs -rm -r /aaa/bbb/ -rmdir 功能:删除空目录 示例: hadoop fs -rmdir /aaa/bbb/ccc -moveFromLocal 功能:从本地剪切到 hdfs 示例: hadoop fs - moveFromLocal /home/hadoop/a.txt /aa/bb/cc/dd -moveToLocal 功能:从 hdfs 剪切到本地 示例: hadoop fs - moveToLocal /aa/bb/cc/dd /home/hadoop/a.txt -copyFromLocal 功能:从本地文件系统中拷贝文件到 hdfs 文件系统去 示例: hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/ -copyToLocal 功能:从 hdfs 拷贝到本地 示例: hadoop fs -copyToLocal /aaa/jdk.tar.gz -appendToFile 功能:追加一个文件到已经存在的文件末尾 示例: hadoop fs -appendToFile ./hello.txt hdfs://hadoop-server01:9000/hello.txt 可以简写为: hadoop fs -appendToFile ./hello.txt /hello.txt -cat 功能:显示文件内容 hadoop fs -cat /hello.txt -tail 功能:显示一个文件的末尾 示例: hadoop fs -tail /weblog/access_log.1 -text 功能:以字符形式打印一个文件的内容 示例: hadoop fs -text /weblog/access_log.1 -chgrp -chmod -chown 功能: linux 文件系统中的用法一样,对文件所属权限 示例: hadoop fs -chmod 666 /hello.txt hadoop fs -chown someuser:somegrp /hello.txt -df 功能:统计文件系统的可用空间信息 示例: hadoop fs -df -h / -du 功能:统计文件夹的大小信息 示例: hadoop fs -du -s -h /aaa/* -count 功能:统计一个指定目录下的文件节点数量 示例: hadoop fs -count /aaa/ -setrep 功能:设置 hdfs 中文件的副本数量 示例: hadoop fs -setrep 3 /aaa/jdk.tar.gz 补充:查看 dfs 集群工作状态的命令 hdfs dfsadmin -report4.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 秒 heartbeat.recheck-interval 5000 dfs.heartbeat.interval 3 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 副本存放策略作用 数据分块存储和副本的存放,是保证可靠性和高性能的关键方法 将每个文件的数据进行分块存储, 每一个数据块又保存有多个副本, 这些数据块副本分 布在不同的机器节点上存放说明 在多数情况下, 默认副本的存放策略如下:第一个 副本放在和 所在的 里(如果 不在集群范围内,则这第一个 是随机选取的,系统会尝试不选择哪些太满或者太忙的 )。第二个副本放置在与第一个节点不同的机架中的 中(近乎随机选择,系统会尝试不选 择哪些太满或者太忙的 )。第三个副本和第二个在同一个机架,随机放在不同的 中。

修改副本数修改集群文件 dfs.replication 1 命令设置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。hdfs-site.xml 配置文件中进行设置 dfs.balance.bandwidthPerSec 10485760 Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3