HDFS

Scheme覆盖式的ViewFileSystem设计实现

半世苍凉 提交于 2020-08-10 06:28:10
文章目录 前言 Scheme覆盖式的ViewFileSystem ViewFileSystemOverloadScheme的实现 引用 前言 在多HDFS集群模式中,我们为了使得多集群对于client端的透明使用,一般可以采用的是ViewFs的方案。当然后来社区实现的HDFS RBF功能无疑是更佳的选择,但是在RBF出现,ViewFs实现的更早且方案更为简单,因此ViewFs是通过在client端实现的一个请求解析以及转发。但是本文我们来讨论一个ViewFs使用的痛点问题:ViewFs高成本的配置更新问题以及更为tricky的hdfs路径写死 metadata和应用程序里的问题。前者我们可以通过中心化统一viewfs配置的方式解决,而本文我们来主题聊聊后面这个难题。这里提到的写死hdfs路径在应用服务中的情况,它实质所要表达的意思是:如何在不改变现有程序中的路径的情况下,server端还是能够自动帮我重定向到新的target路径上去。本文笔者来聊聊目前社区对此的功能实现。 Scheme覆盖式的ViewFileSystem 我们再来用一个简单的例子来阐述下上面提到的例子。 我们现有以下写死的配置,路径指向关系如下: hdfs://clusterA/a —> hdfs://clusterA/a hdfs://clusterB/b —> hdfs://clusterB/b

大数据

和自甴很熟 提交于 2020-08-10 05:41:01
Yarn 主要内容 Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的 操作系统平台 ,而 MapReduce 等运算程序则相当于运行于 操作系统之上的应用程序 。 ① Yarn的基本结构 Resource Manager : 整个节点的老大 Node Manager : 单个节点的老大 Application Master : 节点上单个job的老大 Container: 一个容器,job运行需要的资源都封装在容器中 ② Yarn工作机制 / job提交过程 具体流程: 1 将MR程序提交到客户端所在的节点,客户端向RM申请一个application; 2 RM将应用程序的资源路径返还给客户端; 3 客户端将程序运行所需资源提交到HDFS上; 4 客户端将 程序资源提交完毕后,向RM申请运行 mrAppMaster ; 5 RM 将用户的请求初始化成一个 Task 任务,并将任务放到任务队列中; 6 其中一个NodeManager去任务队列领取Task任务; 7 领取完任务后,该 NodeManager 创建容器 Container ,并产生 MRAppmaster ; 8 Container 从 HDFS 上拷贝资源到本地; 9 MRAppmaster 向 RM 申请运行 MapTask 容器; 10 RM将运行MapTask任务并分配给另外两

大数据

你说的曾经没有我的故事 提交于 2020-08-10 05:40:04
MapReduce 主要内容 ① MapReduce概述 1.1 MapReduce定义 1.2 优缺点 优点: 缺点: 1.3 MR核心编程思想 MR进程: ② MR框架原理 2.1 MapReduce工作流程 Map Task工作机制: 具体过程: Read阶段 :从文本中一行一行的读取数据,并返回一个个的k,v数据,并将数据交给map函数处理; Map阶段 :用map函数处理读取到的k,v数据,并得到新的k,v数据; Collect收集阶段 :将map函数处理的结果存储到环形内存缓存区中; Spill溢写阶段 :当环形缓存区达到阈值时,就会将数据溢写到磁盘上。溢写前要对数据进行排序、合并等操作;(溢写阶段详情见文档) Combine合并阶段 :当所有数据处理完以后,对磁盘上的所有数据进行一次归并排序,合并成一个文件;(详情见文档) Reduce Task工作机制: 具体流程: Copy阶段 :当Map Task任务结束以后,Reduce Task从各个Map Task上去拷贝数据,放到内存或者磁盘中; Merge阶段 :对内存和磁盘上拷贝过来的数据进行合并,防止内存和磁盘被占用过多; Sort 阶段: 和Merge阶段一起工作,在合并的同时使用归并排序进行排序; Reduce 阶段 : reduce() 函数将计算结果写到 HDFS 上。 MR整体流程图: 2.2

HDFS+ClickHouse+Spark:从0到1实现一款轻量级大数据分析系统

拈花ヽ惹草 提交于 2020-08-10 04:25:02
在产品精细化运营时代,经常会遇到产品增长问题:比如指标涨跌原因分析、版本迭代效果分析、运营活动效果分析等。这一类分析问题高频且具有较高时效性要求,然而在人力资源紧张情况,传统的数据分析模式难以满足。本文尝试从0到1实现一款轻量级大数据分析系统——MVP,以解决上述痛点问题。 文章作者:数据熊,腾讯云大数据分析工程师。 一、背景及问题 在产品矩阵业务中,通过仪表盘可以快速发现增长中遇到的问题。然而,如何快速洞悉问题背后的原因,是一个高频且复杂的数据分析诉求。 如果数据分析师通过人工计算分析,往往会占用0.5-1天时间才能找到原因。因此,人工计算分析方式,占用人力大,且数据分析效率低。 另外,产品版本迭代与业务运营活动,也需要对新版本、新功能、新活动进行快速数据分析,已验证效果。 因此,在产品矩阵业务精细化运营中,存在大量的数据分析诉求,且需要快速完成。 在传统的数据分析模式下,对于每个需求,一般需要经历3-5天才能解决问题。除此之外,该模式还需要大量数据分析师对接需求。因此,在数据分析师人力紧缺情况下,该模式无法满足产品增长的数据分析诉求。 二、解决办法 在传统数据分析模式失效情况下,急需开拓新的数据分析模式,以快速满足产品增长的数据分析诉求。 为此,笔者和项目小团队从0到1实现一款轻量级大数据分析系统——MVP,希望通过MVP数据分析,驱动产品从"Minimum Viable

Spring Boot集成HBase

为君一笑 提交于 2020-08-10 03:13:34
Spring Boot版本v1.5.19.RELEASE 1、增加Jar <dependency> <groupId>com.spring4all</groupId> <artifactId>spring-boot-starter-hbase</artifactId> <version>1.0.0.RELEASE</version> </dependency>    2、创建表 创建命名空间pb create_namespace 'pb'    在pb命名空间下创建用户表 create 'pb:user', {NAME => 'b', VERSIONS => '3', TTL => '2147483647', 'BLOOMFILTER' => 'ROW'}, {NAME => 'o', VERSIONS => '3', TTL => '2147483647', 'BLOOMFILTER' => 'ROW'}  user表下有b和o列族 3、配置参数。 主要是hbase的配置。程序的部署环境和hbase的部署环境是同一台linux服务器。 spring: application: name: hbaseDemo kafka: bootstrap-servers: localhost:9092 consumer: group-id: mygroup listener:

Sqoop--源数据含有默认换行符导致的数据不正确

那年仲夏 提交于 2020-08-10 01:47:15
问题描述 使用sqoop导数导到hdfs中,使用Hive查询发现数据多了,并且有数据错位的现象。 原因 源数据中有’\n’换行符,导致被hive识别为换行符。所以出现了记录多并且数据错位的现象。 解决方法 使用sqoop命令时加入: –hive-drop-import-delims 例如: sqoop import \ --connect ${CONNECT} \ --username ${USER} \ --password " ${PASSWD} " \ --query " select ${impala_fields} from ${MYSQL_TABLE} where \ $CONDITIONS " \ --where '1=1' \ --fields-terminated-by '\001' \ --hive-drop-import-delims \ --target-dir ${HDFS_DIR} / ${HIVE_DB} .db/ ${HIVE_TABLE} /part_key = ${HOST} \ --delete-target-dir \ --outdir ${PROGRAM_HOME} /java \ --null-string '\\N' \ --null-non-string "\0" \ -m ${NUMMAPPERS} 来源: oschina 链接:

HBase的优化

不想你离开。 提交于 2020-08-09 20:33:23
一、HBase的优化 1,高可用   在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。 1 .关闭 HBase 集群(如果没有开启则跳过此步)   [xcc@linux01 hbase]$ bin /stop- hbase.sh 2 .在 conf 目录下创建 backup- masters 文件   [xcc@linux01 hbase]$ touch conf /backup- masters 3 .在 backup- masters 文件中配置高可用 HMaster 节点   [xcc@linux01 hbase]$ echo linux02 > conf/backup- masters 4 .将整个 conf 目录 scp 到其他节点   [xcc@linux01 hbase]$ scp -r conf/ linux02:/opt/module/hbase/   [xcc@linux01 hbase]$ scp -r conf/ linux03:/opt/module/hbase/ 5 .打开页面测试查看   http: //

HDFS Rolling Upgrade的实现要点分析

本秂侑毒 提交于 2020-08-09 16:54:39
文章目录 前言 HDFS NameNode端针对Rolling Upgrade的调整 HDFS DataNode端针对Rolling Upgrade的调整 引用 前言 我们知道HDFS Rolling Upgrade功能在几年前比较早的时间早已实现,但是我们往往只注意怎么去做HDFS Rolling Upgrade这个事情本身,但是对于HDFS如何实现Rolling Upgrade这个功能可能了解的会比较少。本文笔者来聊聊其中部分要点的设计实现,为了做到Rolling Upgrade的快速和安全性,社区在这块实现上还是花了一些功夫的。本文主要基于HDFS Rolling Upgrade社区JIRA HDFS-5535:Umbrella jira for improved HDFS rolling upgrades 来展开内容进行阐述。 HDFS NameNode端针对Rolling Upgrade的调整 HDFS针对Rolling Upgrade的实现,在NameNode和DataNode两边都进行了相关的调整实现。首先我们来看NameNode做了哪些模块的调整。 第一个,NameNode在pre-upgrade, upgrade in-progress, finalized, downgrade/rollback这些期间 元数据文件的一个状态处理

关于HIVE增量同步的思考

不羁的心 提交于 2020-08-09 12:56:44
方案一、如果业务库没有删除操作,并且更新时间完整,使用更新时间做增量同步,sqoop只同步更新时间变化的数据,合并到ODS层表 方案二、如果业务库有删除操作,可以先解析数据库操作日志,存到hdfs,T+1同步数据后,对增删改做一次merge操作即可,可能需要代码实现。 来源: oschina 链接: https://my.oschina.net/u/4301845/blog/4332170

【赵强老师】在Hive中使用Load语句加载数据

元气小坏坏 提交于 2020-08-09 12:25:13
一、Hive中load语句的语法说明 Hive Load语句不会在加载数据的时候做任何转换工作,而是纯粹的把数据文件复制/移动到Hive表对应的地址。语法格式如下: LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename \ [PARTITION (partcol1=val1, partcol2=val2 ...)] LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename \ [PARTITION (partcol1=val1, partcol2=val2 ...)] \ [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later) 几点说明: 如果命令中带有LOCAL,说明从本地文件系统加载数据,文件路径可以是相对路径,也可以是绝对路径。在这种情况下,首先将文件从本地复制到hdfs相应的位置,然后移动到hive表格中,这个时候原始数据文件是存在于Hive表之下的路径下。 如果不包含LOCAL关键字,则移动HDFS文件到目标表中。 filepath 可以是一个相对路径,也可以是一个绝对路径。可以是一个文件,也可以是一个文件夹目录。如果是一个目录