关于大数据:智能大数据看这本白皮书就够了

数据资产是数字经济倒退的要害生产因素,随着人工智能等新一代信息技术的倒退,数据迎来爆发式增长。在国家大数据策略引领下,进步数据安全爱护程度,保证数据依法正当无效利用,实现大数据标准、高质量倒退,真正施展对经济社会的促进作用,成为各行业与畛域数据利用的翻新方向。 近日,百度智能云公布的《“云智一体”技术与利用解析系列白皮书——智能大数据篇》,零碎解读大数据倒退新形势下,企业该如何使用云智技术打造安全可靠的数据基础设施与智能开掘平台、施展数字资产的外围价值。 白皮书深入分析了数字经济从数字化转型到智能化降级过程中遇到的问题,就智能大数据的将来趋势、平台构建准则、数据价值如何开掘、行业案例等开展了深入探讨,并详述了云智一体的百度智能云大数据产品架构全景图,为企业数字化转型和智能化降级提供了新的借鉴。 数据因素,数字经济时代的新策略资源寰球正进入数字经济时代。数字经济是以数字化的常识和信息作为要害生产因素,以数字技术为外围驱动力量,以古代信息网络为重要载体,通过数字技术与实体经济深度交融,一直进步经济社会的数字化、网络化、智能化程度,减速重构经济倒退与治理模式的新型经济状态。 在数字经济中,数据因素是数字经济时代的新策略资源。2020年,国务院公布了对于因素市场化配置的领导意见,明确把“数据”与土地、劳动力、资本、技术并列为五大生产因素。 白皮书中提到,数据因素作为经济增长的重要引擎,除了本身能够发明价值,此外能够放大其余生产因素的价值。一方面,数据因素间接驱动了很多经济新模式、经济新形态、新产业,带来经济的高速增长。另一方面,数据因素和资本、土地、劳动力、技术等其余生产因素协同,施展乘数作用,解决供需优化、翻新价值链流转形式等问题,放大其余因素价值。 事实上,大数据曾经驱动批发、城市治理、金融、制造业、教育、医疗等很多行业,进行了数字化转型或业务翻新的尝试与实际。数字经济在社会生产的占比越来越高。 比方,在批发行业,开店选址对最终业务胜利十分要害,联合大数据技术和指标客群定位,实现精准智能选址,从源头升高经营的不确定性和危险;在制造业,以前设施交付给用户后,还面临着保护售后等经营问题,联合大数据和物联网技术,能够及时理解设施状态,实现预测性保护,大大晋升制造业的服务效率和用户体验;在视频行业,长、短视频等信息载体曾经实现了个性化举荐,这背地也是基于大数据技术,晋升用户体验,发明新的增长空间。 依据中国信通院公布的《中国数字经济倒退白皮书(2021)》显示,2020年我国数字经济规模达到39.2万亿元,占 GDP 比重为38.6%,放弃9.7%的高位增长速度,成为稳固经济增长的要害能源。 在“十四五”布局大纲中,更是将“数字经济外围产业增加值占 GDP 比重”作为翻新驱动的要害指标之一,并预期“数字经济外围产业增加值占 GDP 比重”将从2020年的7.8%回升到2025年的10%。 不难看出,大数据将成为驱动将来数字经济倒退的弱小推动力,推动 GDP 增长的强劲引擎。 云智一体,让大数据施展大价值大数据的重要性毋庸置疑,然而从大数据到大价值,不是欲速不达的,既须要布局满足当下和将来数据及业务倒退变动的数据基础设施,又须要数据治理和利用方法论和实践经验撑持价值落地。 白皮书中提到,随着大数据利用、物联网、人工智能等的一直落地,数字化转型的更加深刻,大数据产业体现出如下几个特点: 4V 个性更凸显,体现为三高一低,数据规模指数增长、数据类型繁冗多样、数据处理要求更实时、数据价值密度低。大数据利用与 AI 深度交融,大数据为 AI 利用提供数据根底,AI 驱动大数据深度价值开掘 。数据安全问题更被宽泛关注,如何即爱护数据安全和隐衷,又可能推动数据价值施展成为重要研究课题。因而,白皮书中提到,构建新型的数据基础设施、进行数据深度开掘和价值施展、保障数据安全,是构建企业大数据平台的要害。企业大数据利用的落地须要重视,功效为先、治理为要、平安为本、继续经营的准则。 基于以上准则,百度智能云推出全新云智一体的智能大数据产品架构全景图,致力为更多企业构建云智一体的大数据技术与能力体系,实现对更大规模、更多类型、更多源数据进行解决和利用,全面助推企业数字化转型和智能化降级。 百度智能云大数据产品架构全景图共三层:底层,通过湖仓数据基础设施为企业提供高性价比的海量规模数据存储、计算解决、加工开发能力,并且通过一站式治理开发平台进步数据全生命周期解决效率; 中层,数据价值开掘平台层从数据资产化治理经营、可视化 BI、 数据迷信价值深度开掘提供全方位的平台化能力助力企业数据价值开掘; 顶层,基于行业数据特点和利用场景需要,联合大数据能力,协同生态,造成各行各业细分场景解决方案, 帮忙企业落地大数据利用、驱动降本增效和倒退翻新。 为爱护企业数据资产平安,确保不触犯数据安全隐衷,百度智能云提供全生命周期数据安全防护体系。如大数据平台反对多租户资源隔离、反对数据行列级别细粒度数据权限管控等确保资产平安;反对数据分级分类、隐衷数据自动识别、平安审计等确保不触犯隐衷;此外,提供一系列隐衷计算技术和计划实现『数据可用不可见』、『数据不动算法动』在保障数据安全的状况下实现数据价值开释。 智能大数据,助力千行百业智能化降级在工业、能源、金融、政务等行业,曾经有很多客户基于百度智能云大数据平台和数据治理与利用解决方案构建了本人的企业级大数据平台,实现了数据治理,造成了数据外围资产,建设了数据资产门户,并且切实基于数据利用优化了企业治理经营效率和开辟了翻新思路,笼罩了管理决策、生产、 营销、售后服务等各个环节。 白皮书中以徐工团体工程机械有限公司为例阐明,百度智能云量身打造的企业综合经营管理决策驾驶舱解决方案,解决了徐工三大难题: 数据互联互通,通过大数据平台建设,买通产品线、部门藩篱,研、产、供、销、服一张图,管理者全局实时掌控,精准决策。 售后实现就近服务,通过把开掘及的物联网日志+洽购数据+培修数据买通,联合百度地图数据,让挖掘机售后做到就近服务,按资源配置地图调配服务,就近抉择资源最丰盛、最匹配的培修商,大幅晋升培修效率。此外,通过物联网数据,还可对部件进行预测性保护,提前故障预判,大幅晋升培修及时性和满意度。 精准评估盈亏平衡点,评估不同区域、每月客户足够还贷款所需的最低工作时长,以此做出进一步决策,比方当客户无奈按时还款,能够计算何时锁车拖车,二手挖掘机售价刚好能还贷款。 白皮书中还提到陕西广电融媒体团体,基于百度智能云云智一体的智能大数据平台,陕西广电建设了媒体交融数据资产平台,在数据资产建设的根底上,进一步进行数据分析和价值深度开掘,实现了实时的多渠道用户综合治理、精准化用户经营,以及舆情智能感知。 相似的案例还有很多,如泉州水务团体有限公司的智慧水务案例、沛县城市数据治理我的项目、智慧丽江、百信银行、北京大学、中国石油等。 随着人工智能等新一代信息技术的倒退,以及数据的爆发式增长,产业放慢利用智能技术,从海量数据中发现法则、训练模型、提炼常识,促成产出减少和效率晋升,实现企业生产经营的智能化,进而实现整个产业的智能化降级,已是业界共识。 百度智能云大数据产品架构全景图交融多年技术积攒、行业教训于一体,为企业迈向智能化提供一站式大数据治理计划,在帮忙企业实现数字化转型的同时,助推产业进一步降级。 目前,百度智能云大数据最佳实际已遍布多种行业,作为云智一体的技术引领者,百度智能云将继续对云智技术在各种行业场景的利用教训进行解读与分享,以实际行动践行“用科技让简单的世界更简略”。 白皮书下载链接:http://baipishu.bce.baidu.com...

January 25, 2022 · 1 min · jiezi

关于大数据:如何高效完成ECS多环境部署

简介:通过本文,你能够理解到,如何通过云效流水线无效拉通开发与运维,突破二者之间的壁垒墙,让开发与运维高效联动。在软件开发和部署过程中,咱们的软件往往须要在不同的运行环境中运行,例如:开发人员本地开发环境、测试团队的测试环境、还有类生产环境和生产环境。在整个研发流程的过程中,针对开发和运维,前者面向需要和代码,后者面向资源和环境,而部署,是两者都会关注的局部。 一、背景在软件开发和部署过程中,咱们的软件往往须要在不同的运行环境中运行,例如:开发人员本地开发环境、测试团队的测试环境、还有类生产环境和生产环境。在整个研发流程的过程中,针对开发和运维,前者面向需要和代码,后者面向资源和环境,而部署,是两者都会关注的局部。通过本文,你能够理解到,如何通过云效流水线无效拉通开发与运维,突破二者之间的壁垒墙,让开发与运维高效联动。 二、用户诉求一般来说,用户应用主机部署诉求如下: 1、开发人员不须要关注资源变更,只须要按需抉择环境进行部署即可。 2、开发人员可能依据制订好的公布策略,自主公布,不须要手工配置和干涉。 3、运维人员不需关注研发平台,只需做好资源的布局治理即可。 三、云效解决方案联合云效交付流水线公布策略及ECS的标签性能,为ECS的多环境公布提供了很好的根底保障,如图: 该场景下次要会波及开发人员跟运维人员两个角色,上面文章中咱们次要会这两个角色角度进行解说。 四、云效操作实际前置条件 接下来以一个 Java Spring Boot 的代码库为例,解说如何通过云效流水线进行阿里云 ECS 的多环境公布。 1、运维人员已购买相应阿里云ECS资源,并配置好相应环境,如本文案例中须要的JDK环境。 2、运维人员,依据须要,对相应ECS资源进行标签配置。标签是云资源的标识,能够帮忙您从不同维度对具备雷同特色的云资源进行分类、搜寻和聚合,让资源管理变得更加轻松。本文中ECS资源及标签设置如图所示: 标签键:environment 标签值:dev、sit、product 创立流水线 1、进入云效流水线,点击右上角【新建流水线】,进入流水线创立向导页面。 2、抉择图中标识模板,并点击创立 配置代码库 创立流水线之后会自动弹出增加代码源的窗口,这里抉择Flow提供的示例代码源,并进行增加 配置构建上传工作 批改一下”Java构建上传“的工作,减少一个打包门路,填入deploy.sh。这个文件存在于代码库中,其中蕴含了在ECS上进行利用启动的脚本,为了进行后续的主机部署,须要将这个文件也打入到压缩包中,在后续的主机部署工作中能够看到如何应用该deploy.sh。在该配置中指定了target/和deploy.sh两个门路,所以Flow会将这两个文件(夹)打包成为一个压缩包,并进行归档,在Flow中咱们称之为制品,该制品也会在后续的主机部署工作中用到。 配置部署工作 1、接下来配置主机部署工作,在制品下拉框中抉择”制品名称.default”,也就是后面的”Java构建上传“步骤归档的那个制品。为了配置主机组,须要先创立一个,点击”新建主机组”。 2、抉择”阿里云ECS“,点击”新建服务受权”,跳转到阿里云,实现RAM受权,而后会主动跳回到Flow。 3、此时再抉择标签形式增加,顺次抉择地区、ECS标签键、ECS标签值,点击下一步。 4、在新弹出的页面中输出主机组名称及主机组环境,点击保留即可。 5、接下来进行部署脚本的配置: 下载门路:示意心愿把”构建上传”工作中的压缩包下载到机器上的什么地位,在本例的值为:/home/admin/app/package.tgz执行用户:心愿以是哪个用户的身份进行脚本执行,本例的值为:root部署脚本:在机器上执行脚本的具体内容,本例的值为:mkdir -p/home/admin/application/tar zxvf /home/admin/app/package.tgz -C/home/admin/application/sh /home/admin/application/deploy.sh restart 6、部署策略配置 暂停形式:心愿一个主机组中的机器以什么样的暂停形式进行,比方第一批暂停,每批暂停,或者不暂停。举荐应用第一批暂停,在公布完第一批之后,对线上服务进行察看,如果没有异样,则能够持续其余批的公布分批数量:心愿主机组中的机器分为几批进行公布。比方一共4台机器,分两批,则每批同时公布2台机器。本文中配置如下所示: 7、部署后果查看 点击右上角保留并执行按钮 待执行结束后,点击部署详情按钮查看部署明细。 通过IP:8080拜访验证,如下图所示: 资源变更场景 因业务须要,需在开发环境中减少一台机器,运维同学只需在ECS侧筹备相应资源,打上相应环境标签即可,如下图所示。 运维同学配置结束后,开发同学不需做任何变更,间接运行相应环境流水线即可。流水线运行过程中,因为咱们之前设置的分批,第一批暂停的公布策略,因而流水线会暂停,呈现如下状态 此时点击部署详4. 情按钮,进入部署详情页面,确认没有问题后,点击持续按钮,如下图所示 ...

January 25, 2022 · 1 min · jiezi

关于大数据:译Netflix数据平台自动诊断和自动修复系统

Netflix 目前领有私有云上最简单的数据平台之一,数据科学家和数据开发工程师在该平台上每天运行着大量批处理和流解决工作。随着咱们的付费订阅用户在寰球范畴内的增长以及Netflix 正式进入游戏赛道,批、流解决工作的数量也迅速减少。咱们的数据平台基于诸多分布式系统构建而成,因为分布式系统的固有个性,运行在数据平台上的工作不可避免地隔三差五呈现问题。对这些问题进行定位剖析是件很繁琐的事,波及从多个不同零碎收集日志和相干指标,并对其进行剖析以找出问题的根本原因。在咱们以后规模上,如果人工手动地定位和解决问题,即便是解决一小部分异样工作,也会给数据平台团队带来微小的运维累赘。另外,这种手动定位问题的形式,对平台用户工作效率上造成影响也不可小觑。 以上问题促使咱们尽可能被动地检测和解决生产环境中的失败工作,尽量避免使团队工作效率升高的异样。于是咱们在数据平台中设计、开发了一套名为 Pensive 的主动诊断和修复零碎。指标是对执行失败和执行工夫过长的工作进行故障诊断,并尽可能在无需人工干预的状况下对其进行修复。随着咱们的平台一直倒退,不同的场景和问题(scenarios and issues)都可能会造成工作失败,Pensive 必须被动在平台级别实时检测所有的问题,并诊断对相干工作的影响。 Pensive 由两个独立的零碎组成,别离反对批工作和流工作的主动诊断。本文将简略介绍这两个零碎的性能,以及它们是如何在离线平台(Big Data Platform)和实时计算平台(Real-time infrastructure)中执行主动诊断和修复。 批工作主动诊断系统 - Batch Pensive图1: 批工作主动诊断系统架构图 数据平台中的批处理工作流工作应用Netfix 自研的调度服务 Meson 调度执行,调度服务通过启动容器运行工作流节点,容器则运行在Netflix 自研的容器治理平台 Titus 上。这些工作流节点通过 Genie(相似Apache Livy) 提交执行 Spark 和 TrinoDb 作业。 如果工作流节点失败,调度服务会向 Pensive 发送错误诊断申请。Pensive 从相干数据平台组件中收集该节点执行过程中产生的失败日志,而后提取剖析异样堆栈。Pensive 依赖于基于正则表达式的规定引擎来进行异样诊断,这些规定是在一直的实际中总结演绎进去的。零碎依据规定断定谬误是因为平台问题还是用户Bug造成的、谬误是否是长期抖动造成的(transient)。如果有个一条规定命中谬误,Pensive 会将无关该谬误的信息返回给调度服务。如果谬误是长期抖动造成的,调度服务将应用指数退却策略(exponential backoff)重试执行该节点几次。 Pensive 最外围的局部是对谬误进行分类的规定。随着平台的倒退,这些规定须要一直被欠缺和改良,以确保 Pensive 维持较高的谬误诊断率。最后,这些规定是由平台组件负责人和用户依据他们的教训或遇到的问题而奉献的。咱们当初则采纳了更零碎的办法,将未知谬误输出到机器学习零碎,而后由机器学习工作对这些问题进行聚类,以针对常见谬误演绎出新的正则表达式。咱们将新正则提交给平台组件负责人,而后由相干负责人确认谬误起源的分类以及它是否是长期抖动性的。将来,咱们心愿将这一过程自动化。 检测平台级别的问题Pensive 能够对单个工作流节点的失败进行谬误分类,然而通过应用 Kafka 和 Druid 对 Pensive 检测到的所有谬误进行实时剖析,咱们能够疾速辨认影响所有工作流工作的平台问题。单个失败工作的诊断被存储在 Druid 表中后,咱们的监控和警报系统 Atlas 会对表中的数据每分钟进行一次聚合,并在因平台问题导致工作失败数量突增时发送告警。这大大减少了在检测硬件问题或新上线零碎中的Bug所需的工夫。 流工作主动诊断系统 - Streaming Pensive图2: 批工作主动诊断系统架构图 Netflix 数据平台中的实时计算基于Apache Flink实现。大多数 Flink 工作运行在 Keystone 流工作解决平台上,该平台封装了底层 Flink 工作详细信息,给用户提供了生产 Kafka 音讯和将处理结果写入到不同数据存储系统(如AWS S3 上的ElasticSearch 和 Iceberg)的能力。 ...

January 24, 2022 · 1 min · jiezi

关于大数据:双引擎驱动Quick-BI十亿数据03秒分析首屏展示时间缩短30

简介:在布局中,Quick BI制订了产品竞争力建设的三大方向,包含Quick(快)能力、挪动端能力和集成能力。针对其中的产品“报表查看关上慢”“报表开发数据同步慢”等性问题发展专项战斗——Quick战斗,以实现展示快、计算快,为使用者提供顺滑体验为指标。 “Quick”是产品始终谋求的指标Quick BI数据可视化剖析平台,在2021年二次入选了Gartner ABI魔力象限,这是对产品自身能力强有力的认证。在一直夯实B I的可视化体验和权限管控能力之外,推动Quick BI的全场景数据生产能力,让数据在企业内最大限度的流转起来。 在布局中,Quick BI制订了产品竞争力建设的三大方向,包含Quick(快)能力、挪动端能力和集成能力。针对其中的产品“报表查看关上慢”“报表开发数据同步慢”等性问题发展专项战斗——Quick战斗,以实现展示快、计算快,为使用者提供顺滑体验为指标。 双引擎成就Quick全新体验无论是开发者还是阅览者,若想要在应用Quick BI的过程中取得晦涩疾速的体验,可能在这两个方面进行优化: 在数据报表开发的过程中,大量级数据须要在肯定范畴的工夫内响应,即计算要快; 面对报表的查看者,首屏关上和下拉加载的工夫须要在肯定范畴内实现,即展示要快。 Quick BI推出计算引擎和渲染引擎,以双引擎的形式为产品全力减速。 1、计算引擎(Quick引擎)蕴含原有直连模式,新增减速模式、抽取模式、智能缓存模式,用户依照不同场景的不同需要,通过配置开关进行模式的抉择。在数据集开发和数据作品制作的过程中取得减速体验,能够无效晋升用户报表的数据查问速度,缩小用户的数据库查问压力。 实时减速 基于 MPP 内存计算引擎,查问中实时从数据库(调/读)取数据,并在计算引擎的内存中进行计算,无效晋升用户数据计算的性能,实用于对数据时效有高要求的状况。 抽取模式 把数据库或数仓的数据抽取到Quick引擎的高性能列式存储引擎中,反对全量模式和增量模式,剖析计算负载间接在Quick BI引擎中进行,充分利用Quick引擎性能的同时,升高用户数仓的累赘,实用于没有独立数仓或数仓负载过重的状况。 智能缓存 提供的2种缓存模式都能够间接返回后果,晋升用户查问速度,缩小数据库拜访次数。 数据集缓存 将用户曾经查问过的后果缓存在 Quick BI 高速缓存组件内,一段时间内完全一致的查问能够间接返回查问后果。 智能预计算 算法依据用户的历史查问记录,对数据集的查问进行预聚合,提前计算出用户所需的后果,保留在高性能存储中。一旦用户查问命中,则间接返回后果。 2、渲染引擎负责获得肉眼可见页面的内容,包含图像、图表等,并进行数据信息整顿,以及计算网页的显示方式,而后输入并展示。因为BI场景的报表(仪表板、电子表格、门户等)内容相当简单,渲染引擎的减速能够十分间接的影响Quick BI报表的关上速度,优化用户的报表阅览体验。渲染引擎的减速动作无需进行任何配置,无声地服务整个剖析流程。 渲染引擎进行了如下整体降级: 资源(js/css/ajax等)加载优化:包含预加载、按需加载、任务调度、TreeShaking等前端计算&执行优化:数据流节流、懒数据策略、mutable革新、深克隆等计算优化等可视化降级:底层可视化对立,桑基图等大数据量下解析优化、渲染次数收敛等挪动端降级:包体积优化(压缩前20.6M缩小至5.6M)、图表预加载、资源本地化缓存等查问链路优化:反对 MaxCompute 减速查问、登录层优化、避免配置查问缓存穿透、缓存优化等性能工具降级:SQL诊断反对 MaxCompute 数据源,并反对 SQL 诊断工具的国际化等利用五种机制整体晋升渲染引擎作业成果 任务调度机制 反对在各段加载和执行流程中利用组件或函数管制CPU工夫和网络占用优先级,从而将首屏内容的展现工夫点缩短至多了30%。 截流渲染机制 反对Redux类数据流体系,以配置化形式管制单位工夫组件渲染次数,组件均匀渲染次数缩小90%以上。 按需计算机制 按需加载和执行JS逻辑组件及其资源,利用LazyObject思路(即:应用时初始化执行,而非定义时)进行按需调用,LazyCache思路(即:命中时计算和缓存,而非实时)进行数据流模型计算,节俭约30%的CPU工夫以及40%的网络占用。 预加载机制 通过将本来串行依赖的流程逻辑按不同机会并行(如:当页面拉取JS资源时同时拉取后端数据,在闲暇时预加载下一屏内容),依据历史应用习惯事后加载后续可能拜访的内容,达到刹时查看的成果。 资源本地化缓存机制 将js等资源本地化的模式,加上依据不同设施(挪动端等)的资源管理策略,无效解决零碎内存开释导致的缓存生效,弱网环境导致的资源加载迟缓等问题。 通过一系列外围能力的降级和特定场景的针对性优化,操作均匀FPS(每秒传输帧数)可达55左右,较简单报表下,首屏加载工夫也从最后18秒降至3秒以内(中等简略报表2秒内),联合Quick引擎,还能够反对10亿级数据量的报表3秒内展示。 典型场景下的性能体验全面晋升1、数据开发视角的场景计划(1)报表展现的数据在肯定工夫内固定不变 有些客户对数据须要每天进行一次汇总,并通过 Quick BI 的可视化图表以日报模式展现进去。这些展现的数据在下一次汇总之前都不会发生变化,同时这些汇总数据比拟固定,不须要阅览报表的人被动更改查问条件。 如是场景,举荐开启数据集上的缓存性能。用户能够自行设置缓存的有效期,在有效期内,雷同的查问会命中缓存,间接将该周期内第一次查问的后果毫秒级返回。以上述场景为例,用户能够开启 12 小时的缓存,这样日报只会在第一次关上时进行数据查问,之后一整天的工夫,一旦客户点击关上,报表就会立即展示。 (2)报表数据存在较多变动,对非实时数据进行剖析 以大促为例,商家在流动完结后,对大促期间的销量、营业额以及营销投放成果进行复盘。数据分析蕴含很多维度,比方类目、地区、部门等等。商家的分析师或者决策者在查看报表时,往往会对维度进行调整、变更、钻取,来取得更加深刻的洞察。这个场景下用户数据查问的动作多变,上述的缓存策略往往很难命中。 此时,能够在数据集的 Quick 引擎中开启抽取减速。抽取减速默认全表减速,容许用户同步T-1 的数据到 Quick 引擎高性能存储及剖析模块中,后续的查问和计算会间接在 Quick 引擎中进行,缩小用户数据库的性能压力。抽取减速能够做到亿级数据,亚秒级响应。 ...

January 21, 2022 · 1 min · jiezi

关于大数据:TDengine-研究与浅析

一. 摘要前言 IT科技的迅猛发展,各种类型的黑科技与利用终端不断涌现,产生各种海量数据,大数据处理平台应运而生,但其宏大体量与简单的架构使开发移植与部署变的越来越艰难。现今各国频繁打贸易战,在多种不确定状况下,基础架构极易被人卡脖子,成为技术倒退的拦路虎,那么TDengine作为近几年新呈现的一款优良开源大数据根底平台,具备性能、可伸缩、高牢靠、零治理诸多特点,且核心技术全副自研,不用放心被外国限度,相比于国外同类产品,齐全开源并具备良好的产品生态社区,可能根本代替国外同类产品,且可能在要害指标达到更优。二. 技术剖析 1.对于传统数据库SQL语法的兼容性 Tdengine不仅具备丰盛的利用程序开发接口,反对各种支流语言,能对各种类型的客户端进行开发,过来曾遇到过移植一款开源的Fortran分子动力学应用软件,因开发语言的小众化,无奈找到与之匹配的客户端,只能在认真钻研并梳理分明业务逻辑后,自行开发了一套客户端才保障了整个我的项目需要,两头为保障进度,在参考资料少,Fortran对口开发人员稀缺的状况下,通过加班加点才保障了我的项目没有被延期。2. 设计技巧 通过对TDengine设计场景与原理的钻研,再配合原理钻研其代码,因为其代码是C语言,贴近硬件,效率高(效率更高的也只有汇编了)。在古代各种开源框架与低代码背景下,C语言特点就是要常常独自造轮子,对TDengine源码组织构造从简入繁进行探讨钻研。1).根底数据结构 近些年,越来越多的高级语言采纳成熟的自研或者第三方SDK,很典型的比方Java与python,很少有从头实现的API接口,就算是难度大的C++,曾经有不少高级新个性与各种STL,Boost类库撑持,而Tdengine中各种malloc/free,内存池机制,一级指针,二级指针,回调钩子函数应用技巧,都显示了开发者扎实的根本功底。C++ Boost库中常见的各种智能指针,能升高因指针使用不当造成的异样解体问题, tmempool实现的内存池,防止了内存碎片与内存回收问题,tlist与tskiplist双向链表实现,tarray数组实现办法均很奇妙,都能够作为拿进去独自封装为API2). RPC Epoll 反对分布式集群的重要RPC基于事件模型驱动的网络库,实现其不同节点之间的通信,MQTT类的物联网框架是基于订阅公布的传输模式,RPC采纳C/S架构模式,逻辑清晰明了,Client端发送先发送对应的计算申请给Server端,Server端收到申请先发送应答协定包到Client端,Server端再将计算申请解析后执行并将后果返回Client端。 从实现逻辑来说TDengine RPC的逻辑性要因为MQTT,更适宜物联网场景,代码可读性更高,远优于其它同类框架。 RPC数据交互依赖TCP/UDP通信,而TCP/UDP通信的根底在于socket,对于同时存在多个连贯的状况下,应用了效率最高的epoll,工夫复杂度仅为O(1), 这里比拟奇妙的是,因为没有采纳一主/多从的多过程异步事件驱动模型,而是通过创立工作线程来解决音讯,那么就防止了在事件到来时,多个过程被不必要的唤醒,从而引起”惊群”景象,进步了整体数据流的解决效率。 作者:superxs

January 18, 2022 · 1 min · jiezi

关于大数据:WorkflowAsCode-来了Apache-DolphinScheduler-202-惊喜发布

千呼万唤中,WorkflowAsCode 性能终于在 2.0.2 版本中如约上线,为有动静、批量创立和更新工作流需要的用户带来福音。援用此外,新版本还新增企业微信告警群聊会话音讯推送,简化了元数据初始化流程,并修复了旧版本中强制终止后服务重启失败,增加 Hive 数据源失败等问题。01 新性能1 WorkflowAsCode首先在新性能上,2.0.2 版本重磅公布了 PythonGatewayServer, 这是一个 Workflow-as-code 的服务端,与 apiServer 等服务的启动形式雷同。 启用 PythonGatewayServer 后,所有 Python API 的申请都会发送到 PythonGatewayServer。Workflow-as-code 让用户能够通过 Python API 创立工作流,对于有动静、批量地创立和更新工作流的用户来说是一个好消息。通过 Workflow-as-code 创立的工作流与其余工作流一样,都能够在 web UI 查看。 以下为一个 Workflow-as-code 测试用例: # 定义工作流属性,包含名称、调度周期、开始工夫、应用租户等信息with ProcessDefinition( name="tutorial", schedule="0 0 0 * * ? *", start_time="2021-01-01", tenant="tenant_exists",) as pd: # 定义4个工作,4个都是 shell 工作,shell 工作的必填参数为工作名、命令信息,这里都是 echo 的 shell 命令 task_parent = Shell(name="task_parent", command="echo hello pydolphinscheduler") task_child_one = Shell(name="task_child_one", command="echo 'child one'") task_child_two = Shell(name="task_child_two", command="echo 'child two'") task_union = Shell(name="task_union", command="echo union") # 定义工作间依赖关系 # 这里将 task_child_one,task_child_two 先申明成一个工作组,通过 python 的 list 申明 task_group = [task_child_one, task_child_two] # 应用 set_downstream 办法将工作组 task_group 申明成 task_parent 的上游,如果想要申明上游则应用 set_upstream task_parent.set_downstream(task_group) # 应用位操作符 << 将工作 task_union 申明成 task_group 的上游,同时反对通过位操作符 >> 申明 task_union << task_group下面的代码运行后,能够在 web UI 看到的工作流如下: ...

January 12, 2022 · 2 min · jiezi

关于大数据:网易云信又双叒受到Gartner关注看看这次的报告说了什么

2021年,CPaaS 行业继续受到高度关注。近日,为企业提供主观行业洞察的 Gartner 公司公布了2021年《Competitive landscape: Communications Platform as a Service(竞争格局:CPaaS 通信平台即服务)》与《Market Impact: What’s Next for the New Generation of CPaaS?(市场影响:新一代 CPaaS 的下一步是什么?)》两份报告。 网易云信均被两份报告列入。 《Competitive landscape: Communications Platform as a Service(竞争格局:CPaaS 通信平台即服务)》报告指出:一些 CPaaS 行业厂商曾经将他们的产品扩大到了视频畛域。 网易云信就是这些 CPaaS 厂商中的典型一员。网易云信将视频与音讯通信整合,帮忙企业客户疾速开发和构建具备视频能力的新应用程序。客户能更专一于用户需要和理论场景,并将此能力利用于低延时直播、游戏社区、娱乐社交以及其余对实时性有高要求的场景。 此外,《Market Impact: What’s Next for the New Generation of CPaaS?(市场影响:新一代 CPaaS 的下一步是什么?)》报告则提到,受寰球数字化趋势、新冠肺炎疫情和企业向可组合性转变等因素推动下,CPaaS 供应商继续减少新能力。CPaaS 新能力包含云通信渠道根底的扩大,如丰盛的信息传输能力、全渠道、视频和更深刻的智能能力。 网易云信的智能对话机器人解决方案、AI 在音视频的利用,以及直播产品业务场景等方面都在疾速倒退,并曾经获得了一些亮眼的成绩。 依据该报告,人工智能正被用于客户服务畛域,实现人工客服或机器人与人工客服混合互动的无缝切换。网易云信适时推出了智能对话机器人解决方案,为企业客户提供人机交互 API/SDK、语音辨认、用意辨认、知识库配置、动静接口等性能,可在利用 IM 模块内疾速集成场景丰盛的智能对话机器人。 除此之外,网易云信还将 AI 能力充分发挥在了超高清视频传输、回声打消、AR、VR等多个畛域,其 AI 音视频实验室正在一直进行着音视频技术的前瞻性钻研和布局。 值得阐明的是,网易云信并非首次受到 Gartner 关注,此前也被 Gartner 公布的2021年《Market Guide for Communications Platform as a Service(通信平台即服务市场指南)》报告所提及。(点击此处查看详情) ...

January 12, 2022 · 1 min · jiezi

关于大数据:从阿里核心场景看实时数仓的发展趋势

作者:果贝,阿里云资深技术专家 ,实时数仓Hologres负责人 2022年1月7日,阿里云实时数仓Hologres举办了年度发布会,在发布会上,来自阿里的资深技术专家从阿里的外围场景登程,为大家解读了实时数仓的新发展趋势“在线化、麻利化、一站式”。通过本文,咱们将会深刻解读实时数仓倒退所面临的问题,以及外围发展趋势,以帮忙大家更好的做产品选型和数仓布局。实时数仓是当初大数据畛域十分热门的一个概念(和它同热度的大略就是湖仓一体了)。通过十多年的倒退,大数据曾经成为每家公司的标配。传统上,离线数仓(开源以Hive/Spark为代表,闭源以阿里MaxCompute、Snowflake、AWS Redshift、Google BigQuery等为代表,以及Vertica、Oracle、HANA等传统IT厂商),流式计算(以Flink/Spark Structured Streaming为代表),数据服务层(HBase、MySQL、ES、Redis等)独特组成了大数据处理的规范架构:Lambda架构。Lambda架构提供了实时数据的服务(serving)能力。但Lambda架构的典型问题是开发简单、数据冗余和剖析不灵便。 近几年,以ClickHouse、Apache Doris、阿里Hologres等为代表的实时数仓衰亡,通过实时写入明细数据+灵便交互式查问局部实现了去Lambda架构,在实时性、灵活性、老本、治理和运维等多方面都达到了较好的均衡。 随着2021年双11的完满闭幕,实时数仓技术在阿里双11场景也经验了多年的实际和倒退。从晚期的基于不同作业的烟囱式开发,到基于畛域分层建模的数仓引入,再到剖析服务一体化的新型交融式一站式架构,开发效率逐渐晋升,数据品质更有保障,也积淀了更多技术创新,让咱们看到了一些将来数仓开发、利用的可能性和趋势。 上面咱们来聊聊从阿里双11看到的实时数仓倒退的一些趋势。 实时数仓曾经成为业务标配第一个趋势是实时数仓曾经成为标配。 业务对时效的要求、对灵活性的要求越来越高,从而使得实时数据变为一种刚需。而实时数仓在老本、灵活性上的微小劣势使得业务优先选择实时数仓作为实时数据的生产、存储和应用平台。在阿里巴巴,Hologres服务了约90%的BU,集群规模超过了60万core,并放弃100%的增长速度。在这些业务中,有较常见的实时数仓场景,比方: 数字化经营:这种场景上游对接Flink进行数据流式加工;上游对接BI工具、数据大屏等,实现业务的自助开发和上线。极大晋升了开发效率和灵活性,反对所见即所得的开发体验。网络流量剖析、Metrics剖析:通过对网络流量、及其他Metrics类数据的实时存储和监控,可疾速预警和定位设施潜在故障。在万亿级记录上查问秒级响应,故障秒级发现。实时物流跟踪:通过实时数仓实现物流信息的实时跟踪,保障物流流转状态的实时更新、实时查问。在这些绝对常见的实时数仓场景外,因为剖析服务一体化(Hybrid Serving/Analytics Processing,以下简称HSAP)能力(以及与之对应的Hologres高速纯实时写入能力和点查能力),Hologres也被用在了很多非典型的实时数仓场景。例如: 对商家的广告人群圈选:通过Hologres对宽广商家(to B)提供高QPS、低提早的人群圈选和广告投放服务。无人车送货:Hologres承载无人车上商品的订单、物流等指标信息,面向B端驿站,实时汇报物流信息,从而帮忙驿站老板实现智能化包裹分拣、挪动投柜等工作;面向用户,再通过系统调度运力,实现”定时上门、送货到楼”。搜寻举荐中的特色存储和样本存储:利用Hologres的弱小点查能力,实现实时样本(feature store)、实时特色(sample store)和实时算法成果剖析。客户全链路体验: 客服服务部门通过在Hologres存储客户的相干多渠道数据,实现间接对消费者提供各种明细查问能力(to C)。…相似的场景还有很多,数据的实时“被看见”,“被应用”成为企业高速倒退的原动力。 实时数仓撑持在线生产零碎第二个趋势就是实时数仓越来越成为生产零碎的一部分。 传统上,实时数仓(数据仓库)是一个非生产零碎。因为它次要面对的是外部客户,所以尽管大屏等重要性很高,但实时数仓实质上并不在生产要害链路上,也就是说,如果实时数仓不可用了,对客户的影响并不大。这也是为什么大部分实时数仓产品在高可用性、资源隔离、灾备等能力上和数据库等零碎是有很大差距的。 传统上对外的服务是通过离线/流式加工+后果点查来提供的,即和用户交互的要害链路是后果点查(通过HBase、Redis、MySQL这样的零碎去承载)。这种模式的益处是简略牢靠,但限度也是微小的,能提供的服务性能十分无限,且不灵便。业务迫切希望能将外部的实时数仓能力以可控的形式凋谢给内部客户(to B、to C),并且放弃内外两套零碎在数据和逻辑上的一致性。下面列举的阿里广告、无人车送货、客户全链路体验等场景都是这种to B,甚至to C的案例。 随着实时数仓作为一个服务对外提供,用户对服务的并发度、可用性、稳定性都提出了更高的需要。这也是Hologres在过来一年中重点发力的中央。Hologres在过来一年中引入了多正本、热降级、疾速failover、资源隔离、读写拆散、灾备等能力,实现了生产级高可用,并在往年的双11中失去了很好的利用。 举几个例子: 阿里巴巴客户体验事业部(Chief Customer Office,以下简称CCO)去年是业务上做了双链路写入和存储冗余来保障高可用。往年双11应用了Hologres原生高可用计划下掉手工双链路,省去备用数据链路上实时工作开发、数据比对的人力投入,缩小链路切换时的数据不统一,整体开发人力老本缩小200人日,环比去年升高50%以上;缩小了100+用于实时重保的备份链路作业,缩小计算资源2000CU。阿里巴巴数据技术与产品部(Data Technology,以下简称DT)应用Hologres读写拆散计划,高吞吐写入和灵便查问互不烦扰;剖析查问QPS增长80%的同时,查问抖动显著缩小。咱们认为实时数仓的生产系统化是一个必然的趋势,置信各个实时数仓产品都会逐渐加码这方面的开发投入。 剖析服务一体化(HSAP)第三个趋势是剖析服务的一体化(HSAP)。 Hologres是这方面的首倡者,源头是阿里团体内的业务对剖析服务一体化有强诉求,剖析服务一体化最佳实际首先在阿里外部落地,但咱们在业界也看到越来越多的产品和企业在提倡和实际剖析服务一体化。 剖析服务一体化(HSAP)能够从几个层面下来了解:最根底的是用户能够应用一套技术栈(Flink+Hologres)去解决Ad-hoc Query剖析(对内)和线上服务(对内、to B、to C)两个工作,从而升高开发运维老本。传统上,实时数仓做的是Ad-hoc Query,而lambda架构实现的是线上服务。这两个在技术栈、数据链路、开发运维等都齐全不同,但解决的数据起源往往是同一份数据,导致了大量的开发作业冗余,同时数据的一致性也是大难题。而通过应用对立技术栈同时满足这两方面的需要,开发、运维、治理变的简略。 以阿里CCO的场景为例,数据写入到Hologres行存表后(行存表写入吞吐高,主键查问快,更新场景Binlog开销低),会通过Hologres表的binlog被Flink二次生产加工后,存入Hologres的列存表提供剖析(列存对于统计类查问速度快)。行存表提供线上服务/点查,列存表提供剖析能力。 更高层次的HSAP是用户能够在一个平台上用一份数据去实现Ad-hoc Query和线上服务两个工作,同时实现良好的资源隔离和可用性。 例如,往年双11 DT部门上了Hologres读写拆散计划(由两个Hologres实例别离负责实时写入和实时查问,但共享一份底层数据存储),同时有多个读实例别离负责不同类型的查问,这样就能够保障读写隔离、剖析查问和服务查问隔离,且只有一份数据。也就是所谓的One Data,Multi Workload。 剖析服务一体化除了上述的益处外,另外一个显著的劣势是服务上线速度显著放慢。因为一体化后,剖析和服务的边界变的含糊,所以服务的开发和剖析差别不大,能够认为服务就是一种简略、固定pattern的剖析。这样,传统上服务上线的简单流程就被大大简化了。当有紧急需要须要长期开发,也能马上就上线,无需繁琐的流程了。 咱们置信剖析服务一体化的理念随着像Hologres这样的产品的倒退,会在更多的场景落地。而这也会反哺像Hologres这样的HSAP产品,将HSAP的理念、方法论、反对能力在产品中更好的积淀下来,从而让更多的用户更容易的从HSAP中获益。 实时数据治理成为刚需第四个趋势是实时数据治理变的越来越重要。 实时数据对于企业来说,有着致命的吸引力。因而,企业会盲目不盲目的逐渐加大实时数仓上的投入。而各企业的实时数仓因为实时性的要求,往往没有施行离线数仓那么紧密的方法论和管理体系。因为没有治理,数据大量冗余或者不合理,往往会导致老本急剧增大,数据可信度降落。在阿里这样的超大企业中,这块的老本就会突显进去,这曾经成为实时数仓的一种刚需。 通过对实时数仓、离线数仓、流式计算、音讯队列等全链路进行数据治理,能够实现数据没有“法外之地”,从而在节省成本的同时,进步数据的品质,真正将数据变为企业的资产。 实时数仓的类数据库化第五个趋势是实时数仓的类数据库化。大数据诞生于对传统数据库的扬弃,从NoSQL到NewSQL,大数据产品走出了一条独立于数据库的路。但就像从NoSQL到NewSQL一样,大数据产品中的实时数仓也在像数据库学习,提供了和数据库更好的兼容性,从而让用户能以更低的老本应用实时数仓产品。 这蕴含几个方面: 操作SQL化以及和传统数据库在协定、语法上的兼容性,从而不便开发同学能够用习惯的工具(BI、开发工具等)去对接开发。大数据在这方面的积攒还是及不上数据库几十年的积攒的,相当多的业务同学对于数据库很纯熟,但对于大数据(特地是实时数仓)就感觉不容易上手了。数据模型和语义向传统数据库聚拢。例如,主键(Primary Key)概念是传统数仓类产品所不足的,操作的原子性数仓产品往往也不能保障,这就限度了很多场景的利用。比方说,Clickhouse不足数据库意义上的主键(CK所说的主键是另外一个货色,非唯一性束缚),所以就不适合解决数据库CDC同步场景。这两年,大数据业界能够显著看到对这块的加强。最典型的例子是DeltaLake、Iceberge和Hudi等为代表的近实时数仓减少了ACID能力。当然,受制于架构,这种近实时ACID在频繁更新场景下的性能和延时是有瓶颈的。在阿里,大量场景须要这种基于主键的更新能力,以阿里巴巴外部场景为例: 数据库的实时同步:通过将上游的分库分表和多个业务库实时同步(镜像)到一个大数据实时数仓中,能够提供对业务数据的弱小剖析能力,而这就须要很好的解决纯实时的高频UPDATE和DELETE操作。Flink 计算产生的UPDATE和DELETE(RETRACTION)操作:例如统计GMV,Flink在后果更新时会生成UPDATE记录,而在有些场景下会生成RETRACTION记录(DELETE),这都要求上游零碎能很好的解决这两类事件。风控等业务的计算是由多路作业共同完成的,这些作业独特实时更新一张大宽表(每个作业更新局部字段),这就要求上游零碎能提供基于主键的局部更新能力。传统上,这样的业务是由HBase、Redis这样的NoSQL零碎或者MySQL、PostgreSQL等数据库RDS来承接的。但NoSQL的问题是剖析能力一般偏弱,而数据库问题是写入性能和规模有限度。 这些业务在大数据处理中普遍存在。但在阿里的挑战是因为规模的微小(特地是双11这样的场景),对基于主键的更新性能和提早有刻薄的要求。 Hologres从设计之初就思考了这两点。Hologres齐全兼容了PostgreSQL 11的协定、语法、函数等,很多PostgreSQL扩大(例如PostGIS)能够间接应用。同时,Hologres提供了残缺的主键概念和弱小的更新能力,并提供了单SQL的ACID。往年双11,有业务测得了每秒350万+的实时写入更新性能。这些能力极大的放宽了实时数仓的利用场景,将传统由NoSQL和RDS承载的场景改由实时数仓来承载,为用户提供了更加弱小的剖析解决工具。 实时数仓的类数据库化并不就等价于HTAP数据库了。HSAP相比于HTAP,在事务能力上是减弱的。因为在服务(serving)场景,并不需要传统数据库残缺的事务能力。而这种舍弃,带来的是在实时写入性能和查问性能上的极大晋升,以及可扩展性上的晋升(因为不须要全局事务管理器了)。因而,HSAP相比HTAP也就更加适宜大数据场景。 实时数仓开发麻利化最初一个趋势是开发方法论上的变动,实时数仓的开发越来越麻利,以适应剖析场景的灵便多变。 过来数仓的开发往往依照经典的方法论,采纳ODS->DWD->DWS->ADS逐层开发的办法,层与层之间采纳事件驱动,或者微批次的形式调度。分层带来更好的语义层形象和数据复用,但也减少了调度的依赖、升高数据的时效性、缩小数据灵便剖析的敏捷性。 实时数仓驱动了业务决策的实时化,在决策时通常须要丰盛的上下文信息,因而传统的高度根据业务定制ADS的开发方法受到了较大挑战,成千上万的ADS表保护艰难,利用率低,更多的业务方心愿通过DWS甚至DWD进行多角度数据比照剖析,这对查问引擎的计算效率、调度效率、IO效率都提出了更高的要求。 随着计算算子向量化重写、精细化索引、异步化执行、多级缓存等多种查问引擎优化技术,Hologres的计算力在每个版本都有较大改善。因而咱们看到越来越多的用户采纳了麻利化的开发方式,在计算前置的阶段,只做数据品质清理、根本的大表关联拉宽,建模到DWD、DWS即可,缩小建模档次,同时,将灵便查问在真正剖析时在交互式查问引擎中执行,通过秒级的交互式剖析体验,撑持了数据分析民主化的重要趋势。 ...

January 11, 2022 · 1 min · jiezi

关于大数据:注意你所做的-AB-实验可能是错的

对于 A/B 试验原理认知的缺失,以致许多企业在业务增长的路线上始终在操作一批“谬误的 A/B 试验”。这些试验并不能领导产品的优化和迭代,甚至有可能与咱们的初衷南辕北辙,导致“负增长”。在 A/B 试验一直走红的明天,越来越多的企业开始意识到 A/B 试验的重要意义,并试图通过 A/B 试验,前置性地量化决策收益,从而实现增长。然而,当你和其余业务搭档谈及 A/B 试验时,你总能听到这样的论调: “这事儿很简略,做个试验就行了。筹备两个版本,在不同渠道里发版,而后看看数据。” “把用户依照 did(device_id)尾号奇偶分流进实验组和对照组,而后看看数据体现。” 不可否认,这部分企业确实走在前沿,初步领有了 A/B 试验的思维。然而令人遗憾的是,他们操作的所谓“A/B 试验”,其实并不具备 A/B 试验应有的效用。 更令人遗憾的是,他们仿佛对此并不通晓。 对于 A/B 试验原理认知的缺失,以致许多企业在业务增长的路线上始终在操作一批“谬误的 A/B 试验”。这些试验并不能领导产品的优化和迭代,甚至有可能与咱们的初衷南辕北辙,导致“负增长”。 因而,为了可能更好地明确什么是 A/B 试验,咱们无妨先来理解几种谬误的 A/B 试验。 No1:用户抽样不迷信典型体现“用户抽样不迷信”是谬误 A/B 试验的第一宗罪。操作这种谬误 A/B 试验的企业常采取以下做法: 试验中,在不同的渠道/利用市场中,公布不同版本的 APP/页面,并把用户数据进行比照; 简略地从总体流量中抽取 n%用于试验,不思考流量散布,不做分流解决(例如:简略地从总体流量中任意取出 n%,依照 ID 尾号单双号把用户分成两组)。 错在哪儿不同利用市场/渠道的用户经常带有本人的典型特色,用户散布具备显著区别。对总流量进行“简略粗犷”地抽样也有着同样的问题——分流到实验组和对照组的流量可能存在很大的散布差别。 实际上,A/B 试验要求咱们,尽可能地放弃实验组和对照组流量散布统一(与总体流量也需放弃散布统一),否则得出的试验数据并不具备可信性。 为什么要放弃散布统一呢?咱们无妨来看一个问题: 某大学由两个学院组成。 1 号学院的男生录取率是 75%,女生录取率 49%,男生录取率高于女生;2 号学院男生录取率 10%,女生录取率 5%,男生录取率同样高于女生。问:综合两个学院来看,这所大学的总体录取率是否男生高于女生?直觉上来说,许多人会感觉,男生录取率总体上会高于女生。然而事实并不是这样,让咱们来看看理论数字: 从上表能够看出,只管两个学院男生录取率都高于女生,但综合思考两个学院的状况时,男生的总体录取率却要低于女生。这种景象在统计学中被称为辛普森悖论。 辛普森悖论由英国统计学家 E.H 辛普森于 1951 年提出。其次要内容是:几组不同的数据中均存在一种趋势,但当这些数据组合在一起后,这种趋势隐没或反转。其产生的起因次要是数据中存在多个变量。这些变量通常难以辨认,被称为“埋伏变量”。埋伏变量可能是因为采样谬误造成的。在 A/B 试验中,如果实验组和对照组的样本流量散布不统一,就可能产生辛普森悖论,失去不牢靠的试验后果。 分流是 A/B 试验胜利与否的关键点,在晚期企业还不具备过硬研发能力状况下,想要真正做对 A/B 试验,最佳办法是借助第三方试验工具中成熟的分流服务。 ...

January 10, 2022 · 1 min · jiezi

关于大数据:教程手把手教你如何搭建Hadoop单机伪集群

作者:幻好 起源:恒生LIGHT云社区 概述本文将通过虚拟机搭建单机伪集群的Hadoop服务,帮忙更好的学习和了解Hadoop大数据平台的运行原理。具体到每个细节,不便老手学习和了解。 环境筹备Linux centos 7(虚拟机)JDK1.8Hadoop 2.5+JDK零碎环境配置首先查看零碎是否装置JDK,如果装置,确保零碎装置JDK版本在1.8+且不是OpenJDK,否则后续装置Hadoop可能会报错。通过以下命令查看JDK版本:java -version 如果装置版本较低或者曾经装置了OpenJDK,能够通过命令进行卸载重装:查看零碎装置的JDK包:rpm -qa|grep java而后将查出的包进行一一删除:rpm -e --nodeps [包名]装置JDK时,首先创立一个文件夹用来寄存JDK安装包,如下命令:mkdir -p /opt/local/java/jdk进入以上创立目录后,应用以下命令下载JDK包:weget [https://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz](https://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz)下载实现后,对压缩包进行解压:tar -zxvf jdk-8u192-linux-x64.tar.gz解压实现后,配置零碎环境变量:vi /etc/profile向文件开端增加以下配置参数: # jdk1.8export JAVA_HOME=/opt/local/java/jdk/jdk1.8.0_192export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar配置实现后保留,刷新系统配置:source /etc/profile最初测验JDK是否失效:java -version打印以下日志信息即可。 系统配置主机名配置因为应用虚拟机搭建,ip可能并不是固定的,为了更好的拜访和辨认主机,咱们须要先批改主机名配置,前面间接应用主机名拜访服务。查看主机目前的hostname:hostname如果须要批改后的hostname能始终失效,则批改/etc/sysconfig/network文件,向文件新增以下参数: NETWORKING=yesHOSTNAME=centos001.com批改后,须要重启主机失效。如果须要立刻失效,能够间接应用命令:hostname centos001.com 防火墙配置为了不便学习,先将防火墙敞开禁用,不便其余主机进行拜访。(当然也能够配置凋谢的端口) 应用命令查看防火墙运行状态:systemctl status firewalld进行运行防火墙:service firewalld stop永远停用防火墙:systemctl disable firewalldHadoop部署装置Hadoop安装包筹备首先创立寄存Hadoop安装包寄存的目录: mkdir -p /home/local/hadoop而后进入创立目录,下载Hadoop安装包: wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz解压安装包: tar -zxvf hadoop-2.10.1.tar.gz配置Hadoop环境变量为了不便后续间接应用命令行启动 Hadoop 相干服务,能够配置相干环境变量进入配置文件 /etc/profile,向开端追加以下配置export HADOOP_HOME=/home/local/hadoop/hadoop-2.10.1/export HADOOP_PREFIX=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbincore-site.xml配置向configuration 中增加以下配置参数: <property> <name>fs.defaultFS</name> <value>hdfs://centos001.com:8091</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/local/hadoop/hadoop-2.10.1/data/tmp</value> </property>上述不应用ip拜访而改用主机名拜访,这里配置HDFS的节点拜访。hadoop.tmp.dir 是 Hadoop 文件系统依赖的根底配置,很多门路都依赖它。(如果hdfs-site.xml中不配置namenode和datanode的寄存地位,默认就放在这个门路中)。须要提前存储目录创立好:mkdir -p /home/local/hadoop/hadoop-2.10.1/data/tmphdfs-site.xml配置配置 HDFS 的 DataNode 的备份数量(默认数量为3),只单机模仿运行,配置1 <property> <name>dfs.replication</name> <value>1</value> </property>mapred-site.xml配置这里配置Mapreduce的运行模式,罕用的就是生产:yarn,测试:local 两种模式。 <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>yarn-site.xml配置配置资源服务的相干运行参数<property> <name>yarn.resourcemanager.hostname</name> <value>centos001.com</value></property><property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property>slaves配置因为只演示单机模式,slaves文件无需配置脚本参数配置hadoop-env.sh中须要配置JDK感觉门路:JAVA_HOME,Hadoop配置门路:HADOOP_CONF_DIRyarn-env.sh中须要配置JDK感觉门路:JAVA_HOMEmepre-env.sh中须要配置JDK感觉门路:JAVA_HOME测试启动首次启动格式化如果第一次启动,须要先格式化 namenode ...

January 10, 2022 · 1 min · jiezi

关于大数据:大数据高级开发工程师kkb

大数据高级开发工程师这个 MySQL bug 让我大开眼界! 这周收到一个 sentry 报警,如下 SQL 查问超时了。 select * from order_info where uid = 5837661 order by id asc limit 1复制代码执行show create table order_info 发现这个表其实是有加索引的 CREATE TABLE order_info (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,uid int(11) unsigned,order_status tinyint(3) DEFAULT NULL, ... 省略其它字段和索引 PRIMARY KEY (id), KEY idx_uid_stat (uid,order_status),) ENGINE=InnoDB DEFAULT CHARSET=utf8复制代码实践上执行上述 SQL 会命中 idx_uid_stat 这个索引,但实际执行 explain 查看 explain select * from order_info where uid = 5837661 order by id asc limit 1复制代码可能看到它的 possible_keys(此 SQL 可能涉及到的索引) 是 idx_uid_stat,但实际上(key)用的却是全表扫描 ...

January 6, 2022 · 2 min · jiezi

关于大数据:Apache-Oozie学习笔记一

作者:あおざき 起源:恒生LIGHT云社区 1.Oozie概述Oozie 是一个用来治理 Hadoop生态圈job的工作流调度零碎。由Cloudera公司奉献给Apache。Oozie是运行于Java servlet容器上的一个java web利用。Oozie的目标是依照DAG(有向无环图)调度一系列的Map/Reduce或者Hive等工作。Oozie 工作流由hPDL(Hadoop Process Definition Language)定义(这是一种XML流程定义语言)。实用场景包含: 须要按程序进行一系列工作; 须要并行处理的工作; 须要定时、周期触发的工作; 可视化作业流运行过程; 运行后果或异样的通报。 2.Oozie架构 Oozie Client :提供命令行、java api、rest等形式,对Oozie的工作流流程的提交、启动、运行等操作; Oozie WebApp :即 Oozie Server,实质是一个java利用。能够应用内置的web容器,也能够应用外置的web容器; Hadoop Cluster :底层执行Oozie编排流程的各个hadoop生态圈组件; 3.Oozie基本原理Oozie对工作流的编排,是基于workflow.xml文件来实现的。用户事后将工作流执行规定定制于workflow.xml文件中,并在job.properties配置相干的参数,而后由OozieServer向MR提交job来启动工作流。 工作流由两种类型的节点组成,别离是: Control Flow Nodes :管制工作流执行门路,包含start,end,kill,decision,fork,join。 Action Nodes :决定每个操作执行的工作类型,包含MapReduce、java、hive、shell等。 4.Oozie工作流类型(1)WorkFlow 规定绝对简略,不波及定时、批处理的工作流。程序执行流程节点。 Workflow有个大毛病:没有定时和条件触发性能。 (2)Coordinator Coordinator将多个工作流Job组织起来,称为CoordinatorJob,并指定触发工夫和频率,还能够配置数据集、并发数等,相似于在工作流内部减少了一个协调器来治理这些工作流的工作流Job的运行。 (3)Bundle 针对coordinator的批处理工作流。Bundle将多个Coordinator治理起来,这样咱们只须要一个Bundle提交即可。 想向技术大佬们多多取经?开发中遇到的问题何处探讨?如何获取金融科技海量资源? 恒生LIGHT云社区,由恒生电子搭建的金融科技业余社区平台,分享实用技术干货、资源数据、金融科技行业趋势,拥抱所有金融开发者。 扫描下方小程序二维码,退出咱们!

January 6, 2022 · 1 min · jiezi

关于大数据:大数据高级开发工程师

大数据高级开发工程师为什么要对SpringBoot返回对立的标准格局在默认情况下,SpringBoot的返回格局常见的有三种: 第一种:返回 String @GetMapping("/hello")public String getStr(){ return "hello,javadaily";}复制代码此时调用接口获取到的返回值是这样: hello,javadaily复制代码第二种:返回自定义对象 @GetMapping("/aniaml")public Aniaml getAniaml(){ Aniaml aniaml = new Aniaml(1,"pig"); return aniaml;}复制代码此时调用接口获取到的返回值是这样: { "id": 1, "name": "pig"}复制代码第三种:接口异样 @GetMapping("/error")public int error(){ int i = 9/0;return i;}复制代码此时调用接口获取到的返回值是这样: { "timestamp": "2021-07-08T08:05:15.423+00:00", "status": 500, "error": "Internal Server Error", "path": "/wrong"}复制代码基于以上种种情况,如果你和前端开发人员联调接口她们就会很懵逼,因为咱们没有给他一个对立的格局,前端人员不知道如何处理返回值。 还有甚者,有的同学比如小张喜爱对后果进行封装,他使用了Result对象,小王也喜爱对后果进行包装,然而他却使用的是Response对象,当出现这种情况时我相信前端人员肯定会抓狂的。 所以咱们我的项目中是需要定义一个对立的标准返回格局的。 定义返回标准格局一个标准的返回格局至多蕴含3部分: status 状态值:由后端对立定义各种返回后果的状态码message 描述:本次接口调用的后果描述data 数据:本次返回的数据。{ "status":"100", "message":"操作胜利", "data":"hello,javadaily"}复制代码当然也可能按需加入其余扩大值,比如咱们就在返回对象中增加了接口调用工夫 timestamp: 接口调用工夫定义返回对象@Datapublic class ResultData<T> { /* 后果状态 ,具体状态码参见ResultData.java/ private int status; private String message; private T data; private long timestamp ; public ResultData (){ ...

January 5, 2022 · 1 min · jiezi

关于大数据:数据质量漫谈

简介:数据品质问题无处不在,本文尝试找到一种办法,可能尽可能的发现数据品质问题并解决之。 作者 | 茂才起源 | 阿里技术公众号 一 概述1 数据品质问题无处不在基本上每个用数据的同学,都遇到过以下相似的问题。 表没有按时产出,影响上游,重大的甚至可能影响线上成果。打点缺失,看了报表才发现数据对不上。数据统计进去,uv大于pv,很难堪。数据产出暴增,原本1000万的数据变成了3000万。字段外面的枚举值和正文外面的对不上,没人能解释。某些维度缺失,没法做进一步的数据分析。做了一通剖析,发现后果很离谱,一点点向前剖析,发现打点有问题。……以上都是数据品质的问题。本文尝试找到一种办法,可能尽可能的发现数据品质问题并解决之。 2 数据规范谈到数据品质,就必须理解评估数据品质的维度。DAMA UK 提出了数据品质的六个外围维度,见图1。 注:DAMA International (国内数据管理协会)成立于1980年,是一个由技术和业务业余人员组成的国际性数据管理业余协会,作为一个非营利的机构,独立于任何厂商,旨在世界范畴内推广并促成数据管理畛域的概念和最佳实际,为数字经济打下实践和实际根底。寰球会员近万人,在世界48个国家成立有分会。 图1 数据品质维度 完整性Completeness:完整性是指数据信息信息是否存在缺失的情况,常见数据表中行的缺失,字段的缺失,码值的缺失。比方尽管整体pv是正确的,但在某个维度下,只有局部打点,这就是存在完整性的问题。不残缺的数据所能借鉴的价值就会大大降低,也是数据品质问题最为根底和常见的问题。常见统计sql:count( not null) / count(*)有效性Validity :有效性个别指范畴有效性、日期有效性、模式有效性等次要体现在数据记录的标准和数据是否合乎逻辑。标准指的是,一项数据存在它特定的格局,如:手机号码肯定是11位的数字;逻辑指的是,多项数据间存在着固定的逻辑关系,如:PV肯定是大于等于UV的。准确性Accuracy:准确性是指数据记录的信息是否存在异样或谬误。最为常见的数据准确性谬误就如乱码。其次,异样的大或者小的数据也是不符合条件的数据。准确性可能存在于个别记录,也可能存在于整个数据集,例如数量级记录谬误。这类谬误则能够应用最大值和最小值的统计量去审核。及时性Timeliness:及时性是指数据从开始解决到能够查看的工夫距离。及时性对于数据分析自身的影响并不大,但如果数据建设的工夫过长,就无奈及时进行数据分析,可能导致剖析得出的论断失去了借鉴意义。比方:实时业务大盘数据,及时反映业务要害指标的状况,裸露业务指标的异样稳定,机动响应非凡突发状况都须要数据的及时更新和产出。某些状况下,数据并不是单纯为了剖析用而是线上策略用,数据没有及时产出会影响线上成果。一致性Consistency:一致性是指雷同含意信息在多业务多场景是否具备一致性,个别状况下是指多源数据的数据模型不统一,例如:命名不统一、数据结构不统一、束缚规定不统一。数据实体不统一,例如:数据编码不统一、命名及含意不统一、分类档次不统一、生命周期不统一等。唯一性Uniqueness: 在数据集中数据不反复的水平。惟一数据条数,和总数据条数的百分比。比方 count(distinct business key) / count(*),个别用来验证主键唯一性。3 数据的生命周期图2 数据生命周期 数据接入:接入上游表输出或者其它数据源的数据。数据加工:编写sql生成指标数据表。数据产出:定时调度工作生成数据表。数据利用:上游数据分析、报表等利用数据。在下面任何一个环节中,都可能呈现数据品质的问题,晋升数据品质须要从数据接入、数据加工、数据产出、数据利用、成果跟踪等全流程进行把控,全局观很重要,不拘一点,能力看的更全面。 二 如何解决数据品质问题数据品质是数据的生命线,没有高质量的数据,所有数据分析、数据挖掘、数据利用的成果都会大打折扣,甚至呈现齐全谬误的论断,或者导致资损。然而数据品质问题却是宽泛存在的,且治理的难度很大,因为数据的生产、加工、流转、利用波及到业务经营、生产零碎、数据系统、数据产品等上下游链路几十个环节,每个环节都可能引入数据品质问题。 团体很多BU都有成体系的解决数据品质的计划,团体也有很多工具来解决数据品质问题。本文不具体介绍此类工具的应用,次要聚焦在数据开发过程中因为数据研发同学经验不足而导致的数据品质问题。 图3 数据品质解决办法 如图3所示,我认为有三种办法能够在肯定水平上解决数据品质的问题。 数据探查 发现完整性、一致性、有效性、准确性、关联性等问题解决的数据接入和数据产出阶段的问题开发标准 发现数据及时性、数据一致性、数据准确性等问题解决数据产出阶段的问题数据监控 防止一致性、准确性等问题解决数据生产阶段的问题1 数据探查数据探查的定义个别为:数据探查是摸索源数据的过程,用来了解数据结构、数据内容、数据关系以及为数据工程辨认可能存在的问题。 数据探查不止用在数据品质畛域,数仓开发、数据迁徙等都须要对源数据进行数据探查。数据仓库的所有数据根底都是源数据(ODS),在开发数仓之前,须要对源数据进行探查,能力保障产出的数据仓库的准确性。 题库业务的数据短少打点,数据建设次要基于业务架构的一些两头表和后果表,在开发后期,没有意识到数据探查的重要性,导致数据的准确性有重大问题,数据研发呈现了大量的返工景象。 dataworks提供了数据探查的性能,能够统计根本信息、数据分布、topN、直方图等。但我试了几次始终是探查中,易用性还不是太好。 图4 数据探查根本办法 上图是数据探查的一些基本功能。 本局部介绍数据探查的一些常见办法,不成体系,只是开发过程中遇到的问题,供参考。 表探查 1)数据总量探查 数据总量摸索是对ods的总体数据有初步认知,能够通过数据地图的分区信息确认,也能够通过写sql计算。 数据总量探查时要探查每日增量数据总量、全量数据总量(如有须要)。 个别状况下,数据总量探查后果要与业务方或者上游数据提供方确认是否合乎预期。 2)数据产出工夫和生命周期探查 在做数据探查时,须要探查数据产出工夫和生命周期,对后续的任务调度和补数据有肯定的帮忙。 列探查 1)数据分布探查 数据分布探查是数据探查中最重要的局部,能够探测不同维度下数据的散布状况。个别状况下,有如下写法。 SELECT result ,COUNT(*)FROM xxx.table_nameWHERE dt = 'xxxxx'GROUP BY result ;2)枚举值探查 ...

December 31, 2021 · 2 min · jiezi

关于大数据:大数据埋点怎么做如何验证和管理

12 月 23 日,业内首档程序员综艺“猿桌派”正式开播,首发嘉宾去哪儿网 iOS 高级研发武蕴、知乎大数据中心张彦瑞与主持人融云场景化研发负责人臧其龙就“客户端埋点与大数据分析”展开讨论,为大家具体拆解埋点的作用、意义,给集体和公司带来的价值以及如何验证,并就此揭开“程序员如何放弃职业长青”这个经久不衰的职业倒退问题的一角。 节目干货满满、诚意十足,嘉宾们将本人十几年的从业教训结合实际案例总结梳理、倾囊相授,同时依据本人的成长经验与大家探讨程序员如何进行职业规划,十分值得各位程序员同学珍藏观看。 节目内容干到一度被限流 图片,也一直有同学询问回看形式。当初,福利来啦!大家能够通过以下形式收看 / 收听完整版: 微博、B站、小宇宙搜寻【融云Rongcloud】收看残缺节目。 12 月 30 日(周四) 19:30,猿桌派第二期将聚焦「Flutter VS React Native」,欢送微博@融云Rongcloud 带话题#融云猿桌派# 参加有奖互动。 上面,让咱们回顾下首期节目的精彩话题吧~ 数据埋点是什么,为什么大家越来越器重埋点了?首先,合乎产品的需要,在一些产品性能上打点,不便测试,或联合前期剖析来揣测用户对于产品性能的反馈。开发需要时罕用的 A/B 测试,也须要通过数据埋点把数据反馈不好的砍掉。 其次,做 APP 须要晓得用户量、关上率、留存率,以及用户的爱好和特点,有助于剖析 APP 的受欢迎水平。 最重要的是,互联网的横蛮成长时代曾经过来,获客老本越来越高,须要做精细化经营。用户每天的工夫无限,除去各大利用占用的工夫,留给其余 APP 的工夫越来越少。如果不通过数据去钻研用户的应用习惯,新货色可能永远也没有机会。 对于程序员集体来说,打点其实是脏活累活,让你的 code 没有那么优雅。 但一方面,在日常降职时,做了多少 feature,改了多少 bug,我的项目有没有 delay 等要拿数据谈话。 另一方面,如果一个程序员仅仅聚焦于如何写好代码,而不是通过数据对产品、公司在业界如何生存有一个广泛认知,可能只会成为一个技术尖兵。不足数据 Sense 和产品 Sense,你的职业倒退可能只会聚焦于技术。 举个栗子,这些年你经验过哪些“自嗨”伪需要? 之前在一家短视频公司工作时,咱们都感觉短视频必定有泛社交的属性,做私信会减少日活,但产品竭力阻断。起初,通过 A/B 测试,咱们发现没加私信的那一部分日活反倒比拟高。 咱们已经专门针对某一个版本做了一些优化,但发现用户量没有很大的增长,起初尝试把某一个页面变得特地丑陋,用户量和用户活跃度反而大幅增长。 这些,都须要通过埋点反馈进去。 一些咱们认为会取得很大收益的动作,其实只是咱们认为的。这就是伪需要。没有数据埋点,咱们就无奈获悉用户的实在想法。 打点应占程序员工作的 30% - 40%,为什么?首先,新性能上线之前都要看数据,feature 和数据的占比应该是对半的。一些技术埋点就更是这样了,要设计出一套十分通用的,而且齐全实用于场景的埋点,是要独自去定做的,这都要花费程序员大量工夫。 其次,咱们能够采纳自动化埋点,但它只有通用性,基本上是 coding 层面的埋点,很难关联到具体业务。具体到业务状态还是要程序员破费工夫去思考的。 比方点外卖,首页有考究,第二页更考究。当你在首页点击了一个辣的川菜,刷新到第二页、第三页时,你会发现都是辣的举荐了。 这就波及到埋点的具体机制了。通常来说,埋点数据分两种,一种实时计算,还有一种是偏离线的。外卖利用属于第一种,是一个实时数据,会马上依据你在这个页面的操作做出一些反馈。 目前有很多成熟的实时流的框架,比方 Kafka。打点数据灌到相似于 Kafka 的这种音讯队列零碎里,接下来就是对这些音讯队列进行订阅,订阅之后就能够去生产。 ...

December 28, 2021 · 1 min · jiezi

关于大数据:ORCParquet等列式存储的优点

ORC和Parquet都是高性能的存储形式,这两种存储格局总会带来存储和性能上的晋升。 1.Parquet (1)Parquet反对嵌套的数据模型,相似于Protocol Buffers,每一个数据模型的schema蕴含多个字段,每一个字段有三个属性:反复次数、数据类型和字段名,反复次数能够是以下三种:required(只呈现1次),repeated(呈现0次或屡次),optional(呈现0次或1次)。每一个字段的数据类型能够分成两种: group(简单类型)和primitive(根本类型)。 (2)Parquet中没有Map、Array这样的简单数据结构,然而能够通过repeated和group组合来实现的。 (3)因为Parquet反对的数据模型比拟涣散,可能一条记录中存在比拟深的嵌套关系,如果为每一条记录都保护一个相似的树状结可能会占用较大的存储空间,因而Dremel论文中提出了一种高效的对于嵌套数据格式的压缩算法:Striping/Assembly算法。通过Striping/Assembly算法,parquet能够应用较少的存储空间示意简单的嵌套格局,并且通常Repetition level和Definition level都是较小的整数值,能够通过RLE算法对其进行压缩,进一步升高存储空间。 Parquet文件是以二进制形式存储的,是不能够间接读取和批改的,Parquet文件是自解析的,文件中包含该文件的数据和元数据。 2.ORC (1)ORC文件是自描述的,它的元数据应用Protocol Buffers序列化,并且文件中的数据尽可能的压缩以升高存储空间的耗费; (2)和Parquet相似,ORC文件也是以二进制形式存储的,所以是不能够间接读取,大数据培训ORC文件也是自解析的,它蕴含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的; ORC和Parquet存储的长处有哪些? (3)ORC会尽可能合并多个离散的区间尽可能的缩小I/O次数; (4)ORC中应用了更加准确的索引信息,使得在读取数据时能够指定从任意一行开始读取,更细粒度的统计信息使得读取ORC文件跳过整个row group,ORC默认会对任何一块数据和索引信息应用ZLIB压缩,因而ORC文件占用的存储空间也更小; (5)在新版本的ORC中也退出了对Bloom Filter的反对,它能够进一步晋升谓词下推的效率,在Hive 1.2.0版本当前也退出了对此的反对。

December 28, 2021 · 1 min · jiezi

关于大数据:最强最全面的大数据SQL面试系列

本套SQL题的答案是由许多小伙伴独特奉献的,1+1的力量是远远大于2的,有不少题目都采纳了十分奇妙的解法,也有不少题目有多种解法。本套大数据SQL题不仅题目丰盛多样,答案更是精彩绝伦! 注:以下参考答案都通过简略数据场景进行测试通过,但并未测试其余简单状况。本文档的SQL次要应用Hive SQL。因内容较多,带目录的PDF查看是比拟不便的: 最强最全面的大数据SQL经典面试题残缺PDF版 一、行列转换形容:表中记录了各年份各部门的均匀绩效考核问题。\表名:t1\表构造: a -- 年份b -- 部门c -- 绩效得分表内容: a b c2014 B 92015 A 82014 A 102015 B 7问题一:多行转多列问题形容:将上述表内容转为如下输入后果所示: a col_A col_B2014 10 92015 8 7参考答案: select a, max(case when b="A" then c end) col_A, max(case when b="B" then c end) col_Bfrom t1group by a;问题二:如何将后果转成源表?(多列转多行)问题形容:将问题一的后果转成源表,问题一后果表名为t1_2。 参考答案: select a, b, cfrom ( select a,"A" as b,col_a as c from t1_2 union all select a,"B" as b,col_b as c from t1_2 )tmp; 问题三:同一部门会有多个绩效,求多行转多列后果问题形容:2014年公司组织架构调整,导致部门呈现多个绩效,业务及人员不同,无奈合并算绩效,源表内容如下: ...

December 28, 2021 · 16 min · jiezi

关于大数据:OPPO大数据计算集群资源调度架构演进

1 背景随着公司这两年业务的迅速扩增,业务数据量和数据处理需要也是呈几何式增长,这对底层的存储和计算等基础设施建设提出了较高的要求。本文围绕计算集群资源应用和资源调度开展,将带大家理解集群资源调度的整体过程、面临的问题,以及咱们在底层所做的一系列开发优化工作。 2 资源调度框架---Yarn2.1 Yarn的总体构造从大数据的整个生态体系来说,hadoop处于离线计算的外围地位。为了实现大数据的存储和计算,hadoop1.0提供了hdfs分布式存储以及mapreduce计算框架,尽管整体具备了大数据处理的雏形,但还不反对多类型的计算框架,如起初的spark、flink,这个时候也并没有资源调度的概念。 到了hadoop2.0,为了加重单台服务节点的调度压力,兼容各个类型的调度框架,hadoop抽离出了分布式资源调度框架---YARN(Yet Another Resource Negotiator)。Yarn在整个架构中所处的位置如图1: Yarn通过优化后的双层调度框架,将hadoop1.0中本来须要执行资源调度和任务调度的单点JobTracker分为Resourcemanager和ApplicationMaster两个角色,别离负责集群总体的资源调度和单个工作的治理调度,而新增的Nodemanager角色负责各计算节点的治理。Yarn工作提交流程如图2: 客户端提交的工作理论由Resourcemanager间接解决,Resourcemanager为每一个工作启动ApplicationMaster,工作资源申请由ApplicationMaster间接负责,这样,各个框架通过实现本人的ApplicationMaster来治理工作,申请container作为资源,就能胜利在yarn集群将工作运行起来,资源的获取对工作齐全通明,工作框架和yarn齐全解耦。 2.2 Yarn的调度策略Yarn对于工作的调度在开源版本实现了3种策略,别离为先进先出(FIFO Scheduler)、容量调度(Capacity Scheduler)和偏心调度(Fair Scheduler),通过社区版本演变,目前偏心调度曾经按队列级别实现了偏心机制,咱们集群采纳的正是偏心调度策略。 在理解几种调度策略之前咱们先了解一个概念:队列。在Yarn中,队列其实就是指资源池,如果把整个集群的资源看做大的资源池的话,Yarn会依据用户配置把这个资源池进一步划分成小的资源池;父队列能够进一步向下划分,子队列会继承父队列的资源并且不会超过父队列的最大资源,整个资源队列的组织模式就像一颗多叉树。 先进先出和容量调度策略别离按工作提交程序和为工作划分队列的形式来组织工作,这两种形式对生产环境来说并不是非常实用,因为咱们的目标是让尽可能多的工作运行起来,并且尽量充分利用集群资源,而这两种策略别离会导致工作梗塞以及资源节约。 生产环境中的偏心调度遵循这样一种规定:保障工作资源分配的偏心,当小工作提交过去没资源时,调度器会将大工作开释的资源留给小工作,保障了不会让大工作始终占有资源不开释。三种调度策略的组织模式如图3: 偏心调度除了上述所说保障工作间的资源偏心之外,还会动静调整队列大小,保障队列间的资源偏心,调整根据是集群实时负载,当集群闲时,队列根本能取得配置的最大资源值;当集群忙时,调度器优先满足队列最小值,满足不了时会依据配置的最小值等参数来平均分配。 2.3 Yarn的联邦调度在单个集群达到数千节点规模时,单台Resourcemanager理论曾经靠近了调度的性能瓶颈,要想进一步扩充集群规模社区给出的计划是通过联邦调度横向扩大。该计划的外围就在于Router,对外,Router提供了工作提交的对立入口;对内,Router治理了多套集群,理论工作由Router负责转发,转发到哪个集群由Router来决定。Router的理论工作流程如图4: 能够看到,通过Router治理的联邦调度形式,集群的概念理论曾经对用户通明,并且在当某个集群呈现问题时,Router能通过配置及时进行故障转移,将工作路由到衰弱的集群,从而保障了整体集群的对外服务稳定性。 3 OPPO计算集群现状3.1 集群规模和现状通过两年多的集群建设,目前咱们的集群曾经达到了比拟可观的规模,在这样的集群规模下,保护稳定性其实是第一要务,咱们对集群做了不少稳定性方面的工作,如权限管控、各项重要指标监控等。 除了局部稳定性建设的工作之外,另一个重点关注的是集群资源使用率,以后大部分集群资源应用有比拟显著的周期性法则,从图5的集群监控能看出集群常常凌晨忙碌而白天绝对闲暇。 集群高峰期的资源缓和问题仅依附集群外部本身协调其实能获得的成果无限,咱们针对这种状况是思考在凌晨高峰期与k8s联结调度,将闲暇的在线资源协调局部到离线集群,后文将对该计划进行详细描述。 3.2 集群pending问题除了高峰期的资源缓和,咱们发现在白天也会呈现队列工作大量pending的状况,咱们对具体的pending工作进行剖析,总结出了以下3种导致工作pending的问题: 队列配置不合理:依据偏心调度机制,队列的实时可用资源很大水平由配置的最小值决定,某些队列配置的最小值过小或为0会间接导致队列无奈获取足够的资源。另外,如果队列配置的CPU和内存比例与理论执行的工作CPU内存比差距过大,也会导致资源有余工作无奈运行。用户忽然向某一队列提交大量工作,资源使用量超出队列下限:这种状况实际上与用户本身的应用无关,当本身的任务量加大后,向咱们提出申请来裁减队列是比拟适合的。有大工作占住资源不开释,导致后续提交的工作申请不到启动资源:Spark或者Flink工作与传统的Mapreduce工作运行机制不太一样,这两类工作会长期占有资源不开释,导致新提交工作无奈及时获取到资源。针对该问题,咱们也设计了相应的资源抢占机制,后文详述。 总体来说,队列配置很大水平上影响了作业的运行,正当地优化配置往往能达到事倍功半的成果。 3.3 集群资源使用率现状从上文看出监控中的集群大部分工夫都处于忙碌状态,然而咱们通过统计单台服务器的资源应用,发现还有很多资源的空余,如图6所示: 导致该问题的起因理论是用户作业申请的资源常常远超过理论须要的资源,咱们统计发现95%的Container理论利用率低于76%, 99%的Container理论利用率低于90%。表明作业申请的资源大小存在"虚胖"问题。这部分节约的资源如果能利用起来,其实能极大进步集群资源使用率。咱们针对这部分浪费资源的优化利用也会在后续一并探讨。 4 Yarn的优化之路4.1 Yarn联邦调度的优化社区的联邦调度计划对于咱们来说过于简略,只是实现了简略的加权随机路由。在后续打算中,咱们会把更多的资源接入路由集群中,Router服务会提供对立个队列和工作治理,用户只须要把工作对立提交到Router集群,而不必关系具体到哪个集群。Router会统计所有集群的状态和负载,寻找适合的资源调度给工作。 4.2 资源编配和超卖资源变配和资源超卖的目标是为了晋升每个节点的理论资源应用效率。 资源变配:基于历史的统计值,在调度资源时,调整调配给container的资源更靠近container理论需要的资源。通过咱们的实际,资源变配能够晋升10-20%的资源应用效率。 资源超卖:每个container运行时,都会产生肯定的碎片,nodemanager能够将本人治理资源碎片收集起来,插入一些额定的container下来。咱们打算通过一个额定的碎片调度器来实现这个过程,在碎片比拟多时,启动一些额定的container,碎片如果缩小,这些额定container会被回收掉。 4.3资源动静扩缩为了解决资源波峰波谷的问题,咱们正在与云平台单干,实现一个在线离线资源的混部框架,通过错峰的资源调度,晋升资源的整体使用率。调度过程次要通过Yarn Router和OKE两个服务协调实现,在实时资源有闲暇而离线资源缓和时,Yarn会向OKE申请资源,实时资源缓和时,OKE会向YARN申请回收这部分资源。同时,咱们引入了自研的Remote Shuffle Service来晋升动静Nodemanager的稳定性。 4.4 工作优先级治理在实际过程中,咱们发现用户工作会有显著的优先级区别,因而咱们打算实现一个基于优先级的偏心调度器,来保障高优先级工作的运行延时和效率。一个队列下的资源会优先保障高优先级工作,对立优先级的工作之间偏心分配资源。同时,咱们也实现了工作抢占性能,即便低级工作曾经拿到了资源,高级别工作也能够用抢占调度来强行获取资源。 4.5 队列权限治理Oppo yarn权限采纳神盾对立鉴权,每个用户组在神盾申请队列权限。用户通过hive,livy,或者flink等客户端间接提交的工作,都会在神盾零碎上进行用户的认证和队列的鉴权,无权限的用户会被回绝拜访。 5 总结本文次要介绍了Yarn的根本工作原理及Yarn在OPPO的落地实际,总体来说能够演绎为以下几点: Yarn作为典型的双层调度架构,冲破了单层调度架构的资源和框架限度,使作业的运行和资源分配更加灵便。如何优化作业pending与如何使资源利用最大化是所有调度零碎都会面临的问题,对此,咱们能够从本人零碎自身特点来剖析,寻找适宜本人的解决方案。咱们认为剖析能够基于现有的数据统计。离线和在线业务的错峰个性决定了单项业务无奈充分利用所有服务器资源,通过适合的调度策略组织这些资源将会极大升高服务器老本。作者简介 Cheng OPPO后端工程师 次要负责YARN离线资源调度平台的开发和建设工作,对大数据根底平台的建设有较丰盛的教训。 ...

December 24, 2021 · 1 min · jiezi

关于大数据:数据有了如何构建数据资产

本文由百度智能云大数据资深产品经理——崔宝宏在百度开发者沙龙线上分享的演讲内容整顿而成。本次分享模仿企业面临的实在场景,介绍如何利用百度大数据产品帮忙企业构建数据资产。本次分享从以下四个环节开展: 场景介绍架构设计数据开发利用开发01场景介绍 为了让大家更好的理解这些产品的利用,首先模仿一个企业应用场景demo:有一家中型的零售商,客户和销售数据扩散在不同零碎中。心愿通过一个我的项目买通并实现标准化、集中化的治理。治理好了之后同时心愿能把数据实现价值施展,为高层提供多维度的销售报表,维度包含:客户、产品、地区和工夫。度量包含:销售额和净利润。 企业在技术层面上有如下需要: 原始数据存储于MySQL数据库或者其余的文件中。为了爱护原始生态系统的稳定性,不必查问源数据间接拜访生产主库。最大解决TB级数据,须要2小时实现数据全链路解决。报表查问秒级响应。业务需要剖析业务解读: 数据买通及标准化,通常依照数仓/数据集市形式实现数据治理。高层应用多维报表须要思考页面成果以及需要高效响应,客户高层的需要除了罕用的货色之外还须要疾速的响应需要。技术解读: TB级别在大数据畛域属于数据量中等规模,针对大数据处理从TB到PB的数据增量的过程当中,须要思考底层将来的扩展性。大数据量报表秒级响应依赖高性能剖析型数据库。设计方案: 依靠多行业实践经验方法论进行构建,实现数据资产治理的集中化、标准化、稳固、历史资产爱护为保障大规模数据处理的性能、稳定性、扩展性,应用分布式大数据根底平台BMR为进步数据治理效率,升高数据资产构建过程门槛,应用一站式大数据开发治理平台EDAP为保障TB级明细数据多维数据查问性能,应用MPP数据库Doris为减速报表开发效率以及可视化渲染成果,应用可视化报表开发平台sugar Bl02架构设计技术架构与数据架构基于这个业务需要,首先就要进行架构设计。技术架构其中分了三层: 最底层有存算引擎,包含托管大数据平台BMR和数据仓库Doris。开发平台是面向开发者进步开发效率的工具——数据湖治理与剖析EasyDAP。面向高管驾驶舱报表的Sugar BI。这就是产品层面的技术架构。 右侧是数据架构,数据要从原始的生产零碎外面数据库拿进去,所以数据架构的源数据在MySQL或者文件里。在构建数仓的过程中要进行大规模的ETL解决,一部分要进行基于数仓的实时查问,所以应用了BMR外面的Hive以及Doris这两款存储引擎来实现数据的存储和数据的加工。最上层生成的报表有UI层面的页面数据。整体的数据架构也是分三层:源数据、仓内数据、页面数据。 数仓构建技术架构之外,还须要进行数仓构建。数仓构建的外围就是数据要以一种标准化、规范化、统一化的模式把数据管理起来。这里引入主体域的概念:什么数据应该存在哪个主题下,具体到不同的业务外面应该怎么划分主题。划分计划是:实体、事件和形容,能够主观的把日常生活中各种各样的业务用这三个关系表达出来。举例一个业务场景,比方某人去超市购物,商品或者人就是一个实体,在购物的过程中比方刷卡这是事件,所谓事件就是什么工夫什么地点什么人做了什么事,它是一条事务性的记录,它在做这些事件的过程当中有这样一些定语相干的对他进行形容。回到构建的场景外面来,这是一家中型的零售商在进行产品的售卖,实体有客户实体、产品实体和合同实体。事件是在购买产品的过程当中有征询、购买和投诉,依照这样的分类形式就把主题域划分分明了。 数据模型分层架构把模型划分好了之后须要对ETL中数据进行分层。右边是最通用的分层形式:从ODS层,到DWD层,再到DWA层,最初到ADS应用层,这也是市面上支流的厂商提供的数据分层的构造。咱们认为这样的分层形式尽管通用,然而不够细化,对于一些精细化的数据管理应该是依照7层的数据流架构,这样可能涵盖所有的加工过程。在数据流架构之中,SRC是元数据层。ODS是贴源层,贴源层和SRC实际上就是实现数据上的解耦,数据层面是一个镜像级的拷贝,目标是实现对所有生产型业务零碎的备份。DWD是规范明细层,从数据粒度上讲是相似的,从数据的定义上是实现了统一化。DWA是将数据进行加工汇总。DMA寄存个性化的应用。之后将不同指标的计算形式拆分成两层比方报表层和剖析层以及最外层的展现层,在构建当中能够灵便的抉择须要哪一层。 03数据开发开发程序开发过程当中,须要进行大规模数据的存储和计算,所以须要一款大数据引擎BMR,建数仓的外围是BMR外面的Hive,基于Hive数据在应用层须要做多维的秒级的实时响应查问,所以须要一款高性能的剖析型数据库Doris,开发过程中应用EasyDAP,报表制作应用Sugar BI。 为什么要用BMR?有十分丰盛的组件,不仅是能够实现结构化的数仓,还能够反对实现数据湖的搭建。高性价比的产品,能够应用更小的资源进行更大规模数据的解决,用更少的存储来存更大量级的数据,等同规模下老本会越来越低。能够高效运维,整个平台就是页面是全托管的应用形式,不须要在底层写命令来做运维监控,所有的货色都能通过控制台来实现。十分安全可靠,有各种各样的平安认证,有行列级别的数据权限,在数据的加密脱敏方面有固定的组件撑持,用户的所有操作都能够通过审计。 Hive库表创立进行BMR的集群构建和库表的创立,须要把Hive表建设起来。在建Hive表的过程当中,须要把Hive表的集群搭建起来,其中有这么几个步骤: 第一步是集群创立,过程当中要抉择一些必要的组件比方Hive、Spark。选好之后须要进行队列的治理,可能最大力度保障外围工作疾速跑完,所有的队列创立好了之后,在理论运行过程中是须要去检测有没有一些运行中呈现的服务异样,或者服务异样之后的报警性能。第二步要进行Hive库表的创立,建设一些数据库如ODS库、DWD库和DWA库,建表过程当中,每一层的库都遵循建表的标准。Doris产品个性Doris产品其实是高性能的MPP数仓,它的个性有以上几点。 Doris建库建表在Doris上须要建设好DMA,建库的过程只须要creat_database 命令,而后通过可视化的页面就实现了,建完库之后须要把DMA外面的表创立好,建表标准与DWA和DWD统一,都是依照主题域而后特定的业务实体来表白。在这个建表的过程当中能够指定哪些表是维度,所谓维度就是说能够用来做聚合,把聚合的字段定义好之后,那么在这张表的写入过程当中,程序就会默认帮你把底层多维穿插的分组数据在指标层面做了分组和统计,当咱们去查问这两个维度下对应的指标数据的时候,这曾经不是一个实时计算的过程而只是一个实时查问的过程,所以它能实现数据的疾速响应。最初建完表之后要把数据疾速导入,Doris和支流的Hadoop生态是兼容的,Hive建完仓之后,数据其实是放在HDFS中,所以只须要把HDFS导入就能够了。 EasyDAP产品个性用这些根底的引擎构建完之后,在开发的过程中是须要把ETL工作流通过一款产品来实现,这款产品就是EasyDAP。 能做数据集成、数据凋谢、数据分析和数据服务。它的个性就是能够把Doris的Hive当作数据源引入进来,把BMR的计算引擎当作计算资源引入进来。提供了一个低门槛的开发方式,在开发的过程当中不须要写代码,通过利落组件就能够实现。十分安全可靠,在这个平台内所有的操作都是通过审计日志的,表的拜访也都是有受权的。十分凋谢兼容,除了可能对接百度的Doris、Hadoop,还可能对接市面上其余厂商开源的Hadoop生态。数据源配置在EasyDAP进行数据开发的过程当中,第一步就是要把原始数据引入到数仓外面,在平台上创立一个计算资源,而后再把源MySQL的JDBC配置好,把指标的Hive JDBC配置好,就能够实现一些根底的操作。从权限上来讲,这些操作都应该是管理员来操作的,开发人员进来之后只须要进行开发就行,由管理人员来进行这些根底的配置。 数据开发阶段把以上根底配置好之后就进入数据开发阶段。首先创立开发我的项目,而后绑定我的项目须要应用的资源,最初须要把开发人员进行受权治理。 编写数据集作业,数据写入Hive ODS库表中把根底的治理相干的工作做完之后,就是理论开发人员进入平台进行ETL开发。图中的例子里想要把MySQL外面的数据集成到Hive里,第一步就是要把MySQL外面的原始数据放入到Hive的ODS层。举例说明:MySQL外面有两个库,一个是CRM库,一个是MARKET库,CRM库外面有一种表是客户根本信息(CUST_INFO),MARKET库外面也有一种表是客户明细信息(CUST_DETAIL),同时MARKET库外面还有合同信息(CONTRACT_INFO)。在Hive外面的话就是依照Hive的命名标准,原始库名+原始零碎名+原始表名。加工的过程当中,能够有几种加工模式,第一个用可视化开发工具,第二用脚本开发。 线上监控以及告警解决配置调动实际上就是来执行异样告警,失败重做,以及日常的日志排查,同时也反对手工的执行。 Hive仓内开发把原始数据库里的数据写入到Hive的ODS层后,须要在Hive外面做仓内开发,也就是要把数据从ODS层写入DWD层写入DWA层,因为Hive反对丰盛的数据生态,所以应用HQL来实现。右边这张图,ODS中有三张表,在加工进入DWD中是要把两个客户的根本信息做对立,写入到DWD的客户主题下的信息表,而后销售合同外面的合同信息在主题域外面认为是一个订单,所以在事件主题上面有一个订单表。加工好了之后就要做汇总层,其中包含天级、月级、季级和年级。 写入Doris到了DWA之后,下一步要写入Doris,在DWA和DMA外面其实只是做数据的转储,指标是为了响应实时的数据查问。只须要将数据源抉择Hive,将数据指标抉择Doris,而后把图配好之后,就能够把数据生成了,也能够应用底层脚本的形式,应用Doris的命令也能够把Hive外面的数据写入Doris外面。 以上是老师的全副分享内容,有问题欢送在评论区提出。 往期举荐 可视化神器背地的神秘6000字,详解数据仓库明星产品背地的技术神秘3个步骤,4大平台,搞定大规模数据处理 扫描二维码,备注:大数据开发,立刻退出大数据产品&技术交换群。

December 17, 2021 · 1 min · jiezi

关于大数据:解决rabbitmq消息队列的顺序及重复消费问题

想想为什么要应用MQ? 1.解耦,零碎A在代码中间接调用零碎B和零碎C的代码,如果未来D零碎接入,零碎A还须要批改代码,过于麻烦! 2.异步,将音讯写入音讯队列,非必要的业务逻辑以异步的形式运行,放慢响应速度 3.削峰,并发量大的时候,所有的申请间接怼到数据库,造成数据库连贯异样 应用了音讯队列会有什么毛病? 1.零碎可用性升高:你想啊,原本其余零碎只有运行好好的,那你的零碎就是失常的。当初你非要加个音讯队列进去,那音讯队列挂了,你的零碎不是呵呵了。因而,零碎可用性升高 2.零碎复杂性减少:要多思考很多方面的问题,比方一致性问题、如何保障音讯不被反复生产,如何保障保障音讯牢靠传输。因而,须要思考的货色更多,零碎复杂性增大。 如何保障音讯队列是高可用的? 应用集群的形式维持MQ的可高用性。 如何保障音讯不被反复生产? 保障音讯不被反复生产的要害是保障音讯队列的幂等性,这个问题针对业务场景来答分以下几点: 1.比方,你拿到这个音讯做数据库的insert操作。那就容易了,给这个音讯做一个惟一主键,那么就算呈现反复生产的状况,就会导致主键抵触,防止数据库呈现脏数据。 2.再比方,你拿到这个音讯做redis的set的操作,那就容易了,不必解决,因为你无论set几次后果都是一样的,set操作原本就算幂等操作。 3.如果下面两种状况还不行,上大招。筹备一个第三方介质,来做生产记录。以redis为例,给音讯调配一个全局id,只有生产过该音讯,将<id,message>以K-V模式写入redis。那消费者开始生产前,先去redis中查问有没生产记录即可。 如何解决丢数据的问题? 1.生产者丢数据 生产者的音讯没有投递到MQ中怎么办?从生产者弄丢数据这个角度来看,RabbitMQ提供transaction和confirm模式来确保生产者不丢音讯。 transaction机制就是说,发送音讯前,开启事物(channel.txSelect()),而后发送音讯,如果发送过程中呈现什么异样,事物就会回滚(channel.txRollback()),如果发送胜利则提交事物(channel.txCommit())。 然而毛病就是吞吐量降落了。因而,依照博主的教训,生产上用confirm模式的居多。一旦channel进入confirm模式,所有在该信道下面公布的音讯都将会被指派一个惟一的ID(从1开始),一旦音讯被投递到所有匹配的队列之后,rabbitMQ就会发送一个Ack给生产者(蕴含音讯的惟一ID),这就使得生产者晓得音讯曾经正确达到目标队列了.如果rabiitMQ没能解决该音讯,则会发送一个Nack音讯给你,你能够进行重试操作。 2.音讯队列丢数据 解决音讯队列丢数据的状况,个别是开启长久化磁盘的配置。这个长久化配置能够和confirm机制配合应用,你能够在音讯长久化磁盘后,再给生产者发送一个Ack信号。大数据培训这样,如果音讯长久化磁盘之前,rabbitMQ阵亡了,那么生产者收不到Ack信号,生产者会主动重发。 那么如何长久化呢,这里顺便说一下吧,其实也很容易,就上面两步 ①、将queue的长久化标识durable设置为true,则代表是一个长久的队列 ②、发送音讯的时候将deliveryMode=2 这样设置当前,rabbitMQ就算挂了,重启后也能复原数据。在音讯还没有长久化到硬盘时,可能服务曾经死掉,这种状况能够通过引入mirrored-queue即镜像队列,但也不能保障音讯百分百不失落(整个集群都挂掉) 3.消费者丢数据 启用手动确认模式能够解决这个问题 ①主动确认模式,消费者挂掉,待ack的音讯回归到队列中。消费者抛出异样,音讯会一直的被重发,直到解决胜利。不会失落音讯,即使服务挂掉,没有解决实现的音讯会重回队列,然而异样会让音讯一直重试。 ②手动确认模式,如果消费者来不及解决就死掉时,没有响应ack时会反复发送一条信息给其余消费者;如果监听程序处理异样了,且未对异样进行捕捉,会始终反复接管音讯,而后始终抛异样;如果对异样进行了捕捉,然而没有在finally里ack,也会始终反复发送音讯(重试机制)。 ③不确认模式,acknowledge="none" 不应用确认机制,只有音讯发送实现会立刻在队列移除,无论客户端异样还是断开,只有发送完就移除,不会重发。 如何保障音讯的程序性? 针对这个问题,通过某种算法,将须要放弃先后顺序的音讯放到同一个音讯队列中。而后只用一个消费者去生产该队列。同一个queue里的音讯肯定是程序音讯的。我的观点是保障入队有序就行,出队当前的程序交给消费者本人去保障,没有固定套路。例如B音讯的业务应该保障在A音讯后业务后执行,那么咱们保障A音讯先进queueA,B音讯后进queueB就能够了。

December 17, 2021 · 1 min · jiezi

关于大数据:OPPO大数据离线计算平台架构演进

1 前言OPPO的大数据离线计算倒退,经验了哪些阶段?在生产中遇到哪些经典的大数据问题?咱们是怎么解决的,从中有哪些架构上的降级演进?将来的OPPO离线平台有哪些方向布局?明天会给大家一一揭秘。 2 OPPO大数据离线计算倒退历史2.1 大数据行业倒退阶段一家公司的技术倒退,离不开整个行业的倒退背景。咱们简短回归一下大数据行业的倒退,通过谷歌的BigData搜寻热度咱们大略分一下大数据的近十几年的过程。 下面的热度曲线来看,大数据倒退大略能够分成三个阶段:成长期(2009-2015),这段期间次要代表是Hadoop1.0以及相干生态的疾速成长;巅峰期(2015-2018),这段期间次要代表是Hadoop2.0以及Spark迅速成为大数据基础架构和计算引擎的行业事实根底底座;成熟期(2018-now),这段时间次要代表是Spark、Flink等计算引擎以及OLAP引擎的凋敝; 从这个热度曲线看,有一个小疑难,近两年大数据热度迅速降落,那么什么技术在近几年成为热度最大的技术? 2.2 OPPO 大数据倒退阶段OPPO大数据起步比整个行业稍晚,咱们先看一下倒退时间轴: 2013年,大数据巅峰期之初,OPPO开始搭建大数据集群和团队,应用Hadoop 0.20版本(Hadoop1.0)。2015年,应用CDH服务,集群初具规模。2018年,自建集群,曾经达到中等规模,应用Hive作为计算引擎。2020年,开始大规模从Hive向Spark计算引擎迁徙SQL作业。2021年,从大数据资源层和计算层降级革新。 OPPO的大数据倒退能够总结成两个阶段:发展期:2013-2018年,OPPO大数据从无到有,缓缓成长,计算节点规模从0扩大到中等规模;繁荣期:2018-当初,三年大数据疾速倒退,技术上从hadoop1.0降级到hadoop2.0,计算引擎由hive降级到spark;自研技术以及架构降级解决集群规模收缩后常见问题; 3 大数据计算畛域常见问题大数据畛域有很多经典的问题,咱们这里选取了生产环境遇到五种典型的问题来阐明;咱们将围绕这五种问题开展,介绍OPPO大数据离线计算的架构演进。 3.1 Shuffle问题Shuffle是大数据计算的要害一环,shuffle 对工作的性能和稳定性都产生重要的影响。有以下几点因素,导致shuffle性能变慢和稳定性变差: spill&merge:屡次磁盘io;map在写shuffle数据的过程中,会将内存的数据依照肯定大小刷到磁盘,最初做sort和merge,会产生屡次磁盘io. 磁盘随机读:每个reduce只读取每个map输入的局部数据,导致在map端磁盘随机读。 过多的RPC连贯:假如有M个map,N个reduce,shuffle过程要建设MxN个RPC连贯(思考多个map可能在同一台机器,这个MxN是最大连接数)。 Shuffle问题不仅会影响工作的性能和稳定性,同时在大数据工作上云的过程中,shuffle数据的承接也成为上云的妨碍。云上资源的动静回收,须要期待上游读取上游的shuffle数据之后能力平安的开释资源,否则会导致shuffle失败。 3.2 小文件问题小文件问题简直是大数据平台必须面对的问题,小文件次要有两点危害: 小文件过多对HDFS存储的NameNode节点产生比拟大的压力。小文件过多,会对上游工作并发度产生影响,每个小文件生成一个map工作读数据,造成过多的工作生成,同时会有过多的碎片读。小文件问题产生的起因有哪些? 工作数据量小同时写入的并发又比拟大,比拟典型的场景是动静分区。数据歪斜,数据总量可能比拟大,然而有数据歪斜,只有局部文件比拟大,其余的文件都比拟小。3.3 多集群资源协调问题随着业务倒退,集群迅速扩张,单个集群的规模越来越大,同时,集群数量也扩大到多个。面对多集群的环境如何做好资源协调是咱们面临的一个挑战。 首先看下多集群的优劣势:劣势:各个集群资源隔离,危险隔离,局部业务独享资源。劣势:资源隔离,造成资源孤岛,失去大集群劣势,资源利用率不平均。 例如,比照咱们线上集群 vcore资源应用状况: 从资源应用状况看,集群2的资源利用率显著低于集群1,这就造成集群之间负载不平均,资源利用率低下,资源节约。 3.4 元数据扩大问题因为历史起因,元数据在集群搭建初期选取单个MySQL实例存储。随着业务数据快速增长的同时,元数据也在飞快增长。这种单点的元数据存储,曾经成为整个大数据系统的稳定性和性能的最大的隐患。同时,在过来的一年,咱们的集群因为元数据服务问题,已经呈现两次比拟大的故障。在此背景下,对元数据的扩大,成为紧急且重要的事项。 问题来了,抉择什么样的扩大计划?调研业界的几种计划,包含: 应用TiDB等分布式数据库;从新布局元数据的散布,拆分到不同的MySQL;应用Waggle-Dance作为元数据的路由层;在选型的过程中,咱们思考尽可能对用户影响最小,做到对用户通明,平滑扩大;3.5 计算对立入口在咱们将sql工作从hive迁徙到spark引擎的同时,咱们遇到的首要问题是:SparkSQL 工作能不能像HiveSQL一样很不便的通过beeline或者jdbc提交?原生的spark是通过spark自带的submit脚本提交工作,这种形式显然不适宜大规模生产利用。 所以,咱们提出对立计算入口的指标。 不仅对立SparkSQL工作提交,同时 jar包工作也要对立起来。 以上五个问题是咱们在生产环境一直的碰壁,一直的摸索,总结进去的典型的问题。当然,大数据计算畛域还有更多的典型问题,限于文章篇幅,这里仅针对这五个问题探讨。 4 OPPO离线计算平台解决之道针对后面提到的五个问题,咱们介绍一下OPPO的解决方案,同时也是咱们的离线计算平台的架构演进历程。 4.1 OPPO Remote Shuffle Service为了解决shuffle的性能和稳定性问题,同时,为大数据工作上云做铺垫,咱们自研了OPPO Remote Shuffle Service(ORS2)。 4.1.1 ORS2在大数据平台整体架构 有了ORS2,不仅将spark工作的shuffle过程从本地磁盘解耦,同时承接了云上资源的大数据计算工作的shuffle数据。 从ShuffleService自身来说,独立进去一个service角色,负责整合计算工作的shuffle数据。同时,ShuffleService自身能够部署到云上资源,动静扩缩容,将shuffle资源化。整体架构上看,ShuffleService 分成两层,下面Service层,次要有ShuffleMaster和ShuffleWorker两种角色。 ShuffleMaster负责ShuffleWorker的治理,监控,调配。ShuffleWorker将本身的相干信息上报给ShuffleMaster,master对worker的衰弱做治理;提供worker加黑放黑、punish等治理操作。调配策略可定制,比方:Random策略、Roundrobin策略、LoadBalance策略。 ShuffleWorker负责会集数据,将雷同分区的数据写入到一个文件,Reduce读分区数据的过程变成程序读,防止了随机读以及MxN次的RPC通信。 在存储层,咱们的ShuffleService能够灵便选取不同的分布式存储文件系统,分区文件的治理以及稳定性保障交由分布式文件系统保障。目前反对HDFS、CFS、Alluxio三种分布式文件系统接口。能够依据不同的需要应用不同的存储介质,例如,小工作作业或者对性能要求比拟高的作业,能够思考应用内存shuffle;对于稳定性要求比拟高,作业重要性也比拟高的作业,能够选取ssd;对性能要求不高的低级别作业,能够选取SATA存储;在性能和老本之间寻求最佳的均衡。 4.1.2 ORS2的外围架构 从ShuffleService的外围架构来看,分为三个阶段: ShuffleWriter:Map工作应用ShuffleWriter实现数据的汇集和发送,采纳多线程异步发送;应用堆外内存,内存治理对立交由spark原生内存管理系统,防止额定内存开销,升高OOM危险。为了进步发送数据的稳定性,咱们设计了两头切换目标ShuffleWorker的共,当正在发送的ShuffleWorker呈现故障,Writer端能够立刻切换目标Worker,持续发送数据。 ShuffleWorker:Shuffle负责将数据会集,同时将数据落到分布式文件系统中。ShuffleWorker的性能和稳定性,咱们做了很多设计,包含流量管制,定制的线程模型,音讯解析定制,checksum机制等。 ...

December 17, 2021 · 1 min · jiezi

关于大数据:极客星球-阿里携手MobTech共话大数据平台架构演变之路

编者按:6月9日晚,由阿里EMR技术团队发动的“Apache Spark中国技术社区线上技术研讨会”在云端举办。寰球数据智能科技平台MobTech袤博科技受邀加入,大数据PaaS平台负责人大宗师分享了企业大数据PaaS平台架构演变之路,以及迭代降级过程中遇到的一系列问题和解决思路。 以下为分享内容: 历经9年倒退,MobTech袤博科技现已笼罩寰球近155亿+挪动端设施,业务笼罩营销、金融、商业天文等多个垂直行业,同时为政府业务提供反对。公司从2015年,组建专门的大数据部门,抉择了业界支流的计算平台构建大数据平台。在通过一段的工夫倒退之后,基础架构曾经无奈满足业务的需要,大数据PaaS平台架构演变之路就此开始。前面从起步期、疾速发展期、整合重构期,三个不同阶段中的摸索思路、落地实际以及优化思考,论述了企业大数据PaaS平台架构的演变。 ▌起步期首先是起步期,那时候咱们刚刚筹备发展大数据业务。在技术选型上,因为数据体量还未达到一个很大的水平,以及大数据业务还处于摸索阶段,因而咱们采纳业界支流的hadoop生态构建咱们的大数据平台。架构也相当的简略,因为咱们的数据源大部分是日志数据,加上大量的业务数据寄存在mysql,因而咱们在数据接入层应用了kafka+flume采集日志数据,sqoop来同步mysql数据到hdfs。在通过数仓开发同学,将数据加工解决,一部分积淀为用户标签,一部分数据用来制作报表。计算引擎方面次要是hive和spark相结合。因为过后还没有olap即席查问的需要,没有思考一些比方presto的引擎。业务也绝对比较简单,次要是用户画像以及报表需要。 因为数仓刚开始构建,须要定时运行工作或者生成数据,因而任务调度开始有了需要。然而因为过后还没有对立平台的概念,调度零碎的抉择上也比拟凌乱。大数据开发通常应用本人比拟相熟的组件,有Ooize/Azkaban,以及应用原生crontab。操作形式也很间接,间接应用集群跳板机登陆机器,实现一些开发或者取数的操作。当初看来,这种比拟原始的形式在企业大数据平台构建初期还是可行的,然而弊病也很显著。 ▌疾速发展期随着公司业务的倒退以及数据量的减少,平台化的需要也提上日程。咱们也开始参照业界的一些案例,摸索平台化的一些计划。在数据接入方面,因为数据源的拓展,数据源由咱们的对立数据接入零碎,写入到kafka,在通过flume实时处理,一部分导入到hbase和es做实时查问,一部分进入到离线数仓。数仓方面,咱们引入了hbase用作标签存储,提供实时查问。引擎方面咱们减少presto做为olap引擎做即席查问。在平台方面,咱们逐渐上线了调度零碎、元数据管理、自助查问零碎。这些零碎很大水平上进步了开发效率。后续又上线了一系列零碎,例如血统剖析、数据品质、ETL零碎、AI模型治理等等。 ▌整合重构期在通过平台的疾速发展期之后,咱们被动加快了脚步,开始思考应该做些什么能力进步平台的使用率,更好体现出这些零碎的价值来。于是咱们开始转变思路,由原来的需要导向,转变为产品导向,思考怎样才能做出好的平台产品。 首先咱们做的一件事就是,缩小子平台数量,整合现有零碎。咱们在数据地图上从新设计了UI。除了将各个模块整合外,咱们提供了简便入口,能够关上一张表就实现所有的操作。咱们还设置资产评分体系,联合集群存储、血统应用状况以及数据品质,对数据的价值进行量化评分。针对集群数据量暴增的问题,咱们上线生命周期治理性能,对长期未应用的表进行清理,保障集群存储的衰弱。此外,咱们拓展了血统采集工具,残缺反对hive/spark/presto这些咱们公司次要应用的计算引擎。 另外一件事件就是开源。之前提到开发人力不足,不足价值产出的问题,是很多公司都会遇到的问题。咱们的思路就是,寻找一些优良的、社区沉闷的开源产品来进行二次开发,开源与自研相结合的形式。咱们引入了由微众开源的数据开发中间件Linkis(外部代号CodeWeaver),以代替原先的自助查问平台和交互式IDE,提供一站式的数据开发服务。近期咱们也在应用Dolphinscheder作为咱们调度零碎的降级。 CodeWeaver架构设计 自研产品数据地图Jarvi劣势能够说这个阶段,是平台主动出击,不再是被动接管需要,而且被动去贴近业务,去更好的开掘数据价值,晋升数据服务的影响面。在平台建设中,咱们踩过了不少坑,遇到了不少问题,也总结出了一些内容,在这里和大家分享一下。 ▌守业公司搭建大数据平台的选型,开源还是自研?技术选型时企业大数据建设之初必然要思考的问题。通常来说,会有自研和开源两条路,这两种形式各有千秋。 开源的特点:市面上开源大数据产品绝对丰盛。基于hadoop生态,会有相当丰盛的平台产品。绝对自研,开源产品开发成本大幅度降低,开源产品基本上是开箱即用,而自研产品须要投入大量人力,同时在一段时间内无奈提供产出,这对个别的小公司是没法累赘社区沉闷,有寰球顶尖的开发者参加研发和保护。 自研的特点:联合本身业务场景的特点,能够进行定制化需要。开源产品定制化水平低,只是提供了通用模块。绝对于二次开发,更加灵便,基于开源产品的二次开发不是很容易,有的时候因为架构、或者开发语言的限度。能很容易进行二次开发的我的项目可遇不可求。 咱们在平台建设的过程中,经验了从纯自研再到开源自研相结合的路线。第一次要是思考到公司的特殊性,没有特地多的人力去进行平台的开发工作,且在短时间内没有丰盛的产出,这对一平台来说是有比拟大压力的。同时,因为大数据行业的倒退,一些优良的开源我的项目涌现了进去。比方Linkis,Dolphinscheduler等等。 因而在一些通用的模块上抉择优良的开源产品调度、数据开发平台,融入了本人的能力,同时集中开发资源自研企业定制化水平高的产品如数据地图产品。 ▌怎么倒退成一个好的平台随着大数据的井喷式暴发,企业在解决数据模型、数据计算、数据治理和运维保障等工作的难度越来越大,对大数据系统建设提出了更高要求。在将来,咱们须要一个更好的平台可能撑持业务倒退、晋升产品体验、逐渐满足企业的精细化经营,最终实现技术积淀与共享,构建通用服务。 在咱们看来,要成为一个好的平台有以下几个要点 第一、撑持业务。撑持业务方实现残缺的数据开发流程,晋升平台的稳定性和可靠性; 第二、晋升产品体验。倒退初期,需要驱动诚然没错,然而将来要往产品体验的方向驱动,晋升用户体验,让用户不只是应用,还要会用,再是想用; 第三、逐渐撑持企业的精细化经营。这是咱们目前正在致力的方向。无论是升高大数据老本,还是开掘数据价值,都是撑持企业精细化运作的重要形式; 最初,技术积淀与共享,构建通用服务,打造企业及大数据平台的同时,积极参与开源社区,共同进步。 ▌将来咱们平台的倒退方向有以下几点1、降本增效,通过资产治理和资产评分体系建设,缩小大数据运维老本,同时开发平台集成更多的能力,进步开发效率; 2、持续打造全平台的分布式监控零碎,保证数据从生产到应用的全流程可靠性,晋升数据价值; 3、从自动化到智能化。目前咱们曾经实现了自动化的一些事件,比方自动化调度,自动化集群清理等等。将来是心愿往更加智能的方向倒退。包含接入更多的计算引擎,智能抉择引擎路由查问。以及依据数据的冷热应用状况、影响力主动设置正当的生命周期。再比方依据表字段信息,业务信息等进行类似剖析,找出类似表等等。 让企业更不便更平安更智能的应用数据,开掘数据价值,是咱们将来致力的一个方向。

December 17, 2021 · 1 min · jiezi

关于大数据:3个步骤4大平台搞定大规模数据处理

本文由百度智能云大数据平台技术架构师——李莅在百度开发者沙龙线上分享的演讲内容整顿而成。本次分享围绕云原生数据湖架构的价值开展,深度数据湖计算和对立元数据的技术架构。心愿开发者可能通过本文对一站式大数据处理平台构建有初步意识。文:李莅视频回放:https://developer.baidu.com/l... 本次分享的主题是:数据湖架构下的大规模数据处理技术实际。内容次要分为以下4个方面: 背景介绍大数据根底建设数据湖数仓建设一站式开发平台01背景介绍什么是数据湖数据湖的概念最早呈现在2010年 ,此时数据湖是一个集中式的存储系统,流入任意规模的结构化和非结构化的数据。但这些还是在关注它存储的相干个性。 随着对象存储(BOS)解决了海量数据和低成本存储问题,用户更关注开掘湖中数据的价值。数据湖的重点从存储转向数据的计算剖析,外围在于强化数据分析的能力。 2017年随着AI 的衰亡,深度学习应用大数据处理海量的训练数据输出。借助数据湖架构,能够更好地买通数据之间的壁垒,撑持AI 模型的训练、推理以及数据的预处理。 数据化架构的演进 第一个阶段在1980年,过后还是传统的数仓模式:用户把关系型数据库的内容采集下来,通过ETL存储到专门的剖析型数据库中,而后在下层提供BI、报表类的服务。第二个阶段在2011年,此时开始引入数据湖的概念:源端的类型也变为更多结构化的数据和非结构化的数据,包含音频和视频等等,而后把这些数据全副都存到数据湖里。接下来会依照两种状况解决:第一种通过数据预处理之后为数据迷信或机器学习提供训练的数据输出。第二种通过传统的ETL解决,存到剖析型数据库或实时数据库里用来提供传统的报表或BI剖析。第三个阶段在2020年,此时提出湖仓一体的概念,称为Lakehouse。底层数据放弃不变,然而应用一个数据湖来对接下层所有利用,其中没有相干的剖析型数据库或实时数据库或数据预处理机制,数据湖能够间接对接BI、报表、训练、数据迷信、流式剖析等剖析类的场景。大数据我的项目实例以一个理论的大数据我的项目为例来介绍一下如何在大规模数据的背景下建设一个数据湖的数仓。 客户的场景次要分为这四方面的内容。 进行采集传输。其中包含日志文件采集、数据库采集和实时音讯。采集上来的数据须要进行荡涤加工。其中包含非结构化文本解析、数据荡涤、格局转换和初步加工校对。将荡涤完的数据用来构建数仓。构建的形式包含实时聚合、天级聚合和按周按月聚合。数仓里的数据须要提供给上游去进行数据生产。其中包含人员交互、各类报表和API服务。面临新的挑战在这个背景下会遇到一些新的挑战。 首先客户的数据量指数级地减少的,客户很冀望在数据量暴增的同时改善存储的老本并且进步计算能力。其次客户的业务倒退之后,数据类型更加多样,原来可能以关系型数据库为主,起初减少了很多很难间接进行剖析和计算的数据库,用户也心愿可能对立治理。最初,生产数据的利用类型更加简单,带来更大的并发访问量,wokload和性能冀望是简单多样的。比方有的客户冀望毫秒级的提早,也有的客户冀望小时级然而数据吞吐量特地大。用百度智能云来构建数据湖应用百度智能运来构建数据湖,这是提供的一个数据湖仓解决方案。 其中最底层是湖仓引擎层,它的外围设计有三个产品: 托管大数据平台BMR,用来构建传统的Hadoop生态数据仓库Palo,用来存储一些高性能拜访的数据对象存储BOS下层提供一个治理开发平台——大数据开发剖析平台EasyDAP。02大数据基础设施建设网络布局首先对客户做一个网络布局,其中VPC划分是最重点须要思考的,个别有以下几个内容: 在线业务VPC离线业务VPC研发测试VPC思考部门等组织构造情况进行更粗疏的VPC划分VPC之间网络隔离,保障互不影响和安全性 有些状况是须要跨VPC去传输数据的,通常会有两种形式去解决: 1)先将数据导入到公共服务比方Kafka或者BOS上,通过两头服务来上传和下载数据, 公共服务保障各VPC能够拜访。 2)VPC如果紧密联系也能够通过网络专线来买通。 计算集群布局接下来对客户的计算集群做布局,这里应用BMR去疾速创立集群。次要思考以三个方面。 首先是BMR集群划分,其中为客户提供多种集群划分模式根据如下:按业务划分,独立应用。不同集群之间是强物理隔离。便于审计资源耗费。在BMR的节点布局上能够反对千台级别规模的集群,平时它也可动静扩缩容和升配。BMR节点类型次要分为三种:主节点,数量比拟少,次要是存元数据和管控。外围节点,通常是用来存HDFS,所以心愿它保持稳定。工作节点,能够进行弹性扩缩容。还能够为不同类型可设置不同规格硬件,以满足业务须要, BMR的资源抉择上次要衡量CPU和内存的比例,其次配置SSD来优化shuffle的IO开销,这里次要应用云磁盘的可靠性和故障恢复能力。其中CPU和内存配比通常思考:通用型,1:4。计算型,1:2。内存型,1:8。BMR组件介绍BMR主节点部署的是传统的Hadoop各种元数据服务,比方NameNode、JournalNode、Zookeeper、ResourceManager等。 外围节点次要是部署如DataNode、HBase的RegionServer这种存储服务,同时也会混合安排一些NodeManager,以充分利用计算资源。 工作节点次要是部署NodeManager,同时也会有一些计算的组件比方像Hive中的Tes,Spark中的Presto。 集群中的存储次要应用CDS,数据会存储到BOS中。 计算存储拆散整体架构次要思考计算和存储拆散的思路,来缩小计算对存储的依赖,进步集群的弹性,以便取得更高的性价比来升高经营的老本。计算存储拆散次要做以下三件事件。 第一件是BOS代替HDFS,这外面次要是把很多非结构化文件存到BOS中,外围离线数仓Hive也存到BOS中,针对HBase革新它的底层把其中Hfile也存到BOS中。第二件是应用主动扩缩容机制,通过后面的存储让外围节点数量最小化,按需扩容工作节点,工作实现后通过主动策略机制及时开释,可应用绝对稳定性差但老本更低的竞价实例。第三件是存储管理应用对象存储数据生命周期管理机制,短期长期的数据进行主动TTL清理,对长期存储的数据进行存储冷热分级,冷数据可能主动下沉到更低成本的介质中。为什么选择对象存储大数据场景数据是与日俱增的,所以存储通常要思考三个方面: 易于扩大。低成本。大数据场景下性能满足需要。BOS在存储弹性、存储老本、存储管理这三个方面都远胜过HDFS。 在存储弹性方面,BOS是按量付费的,存储空间简直有限,而HDFS须要布局机型大小,扩缩容老本高,相比之下对象存储就简略很多。在存储老本方面,BOS通过EC编码技术和规模效应,单GB成本低,而性能优良。冷数据能够专门归档存储,能够存到像磁带、蓝光这样的介质中来进一步取得更低的老本。在存储管理方面,BOS的存储管理功能齐全。能够按业务划分若干Bucket,易于管理权限。配置生命周期规定等主动治理规定。领有监控报表,工具齐全,便于剖析审计应用状况。大数据场景下对象存储性能应用两种办法比照了大数据场景下对象存储性能。 一是比拟传统的SQL剖析,应用10TB的TPC-DS,能够从图表中看出性能基本上没有太大的差距,各有千秋,然而差距又很小。另一种是在HBase在线拜访,On BOS和On两种CDS相比,数据中能够看出差距很小,所以BOS在大数据场景上面是能够满足性能须要的。大数据组件适配对象存储大数据组件适配对象存储的时候做了以下的革新工作: 首先适配Hadoop接口其中包含FileSystem接口和AbstractFileSystem接口保障在门路写法上兼容,之前Hadoop生态外面能间接应用HDFS的门路个别能应用BOS。 其次在BOS数据读写上应用BOS的分块并发上传来进步性能这样做不占用本地缓存间接写入BOS,保障文件传完才可见,这样可能防止存储一些脏数据,确保了操作的原子性。 元数据,BOS相比于其余友商的益处就是单个文件能够保障强一致性,同时还能反对rename。应用List对象名的前缀来实现,如果目录层级很深,在高层级做ls的时候性能较差。然而目录rename不是原子操作,其底层遍历整个目录,而后递归,并发rename每个对象,外部重试尽可能达到最终统一。弹性扩容利用BOS之后能够进行弹性扩缩容,例如图的右侧,从底层采集集群的指标,聚合之后存到监控数据库,而后规定引擎会一直去剖析规定数据库中的指标数据,最初利用各种用户配置的数据规定和策略对节点进行扩缩容治理。 规定引擎分为两种,一种是工夫触发规定,还有一种是监控触发规定,监控规定触发反对节点的资源监控比方CPU或者Hadoop集群队列的监控,而后为了防止规定引起的震荡引入冷却工夫的机制,一般来说每条规定触发5-10分钟之后才会触发下一条规定。 而后在进行节点变更时,思考到存储的稳定性,主动策略不会触发到外围节点的主动扩缩容,次要是针对工作节点,工作节点在扩容的时候会去购买虚机,而后部署yarn服务,而后主动把作业给调度下来,缩容的时候能够确保节点作业工作跑完,不让新的节点调度下来,最初作业跑完之后才会开释这个节点。 指标采集主动扩缩容是十分依赖指标采集,这里设计了一套主动采集的零碎,它会把Agent部署到每一台BMR外面的虚机上,并跟集群放弃一体化部署,而后采集的指标涵盖机器指标、服务指标、集群聚合等各种集群级的指标,最初下发采集工作之后拉取指标数据,并且把这些存到百度云的监控云存储外面。 之后其余的中央就能基于这些指标进行devops的操作,为运维人员和客户提供监控报警,同时也能够反馈到弹性伸缩扩容决策上。 理论利用存算拆散整体利用到具体的业务场景上,须要依据业务制订一些策略比方 规律性的定时报表作业,按工夫扩容,运行完缩容。辅助以集群负载指标,和队列期待指标,来应答更多突发的状况。非核心业务局部利用竞价实例取得更低的老本。整体利用弹性扩缩容之后,老本降落40%。 03数据湖仓建设数据仓库布局首先对客户的数据仓库做一个布局,这里套用一些传统的数仓概念,基本上分为三层: ODS,贴源层,次要用来治理收集整理的原始数据。客户的各种数据,比方日志、关系型数据库、API等,都会通过入湖最终进到ODS层。DW,数据仓库层,个别是比拟典型的库表模式,在此基础 1. uDWD 明细层,寄存明细数据。 2. uDWS 服务层,足够加工的数据,为利用提供服务,保障时延和并发满足要求。DM,数据集市层,其状态偏差API服务,跟利用状态耦合更加严密。典型场景典型的利用场景就在对立元数据的框架下都是一套库表的构造,大略分为两种人员,一种是运维人员,一种是剖析人员。 运维人员次要负责将数据入湖,并且通过ETL对数据进行荡涤、加工等。剖析人员次要是进行初步生产数仓外面的数据,进行一些交互式查问、报表制作之类的操作。对立元数据在这个场景下,咱们为数据提供对立的元数据服务。 这是自研的一套全局元数据服务,其中提供全局的 REST API 服务,十分不便在云上各处拜访而不受网络的限度,它的底层跟Hive,Spark,Presto等买通,相比于原来的Hive元数据能够做到无缝切换,存储底层采纳NewSQL存储,横向扩大能力强,撑持海量库表和分区。有了这样一套对立的元数据之后能够更好地跟下层数据治理服务相结合。 对立元数据外面次要分为两种表构造,一种是物理表,跟hive表差不多,它的数据存在对象存储上,用起来也像Hive。另一种是映射表,通常是面向关系型数据库或者NoSQL,只存储映射规定不存储数据,通过SQL查问的时候底层间接连源库去查问。 访问控制在对立元数据的根底之上,还依据客户的需要制订了访问控制的机制,因为客户要对不同人员做细粒度权限的管控和审计,这里实现了行列权限,实现的思路是: 仿照Ranger的机制,实现成插件的模式,集成到Hive或者Spark引擎中。对引擎提供权限查问接口,让引擎依据情景做判断。同时买通了云IAM和Hadoop UGI体系,这样在页面上的操作同时能够带入到Hadoop集群外面。提供界面化的权限治理流程(受权,审批等)此外还提供数据脱敏机制,将用户密级和数据密级进行定义(L0~L5),用户只能拜访对应密级的数据。 如果用户要拜访比他高的数据就须要进行脱敏拜访,脱敏拜访分为两种: 动态脱敏,入湖时通过ETL可利用脱敏UDF解决。动静脱敏,剖析时选取密级适配的脱敏UDF,做SQL改写。入湖剖析&联邦剖析数据湖剖析首先要剖析湖里的数据,然而很多用户通常有一些存量的数据不想入湖,比方以前购买的传统数仓中的集群,然而业务上又心愿可能把这些数据跟数据湖里的数据一起剖析。这里引入一个联邦剖析的概念,个别通过映射规定将数据源注册成库表模式,而后底下引擎运行SQL时间接查问数据源,这种状况跟入湖一样同时反对丰盛的数据源拜访能力。 联邦剖析的劣势有以下几个方面: 防止拖数据带来的开销,尤其是传统数仓里的数据自身就很大,拖数据会产生计算、网络方面的开销,同时也有实时性问题。比拟适宜拜访小表,维度表。对于数据源原本就是数仓的情景,防止拖数据造成反复耗费。联邦剖析的劣势有以下几个方面: 对数据源有间接的拜访压力,须要审慎布局。性能依赖源库的计算能力,和算子谓词下推的能力。数据入湖数据入湖分为两种。一种是批量入湖,通常都是定时作业的模式,间接扫描源库,写入数据湖存储,批量作业通常都是整库迁徙的场景,所以要依据数据图表构造生成很多批量作业来进行正当的调度来让它整体运行起来,在这个过程之中也反对Spark算子进行数据荡涤。另一种实时入湖,通过数据传输服务DTS,应用CDC技术采集MySQL、Oracle、SQLServer这些关系型数据库的增量日志,而后把这些日志实时写入Kafka,实时写入到数据湖的库表外面,通常还会定期将增量日志合入全量表。 湖仓一体在入湖的时候会遇到一些问题: 传统入湖,须要校验防止引入脏数据,治理老本高,性能差。实时入湖须要 T+1 merge,数据不能及时可见。传统数据库的格局的分区治理在对象存储上性能差,因为它依赖数据存储的各种元数据的治理。这样咱们就引入了湖仓一体的技术,首先采纳湖仓一体的存储格局Iceberg可能带来以下几方面的益处: 反对ACID事务(反对insert,update,delete),防止引入脏数据。对象存储敌对,因为它有一个清单文件去治理外面的文件,所以防止list,rename等升高对BOS元数据的依赖。同时反对Merge on read 实现实时可见。还能通过对立元数据,对立查问入口,多场景工作负载(ad-hoc,报表等)性能优化,保障性能和对立的拜访体验,性能优化次要有两方面:自研存储缓存零碎,通过缓存去减速对对象存储下面数据的拜访。对存储格局进行优化,引入了SortKey机制,拜访特定模式时能够取得更好的性能。对立数据湖剖析在对立元数据的根底上,基于Trino的引擎去做革新,从而实现了对立的数据湖剖析,实现了自研的数据湖剖析引擎。通过对立元数据,将底层Hive表、PALO表和源库都包装成对立的视图造成对立的查问入口,而后应用Presto SQL进行剖析,升高各种SQL的学习老本,而后通过配套的数据资产疾速检索,找到用户想去查问的库表信息,这样就给对立数据湖剖析带来一些益处。其中实现了以下几个方面的外围能力: ...

December 16, 2021 · 1 min · jiezi

关于大数据:RocketMQ-和-Kafka-的差异对比

Broker差别 主从差别: kafka的master/slave是基于partition维度的,而rocketmq是基于broker维度的;kafka的master/slave是能够切换的,而rocketmq不行,当rocketmq的master宕机时,读能被路由到slave上,但写会被路由到此topic的其余broker上。 刷盘: rocketmq反对同步刷盘,也就是每次音讯都等刷入磁盘后再返回,保障音讯不失落,但对吞吐量稍有影响。个别在主从构造下,抉择异步双写策略是比拟牢靠的抉择。 音讯查问:rocketmq反对音讯查问,除了queue的offset外,还反对自定义key。rocketmq对offset和key都做了索引,均是独立的索引文件。 生产失败重试与提早生产: rocketmq针对每个topic都定义了提早队列,当音讯生产失败时,会发回给broker存入提早队列中,每个消费者在启动时默认订阅提早队列,这样生产失败的音讯在一段时候后又可能从新生产。延迟时间适宜提早级别一一对应的,延迟时间是随失败次数逐步减少的,最初一次距离2小时。 当然发送音讯是也能够指定提早级别,这样就能被动设置提早生产,在一些特定场景下还是有作用的。 数据写入: kafka每个partition独占一个目录,每个partition均有各自的数据文件.log;而rocketmq是每个topic共享一个数据文件commitlog因为kafka的topic个别有多个partition,所以kafka的数据写入熟读比rocketmq高出一个量级。但超过肯定数量的文件同时写入,会导致原先的程序写转为随机写,性能急剧下降,所以kafka的分区数量是有限度的。 服务治理: kafka用zookeeper来做服务发现和治理,broker和consumer都会向其注册本身信息,同时订阅相应的znode,这样当有broker或者consumer宕机时能立即感知,做相应的调整;而rocketmq用自定义的nameServer做服务发现和治理,其实时性差点,比方如果broker宕机,producer和consumer不会实时感知到,须要等到下次更新broker集群时(最长30S)能力做相应调整,服务有个不可用的窗口期,但数据不会失落,且能保障一致性。然而某个consumer宕机,broker会实时反馈给其余consumer,立刻触发负载平衡,这样能肯定水平上保障音讯生产的实时性。 Producer差别 发送形式:kafka默认应用异步发送的模式,有一个memory buffer暂存音讯,大数据培训同时会将多个音讯整合成一个数据包发送,这样能进步吞吐量,但对音讯的实效有些影响;rocketmq可抉择应用同步或者异步发送。 发送响应:kafka的发送ack反对三种设置:音讯存进memory buffer就返回;等到leader收到音讯返回,等到leader和isr的follower都收到音讯返回,当然kafka都是异步刷盘。rocketmq都须要等broker的响应确认,有同步刷盘,异步刷盘,同步双写,异步双写等策略,相比于kafka多了一个同步刷盘。 Consumer差别 音讯过滤: rocketmq的queue和kafka的partition对应,但rocketmq的topic还能更加细分,可对音讯加tag,同时订阅时也可指定特定的tag来对音讯做更进一步的过滤。或者向服务器上传一段Java代码,能够对音讯做任意模式的过滤,甚至能够做Message Body的过滤拆分。有序音讯:rocketmq反对全局有序和部分有序,kafka也反对有序音讯,然而如果某个broker宕机了,就不能在保障有序了。 生产确认:rocketmq仅反对手动确认,也就是生产完一条音讯ack+1,会定期向broker同步生产进度,或者在下一次pull时附带上offset。kafka反对定时确认,拉取到音讯主动确认和手动确认,offset存在zookeeper上。 生产并行度:kafka的消费者默认是单线程的,一个Consumer能够订阅一个或者多个Partition,一个Partition同一时间只能被一个消费者生产,也就是有多少个Partition就最多有多少个线程同时生产。 rocketmq消费者分有序生产模式和并发生产模式,有序模式下,一个消费者也只存在一个线程生产;并发模式下,每次拉取的音讯按consumeMessageBatchMaxSize(默认1)拆分后调配给消费者线程池,消费者线程池min=20,max=64。也就是每个queue的并罚度在20-64之间,一个topic有多个queue就相乘。所以rocketmq的并发度比Kafka高出一个量级。 事务音讯:rocketmq指定肯定水平上的事务音讯,以后开源版本删除了事务音讯回查性能,事务机制略微变得没有这么牢靠了,不过阿里云的rocketmq反对牢靠的事务音讯;kafka不反对分布式事务音讯。 生产实时性:kafka是通过短轮训模式拉取音讯,生产实时性取决于轮训距离;rocketmq是通过长连贯模式拉取音讯,当有新音讯时会立刻登程拉取,只有生产能力足够,实时性比价牢靠。

December 15, 2021 · 1 min · jiezi

关于大数据:可视化神器背后的奥秘

本文由百度智能云资深研发工程师——张军在百度开发者沙龙线上分享的演讲内容整顿而成。本次分享将介绍BI剖析背地的技术架构与流程,及可视化图表的智能举荐策略,帮忙大家深刻了解智能化可视化BI的技术与实际。文:张军视频回放:https://developer.baidu.com/l... 本次分享的主题是:智能化可视化BI与大屏揭秘。内容次要分为以下4个方面: 产品介绍可视化剖析技术智能图表举荐智能语音交互01初识Sugar BI百度大数据体系产品架构全景图 百度智能云大数据产品架构全景图共三层:底层通过湖仓数据基础设施(包含湖仓引擎和治理开发)为企业提供数据存储、数据处理、数据开发等能力;中层的数据价值开掘平台,充分利用百度智能大数据技术,实现企业数据资产价值最大化;顶层:即基于底层和中层的技术,帮忙各行各业落地大数据利用落地。Sugar BI作为数据价值开掘平台之一,它是作为数据与用户最间接接触的一个连贯。 疾速搭建专业化BI剖析平台 设计指标:让用户在5分钟之内就能搭建业余的场景化的BI剖析平台搭建流程:增加数据源→创立数据模型→可视化成果制作(包含报表制作&大屏制作)这样简略的步骤让用户非常容易就能搭建一个可视化平台。在这个过程中利用了百度可视化开源组件Apach Echarts,通过拖拽图表组件及数据字段的形式,在5分钟之内就能够搭建数据可视化页面并进行简单的数据分析操作。 对接多种数据源在数据源层面,Sugar BI能够对接的数据源包含: 开放性的数据库:MySQL、SQL Sever、 PostgreSQL、Oracle等。大数据的数据源:国产麒麟(Kylin)等。其余场景中常常会用到的大数据的组件:Hive、Spark、Impala、Presto等。该平台还能够反对Excel/Csv数据的上传,同时还反对对接已有的API并且容许用户动态的输出Json代码来做成果展现。最初还开发内网隧道的性能,能够让内网中数据源的数据通过内网隧道的形式间接对接到云上Sugar的产品中。对于不同的数据源,比方MySQL和SQLserver,还反对两种数据源的跨源穿插剖析。零代码+拖拽式制作报表在产品报表的主编辑页面,所有的组件都是拖拽式的。应用拖拽字段的形式进行数据绑定、全界面化的增加和批改图表组件,简略易用。丰盛的图表配置项,能够让用户零门槛上手。挪动端报表布局主动适配,能够让用户随时随地多端查看SugarBI产品。帮忙真正懂业务的人实现剖析。大屏展现在大屏页面中通过内置数十种大屏模板,Sugar将百度外部业余的UE/UI设计资源赋能给客户,模板包含政务、教育、批发、金融、制作等各行业,整套设计涵盖挪动端与PC端。客户只需简略批改,即可应用。 02可视化技术剖析Sugar BI架构——有AI特色的可视化+BI剖析平台SugarBI在设计的定位是做一个有AI特色的可视化剖析平台。其中次要突出的三个特点别离是AI、BI和可视化。SugarBI的整体架构图都是围绕这三大特点来构建的,它将AI、BI、可视化这样的三个能力进行交融,最终应用容器化的技术进行打包和部署。 BI能力:数据模型+灵便交互+数据计算BI能力方面,Sugar反对对接丰盛的数据源品种,包含excel、各种关系型数据库mysql、oracle等、以及大数据数仓Doris、clickhouse等,一共超过30种数据源,目前在国内是最全,并且反对了 达梦、人大金仓、南大通用、华为GaussDB等国产数据库 数据模型:能够单表、多表join,反对视图以及用户自定义的SQL视图,并可能对字段进行主动的维度和度量的划分。 BI引擎:以在数据模型的技术下来解析用户的交互、进行过滤条件和数据筛选,最终生成可能在数据库上运行的查问语句,包含反对数据的筛选,下钻,联动,还能够反对和URL的参数来做联动。 计算引擎:包含表计算,穿插计算、数据格式化,并且在数据层面也能做监控预警和留存剖析这样的一些比拟深层次的计算。 数据模型市面上其余数据可视化的平台的毛病是须要用户去写SQL语句,而后将SQL语句查问的后果绑定到图标上,这对非技术的人员十分不敌对,因为须要用户懂SQL语句的书写,而且在开发的过程中须要重复的批改SQL语句,这样会导致效率升高。 而在Suger BI产品中,借鉴了BI的做法,将BI与可视化大屏的进行交融。用户是能够抉择写SQL语句,也能够通过数据建模将数据通过拖拽的形式绑定到可视化图表上,所以Sugar产品的定位就是一个产品满足两个产品的需要。 总结起来,Sugar数据模型有以下的劣势: 能够做到用户不须要写任何的SQL语句。能够依据不同的数据源抹平其中不同数据库之间SQL语句的差别。能够在获取数据表字段的时候会主动造成维度和度量的差异,还会主动取辨认天文字段。维度和度量的辨认策略是依据字段的数据类型,而天文字段是依据字段的名称和数据内容来辨别。并且在过程中能够反对手动去调整,能够将度量转化为维度,也能够将维度转化为度量。能够对度量进行惯例的聚合操作,其中包含Sum,Average,Max,Min,等。讲师在分享过程中,以“销售订单数据的展现“为例,演示了建设数据模型、数据可视化等操作。具体步骤可通过:https://developer.baidu.com/l... 回顾。 数据雪花模型在Sugar中多表的Join应用的是雪花模型,能够主动的依据字段来抉择Join的形式。应用最近独特先人寻找法来解决查问的字段来自多个不同表的问题。 数据筛选满足超简单场景的Where筛选在简单场景下做SQL的Where筛选,就是要对数据进行过滤,对于左边非常复杂的Where筛选,Sugar设计了右边的性能可能满足用户非常复杂的交互场景。 聚合查问后的Having筛选Sugar还反对聚合查问后的Having筛选,例如场景是查问年度总销售额大于13万的城市,对应到SQL语句的Having场景,是对数据聚合后再做一个筛选。 过滤组件交互式的数据筛选其中分为页面整体的过滤组件和单个图表的过滤组件。 SQL查问层面的数据计算特点:最终都转化为SQL语句,在数据库层面进行计算。具体可做的计算操作包含: 数据格式转换日期工夫的聚合计算计算字段分桶分组二次计算二次计算是指在SQL查问后果后的再次计算,该计算产生在内存中。具体包含: 数据值映射穿插透视表共计、均值表计算、疾速表计算性能优化Sugar在性能优化方面做了如下尝试: 数据缓存:能够利用Redis,确保同一个SQL只执行一次。针对不同数据源的非凡优化,如Clickhouse的留存计算Retention异步多线程的表计算03智能图表举荐智能图表目标依据数据主动举荐最适宜的图表类型图表类型的切换作为智能语音交互的根底智能图表流程智能图表首先是对系统外部100多种的图表进行形象,从图表中提取特色。而后在图表举荐模块将图表的特色与以后用户输出的特色做一个匹配,之后举荐的图表有一个列表,并对列表中对每一个图表进行打分,最初进行排名将得分最高的图表举荐给用户。 举荐策略图表举荐策略设计,是针对每一个图标设计的,有两个规定:第一个强制规定,是必须要满足的第二个是可选规定,是有这个规定就能够加分。举荐策略是硬性条件和加分条件的组合,强制规定之间做乘法,可选规定之间做加法,而后在每一个规定外面都会设计相应的权重。 规定设计强制规定只有一个,就是为了确保用户须要剖析的每个字段都能在被举荐的图表中有所体现。可选规定针对不同的图表就会不一样,它形容的是: 计算输出字段特色和图表特色对字段需要的类似水平和日期字段无关的规定和度量单位无关的规定04智能语音交互Sugar BI就是要成为可视化BI剖析界的智能助理的角色,能够在智能图表的根底上做智能的语音交互。 讲师在分享过程中,演示了报表中的智能问答交互演示,可通过:https://developer.baidu.com/l... 回顾。 语音问答整体计划问答模型基于数据模型实现的。数据模型中的同义词、举荐问题、维度数据、Schema构造能够送入问答模型,紧接着问答模型就会做NLU(自然语言了解)将数据模型了解透彻。在用户问答的模型中包含两种形式:第一种是能够通过间接的文字输出形式;第二种是能够通过大屏或挪动端的语音输入而后转换为文字。最终问答模型外面是一个文字了解的过程。问答模型最终的输入后果,会将问题主动了解为要查问数据模型的哪些字段并且要做一些什么样的数据筛选比方:排序、聚合运算,最初通过Sugar智能图表的转换过程最终出现一个可视化的后果。 05下一步打算及BI将来方向BI剖析的趋势下一步打算聚焦在智能化剖析的过程上,次要能够分为以下四个品种的剖析: 主动剖析:能够依据数据模型,用户只给定一些维度和度量,就能够主动生成可视化的报表或者大屏页面,而后页面中会主动的生成图表,也会主动增加一些过滤组件,最初用户能够在这个成果的根底上做一些可视化的批改。归因剖析:指某一指标产生的较大的变动的时,可能帮用户主动找到是哪些维度引起的,每个维度的别离影响的贡献度是多少,都能够通过归因剖析来进行量化。异样剖析:指的是数据产生激烈变动时须要找到起因,后续会和归因剖析一起进行。异样剖析个别都是零碎被动剖析而后主动地将异样报进去,所以会联合数据预警,出现异常的时候就被动给用户发预警。预测剖析:指的是在历史数据的根底上,利用机器学习、AI算法等一些策略,对后续的数据走势做出肯定的预测,相当于是一种对将来数据的剖析。这样Sugar就能更好的帮忙用户总结过来,并且还要展望未来,为用户的决策做更好的数据撑持。有了AI剖析和智能化的交互,百度认为传统BI的发展趋势就是“AI+BI”的能力交融!以上是老师的全副分享内容,有问题欢送在评论区提出。 往期举荐 6000字,详解数据仓库明星产品背地的技术神秘 扫描二维码,备注:大数据开发,立刻退出大数据产品&技术交换群。

December 14, 2021 · 1 min · jiezi

关于大数据:大数据基石之Hadoop的读写流程与2X架构

Hadoop读写流程与2.X架构 平安模式 集群启动时的一个状态,处于平安模式的状态下,只向客户端提供文件的只读视图 HDFS的权限 HDFS对权限的管制 只能避免坏蛋做错事 不能避免好人做好事 机架感知策略 咱们须要将正本放在不同的DN节点上,节点也须要肯定的考量 可靠性、可用性、带宽耗费 第一个节点 集群外部(优先思考和客户端雷同节点作为第一个节点) 集群内部(抉择资源丰盛且不忙碌的节点为第一个节点) 第二个节点 抉择和第一个节点不同机架的其余节点 第三个节点 与第二个节点雷同机架的其余节点 第N个节点 与后面节点不反复的其余节点 HDFS写数据流程 宏观流程 客户端向HDFS发送写数据申请 filesystem通过rpc调用namenode的create办法 nn首先查看是否有足够的空间权限等条件创立这个文件,或者这个门路是否曾经存在,权限 有:NN会针对这个文件创建一个空的Entry对象,并返回胜利状态给DFS 没有:间接抛出对应的异样,给予客户端谬误提示信息 3.DFS如果接管到胜利状态,会创立一个对象 FSDataOutputStream的对象给客户端应用 4.客户端须要向NN询问第一个Block寄存的地位 NN通过机架感知策略 (node1 node 2 node8) 5.须要将客户端和DN节点创立连贯 pipeline(管道) 客户端和node1创立连贯 socket node1和node2创立连贯 socket node2 和Node8创立连贯 socket 6.客户端将文件依照块block切分数据,然而依照packet发送数据 默认一个packet大小为64K,Block128M为2048个packet 7.客户端通过pipeline管道开始应用FSDataOutputStream对象将数据输入 客户端首先将一个packet发送给node1,同时给予node1一个ack状态 node1承受数据后会将数据持续传递给node2,同时给予node2一个ack状态 node2承受数据后会将数据持续传递给node8,同时给予node8一个ack状态 node8将这个packet承受实现后,会响应这个ack给node2为true node2会响应给node1 ,同理node1响应给客户端 8.客户端接管到胜利的状态,就认为某个packet发送胜利了,直到以后块所有的packet都发送实现 9.如果客户端接管到最初一个pakcet的胜利状态,阐明以后block传输实现,管道就会被撤销 10.客户端会将这个消息传递给NN,NN确认传输实现 NN会将block的信息记录到Entry,客户端会持续向NN询问第二个块的存储地位,顺次类推 block1 (node1 node2 node8) block2 (node1 node8 node9) … blockn(node1 node7 node9) 当所有的block传输实现后,NN在Entry中存储所有的File与Block与DN的映射关系敞开FsDataOutPutStream ...

December 13, 2021 · 1 min · jiezi

关于大数据:DataPipeline携手云南开放大学以实时数据融合助力高校精细化管理

通过二十多年的倒退,我国各高校信息化建设曾经获得较为突出的成绩,大部分高校实现了网络课程、数字图书馆、虚构实验室以及教学、科研等的管理系统建设。数字校园进入以数据交融共享为代表的新阶段。 近日,云南凋谢大学召开专题会议部署信息化工作。郑毅校长主持会议并指出,学校要进一步欠缺数据治理,建设安全可靠有序的数据共享机制。近期DataPipeline助力云南凋谢大学构建并顺利上线的实时数据交融平台,正是对该诉求的最佳实际答案。 云南凋谢大学是一所由云南省人民政府主办、省教育厅主管,以信息技术为撑持,凋谢教育与高职教育“双模式”倒退,面向整体社会成员发展一生学习服务的省属公办新型高等学校,是全国六所之一、全国中西部惟一的试点建设的凋谢大学。学校依照总部+凋谢学院、学习核心、教学点的形式,建设笼罩全省城乡的办学体系以及辐射南亚东南亚的境外学习核心。 云南凋谢大学目前在全省挂牌成立28所州(市)、行业(企业)凋谢学院,23所县(市、区)学习核心,132个教学点。学校在孟加拉国、马尔代夫、斯里兰卡设立了3个境外学习核心。为能更好地撑持数据中心展现、云南农村振兴学习网学习榜单评比、在线选课、线上考试评测、考勤等教务及政教工作,云南凋谢大学须要买通各教学单位、“云南农村振兴学习网、教务零碎、凋谢教育综合信息服务平台”等各零碎间的壁垒。学校心愿依照校务数据管理职能域要求,梳理部门(学院)生产数据,公布共享数据编目,及时、精确、高效、残缺向数据中台提供实时数据。 云南凋谢大学解决方案架构图 作为一款业余的实时数据交融平台型产品,DataPipeline适配了云南凋谢大学MySQL、MS SQL Server、Oracle在内的多种数据库治理技术,并对数据源建设高效的治理性能,实现近千万条的数据高效治理。平台整合校内各类数据资源,大大晋升教务工作效率,改善学生体验。同时,平台采纳对立的可视化治理页面,提供平台级别的数据管理性能,包含用户权限、数据时效治理和平安管控等方面性能,为运维人员提供直观的数据工作地图,极大节俭了运维工夫和老本,晋升了数据管理效率。该平台的胜利上线无效解决了之前运维压力大、治理危险高的问题,高效开释数据价值。 打消信息孤岛、建设信息标准、整合数据与利用,是目前高校信息化建设广泛提出的重点建设指标。DataPipeline将充分发挥本身技术与教训劣势,以实时数据管理能力助力高校智能化辅助教学及精细化治理,促成欠缺各部门管理工作的数字化、规范化和科学化, 推动高校信息化的全面建设。点我理解DataPipeline更多信息并收费试用

December 10, 2021 · 1 min · jiezi

关于大数据:怎么排查是哪里出现了数据倾斜

Hive 数据歪斜怎么发现,怎么定位,怎么解决少数介绍数据歪斜的文章都是以大篇幅的实践为主,并没有给出具体的数据歪斜案例。当工作中遇到了歪斜问题,这些实践很难间接利用,导致咱们面对歪斜时还是手足无措。明天咱们不扯大篇实践,间接以例子来实际,排查是否呈现了数据歪斜,具体是哪段代码导致的歪斜,怎么解决这段代码的歪斜。当执行过程中工作卡在 99%,大概率是呈现了数据歪斜,然而通常咱们的 SQL 很大,须要判断出是哪段代码导致的歪斜,能力利于咱们解决歪斜。歪斜问题排查数据歪斜大多数都是大 key 问题导致的。如何判断是大 key 导致的问题,能够通过上面办法:1.通过工夫判断如果某个 reduce 的工夫比其余 reduce 工夫长的多,如下图,大部分 task 在 1 分钟之内实现,只有 r_000000 这个 task 执行 20 多分钟了还没实现。留神:要排除两种状况:如果每个 reduce 执行工夫差不多,都特地长,不肯定是数据歪斜导致的,可能是 reduce 设置过少导致的。有时候,某个 task 执行的节点可能有问题,导致工作跑的特地慢。这个时候,mapreduce 的揣测执行,会重启一个工作。如果新的工作在很短时间内能实现,大数据培训通常则是因为 task 执行节点问题导致的个别 task 慢。然而如果揣测执行后的 task 执行工作也特地慢,那更阐明该 task 可能会有歪斜问题。2.通过工作 Counter 判断Counter 会记录整个 job 以及每个 task 的统计信息。counter 的 url 个别相似:http://bd001:8088/proxy/appli...通过输出记录数,一般的 task counter 如下,输出的记录数是 13 亿多: 而 task=000000 的 counter 如下,其输出记录数是 230 多亿。是其余工作的 100 多倍:4.定位 SQL 代码 1.确定工作卡住的 stage 通过 jobname 确定 stage:个别 Hive 默认的 jobname 名称会带上 stage 阶段,如下通过 jobname 看到工作卡住的为 Stage-4:如果 jobname 是自定义的,那可能没法通过 jobname 判断 stage。须要借助于工作日志:找到执行特地慢的那个 task,而后 Ctrl+F 搜寻 “CommonJoinOperator: JOIN struct” 。Hive 在 join 的时候,会把 join 的 key 打印到日志中。如下:上图中的要害信息是:struct<_col0:string, _col1:string, _col3:string>这时候,须要参考该 SQL 的执行打算。通过参考执行打算,能够判定该阶段为 Stage-4 阶段:2.确定 SQL 执行代码确定了执行阶段,即 stage。通过执行打算,则能够判断出是执行哪段代码时呈现了歪斜。还是从此图,这个 stage 中进行连贯操作的表别名是 d:就能够揣测出是在执行上面红框中代码时呈现了数据歪斜,因为这行的表的别名是 d: ...

December 9, 2021 · 1 min · jiezi

关于大数据:共襄信创产业生态建设之力|DataPipeline加入北京信创工委会

近日,通过层层严格审查,DataPipeline正式退出北京信息化协会信息技术利用翻新工作委员会(以下简称“北京信创工委会”),成为会员单位。这既是北京信创工委会对DataPipeline在实时数据管理畛域自主研发能力和翻新成绩的充分肯定,也展示了DataPipeline立足“十四五”开局之年,与上下游生态搭档一道,合力共襄北京信创技术与产业倒退的信心。 DataPipeline会员单位证书 北京信创企业数量居全国首位,根本笼罩产业链所有环节,曾经造成了产业链条欠缺、外围环节突出、整合能力较强的倒退格局。无论是历史担当还是产业根底,北京均有推动信创产业倒退的外围竞争力。北京信创工委会由北京地区从事软硬件关键技术钻研、利用和服务的单位自发组织成立,以“对接国家和北京市重大工作、促成北京信创技术和产业倒退、构建行业良好生态”为主旨,囊括操作系统、芯片、系统集成、中间件、数据库、信息安全、应用软件等行业龙头企业。 DataPipeline总部及研发核心位于北京,作为企业级批流一体数据交融产品、解决方案及服务提供商和该畛域最早布局者,公司在积淀本身技术实力、施展行业教训劣势、凝聚生态力量方面具备重要责任。目前, DataPipeline已服务民生银行、金风科技、威立雅中国、销售易、龙湖地产等总部位于北京的重量级企业,在助力地区示范利用我的项目建设、促成场景利用方面施展了引领者作用。2021年9月,「DataPipeline助力民生银行构建实时数据管理体系」案例胜利入选赛迪研究院《2021中国数字化转型生态建设百佳案例》,为各中央政府深入数字化转型重点行业利用提供了翻新示范根据和先进经验。该我的项目也在“生态延展性、性能全面性、治理敏捷性”方面失去了客户的赞美。(点此回顾) DataPipeline企业级实时数据交融平台 “没有胜利的企业,只有时代的企业。” 在力求打造双循环经济的大背景下,信息技术利用翻新能极大地推动我国经济的高质量倒退。DataPipeline自成立以来,以实时数据管理产品为根基,在“信创+规范”、“信创+技术”、“信创+行业”、“信创+产业”、“信创+人才”等方面攻坚克难全速推动。 ▶在产品技术层面 ,DataPipeline实时数据交融产品为企业级用户提供对立的平台,治理异构数据节点的实时同步与批量数据处理工作,具备“数据全面精确、治理麻利智能、链路稳固高容错”的特点,让客户大大降低数据管理老本,专一数据价值开释。 ▶在规范层面 ,DataPipeline在规范建设及规范评测方面都深度参加。目前,公司已退出“中国电子工业标准化技术协会信息技术利用翻新工作委员会及其中间件工作组”、“CCSA TC601大数据技术标准推动委员会”、“ 北京信息化协会信息技术利用翻新工作委员会”,将参加组织内与数据中间件相干的规范制订工作。同时,DataPipeline实时数据交融平台已通过信通院大数据产品能力评测,历经“数据荡涤/转换、作业管理、平安保障”等共计6大部分、23个我的项目全面严格的技术考核。 ▶在行业层面 ,DataPipeline服务了民生银行、中国人寿(海内)、山东城商行联盟、财通证券、中国石油、吉利团体、星巴克、顺丰等在各自行业信息化程度当先的百余家客户,笼罩银行、证券、保险、基金、能源、制作等多个国民支柱型行业。公司在行业教训、产品成熟度、技术先进性、服务体系化方面均失去了客户的认可与信赖。 ▶在产业层面 ,DataPipeline已与多家支流信创厂商实现产品适配优化,涵盖芯片、操作系统、数据库、大数据、云计算等多个畛域,兼容互认证产品包含鲲鹏920、河汉麒麟、统信UOS、华为GaussDB、巨杉SequoiaDB、TiDB、HashData、西方金信、星环TDH等,满足相干行业高性能、高可用、高稳固、高可控等的能力诉求,可能无力反对重点畛域信息化程度当先的用户实现中间件平安可信。 ▶在人才层面 ,公司的外围团队成员来自谷歌、Yelp、亚马逊、IBM、甲骨文、中科院等国内外知名企业,领有长期从事企业级软件研发的教训,其中业余技术人员占比约60%,领有弱小的面向企业用户提供业余产品和服务的技术力量。同时,公司建设有残缺的产研组织体系,包含“品质管制、进度管制、资金管制、危险管制和文档成绩治理等”在内的欠缺产研制度,以及产研与客户利用的协调机制。 以上致力,是国家鼎力推动信息技术利用翻新背景下DataPipeline顺应时代趋势、不负时代担当的应有之义。将来,DataPipeline将持续保持自主技术创新,聚焦信创重大工作和产业需要,致力成为信创解决方案中不可或缺的一环,与产业链上下游企业协同倒退,实现优势互补、生态共建,助力数字经济产业蓬勃发展。点我理解DataPipeline更多信息并收费试用

December 9, 2021 · 1 min · jiezi

关于大数据:ApacheCN-大数据译文集二-20211206-更新

Hadoop3 大数据分析 零、前言一、Hadoop 简介二、大数据分析概述三、MapReduce 大数据处理四、基于 Python 和 Hadoop 的科学计算和大数据分析五、基于 R 和 Hadoop 的统计大数据计算六、Apache Spark 批处理剖析七、Apache Spark 实时剖析八、Apache Flink 批处理剖析九、Apache Flink 流解决十、可视化大数据十一、云计算简介十二、应用亚马逊网络服务Hadoop 和 R 大数据分析 零、前言一、筹备应用 R 和 Hadoop二、编写 Hadoop MapReduce 程序三、集成 R 和 Hadoop四、应用 Hadoop 流五、应用 R 和 Hadoop 学习数据分析六、应用机器学习了解大数据分析七、从各种数据库导入和导出数据八、附录 a:参考文献Hadoop 深度学习 零、前言一、深度学习导论二、大规模数据的分布式深度学习三、卷积神经网络四、循环神经网络五、受限玻尔兹曼机六、自编码器七、应用 Hadoop 的其余深度学习操作八、附录 1:参考文献Hadoop 集群部署手册 零、前言一、设置 Hadoop 集群——从硬件到发行版二、装置和配置 Hadoop三、配置 Hadoop 生态系统四、爱护 Hadoop 装置五、监控 Hadoop 集群六、将 Hadoop 部署到云Hadoop 基础知识 零、前言一、大数据和 Hadoop 简介二、Hadoop 生态系统三、Hadoop 的支柱——HDFS、MapReduce 和 Yarn四、数据拜访组件——Hive 和 PIG五、存储组件——HBase六、Hadoop 中的数据摄取——SQOOP 和 Flume七、流和实时剖析–Storm 和 SparkHadoop 古代大数据处理 ...

December 8, 2021 · 2 min · jiezi

关于大数据:ApacheCN-大数据译文集-20211206-更新

PySpark 大数据分析实用指南 零、前言一、装置 Pyspark 并设置您的开发环境二、应用 RDD 将您的大数据带入 Spark 环境三、Spark 笔记本的大数据清理和整顿四、将数据汇总成有用的报告五、弱小的 MLlib 探索性数据分析六、应用 SparkSQL 构建大数据结构七、转换和动作八、不变设计九、防止打乱和升高操作老本十、以正确的格局保留数据十一、应用 Spark 键/值利用编程接口十二、测试 ApacheSpark 作业十三、利用 Spark 图形接口Spark 大规模机器学习 零、前言一、Spark 数据分析简介二、机器学习最佳实际三、通过了解数据来了解问题四、通过特色工程提取常识五、监督和非监督学习示例六、构建可扩大的机器学习管道七、调整机器学习模型八、调整您的机器学习模型九、应用流和图数据的高级机器学习十、配置和应用内部库Spark SQL 学习手册 零、前言一、Spark SQL 入门二、应用 Spark SQL 解决结构化和半结构化数据三、将 Spark SQL 用于数据摸索四、将 Spark SQL 用于数据管理五、在流式利用中应用 Spark SQL六、Spark SQL 在机器学习利用中的利用七、在图利用中应用 Spark SQL八、应用 Spark SQL 和 Spark九、应用 Spark SQL 开发利用十、在深度学习利用中应用 Spark SQL十一、针对性能调整 Spark SQL 组件十二、大规模利用架构中的 Spark SQL精通 Spark 2.x 机器学习 零、前言一、大规模机器学习和 Spark 导论二、探测暗物质——希格斯玻色子粒子三、多类分类的集成办法四、应用自然语言解决和 Spark 流预测电影评论五、用于预测和聚类的 word2vec六、从点击流数据中提取模式七、将 GraphX 用于图剖析八、贷款俱乐部的贷款预测精通 Spark 数据迷信 ...

December 8, 2021 · 2 min · jiezi

关于大数据:Redis轻松实现秒杀系统

本文章转自:乐字节文章次要解说:Redis获取更多Java相干材料能够关注公众号《乐字节》 发送:999 缓存Cache缓存的概念缓存是存储在计算机上的一个原始数据复制集,以便于拜访。 Web我的项目常见的缓存场景 缓存击穿概念: 对于一些设置了过期工夫的key,如果这些key可能会在某些工夫点被超高并发地拜访,是一种十分“热点”的数据起因: 缓存在某个工夫点过期的时候,恰好在这个工夫点对这个Key有大量的并发申请过去,该key没有命中,大量申请穿透到数据库服务器解决方案: 对于热点数据,慎重考虑过期工夫,确保热点期间key不会过期,甚至有些能够设置永不过期。应用互斥锁(比方Java的多线程锁机制),第一个线程拜访key的时候就锁住,等查询数据库返回后,把值插入到缓存后再开释锁缓存雪崩概念: 大量的key设置了雷同的过期工夫,导致在缓存在同一时刻全副生效,造成刹时DB申请量大、压力骤增,引起雪崩。缓存服务器宕机,也算做缓存雪崩。起因:大量缓存在同一时间生效;大量申请落到后端DB上;解决方案: 不同的key,设置不同的过期工夫(随机值),让缓存生效的工夫点尽量平均;应用高可用的分布式缓存集群,确保缓存的高可用性 做二级缓存,A1为原始缓存,A2为拷贝缓存,A1生效时,能够拜访A2。缓存穿透概念: 拜访一个肯定不存在的key,缓存不起作用,申请会穿透到DB,流量大时DB会挂掉起因:key被高并发拜访;该key没有命中,去后端DB获取;大量申请穿透到数据库服务器解决方案: 布隆过滤器, 应用一个足够大的bitmap,用于存储可能拜访的key,不存在的key间接被过滤,防止对底层数据存储系统造成压力;拜访key未在DB查问到值,也将空值写进缓存,但能够设置较短过期工夫缓存一致性概念: 当数据时效性要求很高时,须要保障缓存中的数据与数据库中的保持一致,须要保障缓存节点和正本中的数据也保持一致,不能呈现差别景象。(集群同步)起因: 对同一个数据进行读写,在数据库层面并发的读写并不能保障实现程序;产生了写申请A,A的第一步淘汰了cache;A的第二步写数据库,收回批改申请;产生了读申请B,B的第一步读取cache,发现cache中是空的;B的第二步读取数据库,收回读取申请,如果A的第二步写数据还没实现,读出了一个脏数据放入cache;解决方案: 个别会在数据产生更改的时,被动更新缓存中的数据或者移除对应的缓存。Redis的介绍 官网http://www.redis.cn/https://redis.io/Redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它能够用作数据库、缓存和消息中间件。 它反对多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 汇合(sets), 有序汇合(sorted sets) 与范畴查问, bitmaps, hyperloglogs 和 天文空间(geospatial) 索引半径查问。 Redis 内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘长久化(persistence), 并通过Redis哨兵(Sentinel) 和主动分区(Cluster)提供高可用性(high availability) Redis性能 上面是官网的bench-mark数据: 测试实现了50个并发执行100000个申请。设置和获取的值是一个256字节字符串。 后果:读的速度是110000次/s,写的速度是81000次/s Redis历史简介 2008年,意大利一家守业公司Merzia的创始人Salvatore Sanfilippo为了防止MySQL的低性能,亲自定做一个数据库,并于2009年开发实现,这个就是Redis。 从2010年3月15日起,Redis的开发工作由VMware主持。 从2013年5月开始,Redis的开发由Pivotal资助。 阐明:Pivotal公司是由EMC和VMware联结成立的一家新公司。Pivotal心愿为新一代的利用提供一个原生的根底,建设在具备领导力的云和网络公司一直转型的IT个性之上。Pivotal的使命是推广这些翻新,提供给企业IT架构师和独立软件提供商。 反对语言 反对的数据类型 string、hash、list、set、sorted set Redis的装置(SingleNode)装置依赖yum -y install gcc-c++ autoconf automake 下载并上传 解压tar zxvf redis-5.0.3.tar.gz预编译和装置切换到解压目录 ...

December 8, 2021 · 6 min · jiezi

关于大数据:6000字详解数据仓库明星产品背后的技术奥秘

本文由百度智能云高级产品经理——鲁志敬 在百度开发者沙龙线上分享的演讲内容整顿而成。内容深度解读Polo产品的技术架构与产品个性。心愿本次分享可能让听众对Palo有一个根本意识,并把握肯定的数据仓库设计办法。文:鲁志敬视频回放:https://developer.baidu.com/l... 本次分享的主题是:百度数据仓库Palo技术个性解读。内容次要分为以下三个方面: 产品介绍与倒退历程利用场景介绍Palo技术个性解读01产品倒退历程百度数据仓库Palo 是基于业内当先的OLAP数据库 Apache Doris(Powered By Apache Doris) 构建的MPP架构云数据仓库,致力于帮忙企业疾速且低成本地构建极速易用的云上数据分析平台,减速企业数智化过程。 反对规范SQL并齐全兼容MySQL协定仅需秒级甚至毫秒即可返回海量数据下的查问后果无效反对多维分析、实时剖析、交互式剖析等多种数据分析场景倒退历程阶段一:助力外部业务Palo的历史能够追溯到2008年,过后是解决百度凤巢统计报表的专用零碎,随着百度业务飞速发展,外部对系统进行了屡次迭代,逐步承当起百度外部业务的统计报表和多维分析需要,成为百度外部第一个OLAP剖析平台。 阶段二:做大做强 2013 年,Palo进行了 MPP 框架的降级,2017 以百度 Palo 的名字在 GitHub 上进行了开源,于此同时在百度智能云上公布了云端托管服务“百度数据仓库Palo”。2018 年把Palo奉献给 Apache 基金会,更名为Apache Doris。 02利用场景数据分析需要的演进趋势查问后果能够疾速响应晋升查问效率始终是剖析型数据库倒退的第一能源。从过来查问一个报表、跑SQL须要半个小时、几十分钟到当初的秒级甚至毫秒级,这给带来效率的晋升是微小的。实时业务洞察数据价值会随时间推移而升高,T+1曾经不能满足业务对高时效性的要求。灵便需要应答业务趋势预知与零碎建设滞后的矛盾,需要交付周期较长。全民化的数据摸索更低的剖析门槛和学习老本,更高的并发反对。Palo在企业大数据体系中的多种利用场景数仓查问减速解决传统数仓和数据平台查问效率低下的窘境,达到海量数据低至毫秒/秒级查问耗时,海量数据无缝利用,极大幅度减速数据决策效率。 实时数仓构建反对流式数据高效导入、业务指标实时聚合,保障业务数据得以实时洞察,并能够缩小数据处理链路、对立数据流向,简化大数据平台架构。 多源联邦查问构建跨多个数据源的对立查问入口,实现实时数据和离线数据的联邦剖析,满足数据分析人员更多元化的查问需要。 交互式数据分析以借助一些BI可视化工具的能力去构建交互式数据分析利用,对海量数据进行自助探查和多维度剖析,实现对业务的深层摸索和疾速决策。 03技术个性解读零碎架构在架构方面,Palo只有两个主过程模块。一个是 Frontend(FE),另一个是Backend(BE)。 Frontend(FE)能够了解为Palo 的管控节点,次要负责用户申请的接入、查问打算的解析、元数据的存储和集群治理相干工作。 Backend(BE)次要负责数据存储、查问打算的执行。 这两类过程都是能够横向扩大的。除此之外,Palo不依赖任何第三方零碎(如 HDFS、Zookeeper等)。这种高度集成的架构设计极大的简化了一款分布式系统的运维老本。 极致性能背地的核心技术对于一个剖析型数据库,最外围的三个组成部分就是存储引擎、查问引擎和查问优化器,这也是Palo极致性能的决定因素。 存储引擎 存储格局:列式存储在剖析场景,列存往往只会读取须要的列,跳过无用数据,会比行存扫描更少的数据量,缩小IO开销以进步性能。同时数据依照列进行间断存储,因为类型雷同,因而能够取得极高的压缩率,节俭磁盘空间。自适应编码对不同的列类型还提供了不同的编码方式,如 INT 类型会应用 BitShuffle 的编码方式,而字符串类型会应用字典编码。更进一步的,Palo还会主动依据列的值来切换编码类型。在编码根底上还进一步通过LZ4算法进行压缩,最高提供1:8的数据压缩比。也就是说,10G数据进入Palo可能只占用1G多,这样能够极大节俭磁盘空间。这种列式的存储组织模式还为下层计算的性能优化提供了很大的便当,特地是在向量化查问和提早物化等方面。 文件组织文件组织模式上,Palo的文件格式和 Parquet 比拟相似。一个数据版本会被宰割成最大 256MB 一个的 Segment,每个 Segment 对应一个物理文件。Segment 通常分为 Header、DataRegion、IndexRegion、Footer 这几个区域。Data Region 用于按列存储数据,每一列又被分为多个 Page。Index Region 则负责存储数据的索引,Palo提供了丰盛的索引构造来帮忙减速数据的读取和过滤。 索引类型索引的类型大体能够分为智能索引和二级索引两种,其中智能索引是在 Palo 数据写入时主动生成的,无需用户干涉,包含前缀稠密索引、Min Max索引等。而二级索引是用户能够选择性的在某些列上增加的辅助索引,须要用户自主抉择是否创立,比方像Bloom Filter、BitMap倒排索引等。查问引擎Palo的查问引擎是基于 MPP 的火山模型,是从晚期版本的 Apache Impala 演变而来,也是在各种数据库系统中利用最宽泛的模型。 ...

December 8, 2021 · 2 min · jiezi

关于大数据:Kafka之为什么需要消息队列

大数据课程中在解说音讯队列的时候也说过为啥须要音讯队列,“ 音讯队列”是在音讯的传输过程中保留音讯的容器,当零碎中呈现“生产“和“生产“的速度或稳定性等因素不统一的时候,就须要音讯队列,作为形象层,弥合单方的差别。1)解耦: 容许你独立的扩大或批改两边的处理过程,只有确保它们恪守同样的接口束缚。2)冗余:音讯队列把数据进行长久化直到它们曾经被齐全解决,通过这一形式躲避了数据失落危险。许多音讯队列所采纳的”插入-获取-删除”范式中,在把一个音讯从队列中删除之前,须要你的解决零碎明确的指出该音讯曾经被处理完毕,从而确保你的数据被平安的保留直到你应用结束。3)扩展性:因为音讯队列解耦了你的处理过程,大数据培训所以增大音讯入队和解决的频率是很容易的,只有另外减少处理过程即可。4)灵活性 & 峰值解决能力:在访问量剧增的状况下,利用依然须要持续发挥作用,然而这样的突发流量并不常见。如果为以能解决这类峰值拜访为规范来投入资源随时待命无疑是微小的节约。应用音讯队列可能使要害组件顶住突发的拜访压力,而不会因为突发的超负荷的申请而齐全解体。5)可恢复性:零碎的一部分组件生效时,不会影响到整个零碎。音讯队列升高了过程间的耦合度,所以即便一个解决音讯的过程挂掉,退出队列中的音讯依然能够在零碎复原后被解决。6)程序保障:在大多应用场景下,数据处理的程序都很重要。大部分音讯队列原本就是排序的,并且能保证数据会依照特定的程序来解决。(Kafka保障一个Partition内的音讯的有序性)7)缓冲:有助于管制和优化数据流通过零碎的速度,解决生产音讯和生产音讯的处理速度不统一的状况。8)异步通信:很多时候,用户不想也不须要立刻解决音讯。音讯队列提供了异步解决机制,容许用户把一个音讯放入队列,但并不立刻解决它。想向队列中放入多少音讯就放多少,而后在须要的时候再去解决它们。

December 8, 2021 · 1 min · jiezi

关于大数据:生产队灯火通明-尚硅谷Maxwell视频教程发布

摘要:生命不息,奋斗不止,彪悍的人生永不言弃。 学大数据的小伙伴们, 垒哥的Atlas和Kylin视频看完了吗? 放心你没了学习材料放荡腐化, 垒哥又带着新视频来啦! 我问垒哥:今晚不喝酒行吗? 垒哥说:行! 我问垒哥:今晚不吃饭行吗? 垒哥说:行! 我问垒哥:今晚不撸视频行吗? 垒哥摇了点头:No Way! 垒哥坐飞机过安检时, 金属探测器响个不停, 皮带脱了拎着裤子过都不行, 因为……设施检测到了他钢铁般的意志。 垒哥傲然挺立:I am Iron Man! 垒哥苦口婆心地和我话聊: 一个程序员的生命该当这样度过, 当他回首职业生涯的时候, 他不因没看视频虚度年华而懊悔, 也不因技术太渣碌碌无为而耻辱。 垒哥,学到什么时候是个头啊? 他点了根烟,面朝大屏悠悠说了一句: 尚硅谷的视频就像查某湖的鱼, 阳某湖的蟹,某常的大米, 82年的某菲红酒一样…… 永远不会没,要多少有多少, 惟一的区别是,咱们的视频都是真的。 生命不息,奋斗不止! 你看,我怕你最近不天天向上了, 连夜撸了一套带劲的小视频。 我:聊着天咋就入手了,你不要过去啊! 垒哥:你嘴上说不要,身材却很诚恳。 缩什么缩,看就完了: 尚硅谷Maxwell视频教程公布! Maxwell是一个轻量级的MySQL数据抓取软件,在大数据畛域有十分宽泛的利用。能够实时读取MySQL二进制日志Binlog,并生成JSON格局的音讯,作为生产者发送给Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。 本套教程以Maxwell的底层原理开展解说,粗疏地介绍了Maxwell的装置部署及常见利用,具体解说了如何实现MySQL数据的采集,并将数据别离发送至控制台与Kafka。教程内容详尽,操作简略分明,让你轻轻松松2个小时把握Maxwell! https://www.bilibili.com/vide... 尚硅谷公众号聊天窗口发暗号:Maxwell,收费获取全套教程! 教程目录: 01.Maxwell-课程简介 02.Maxwell-内容概述 03.Maxwell-工作原理和MySQL的binlog介绍 04.Maxwell-Maxwell和canal的比照 05.Maxwell-Maxwell的装置 06.Maxwell-开启MySQL的binlog日志 07.Maxwell-初始化Maxwell元数据库 08.Maxwell-两种启动形式 09.Maxwell-案例1-监控MySQL数据输入到控制台 10.Maxwell-案例2-监控MySQL数据输入到kafka(多分区) 11.Maxwell-案例3-监控MySQL指定表数据输入(过滤) 12.Maxwell-案例4-监控MySQL指定表数据全量输入(数据初始化) 咱们趋行在人生这个亘古的旅途, 在崎岖中奔跑,在挫折里涅槃, 发愁缠满全身,苦楚飘洒一地。 咱们累,却无从止歇; 咱们苦,却无奈回避。 穷达皆由命,何劳发叹声。 但知行坏事,莫要问前程。 冬去冰须泮,春来草自生。 请君观此理,天道甚明显。 你多学一样本事, ...

December 8, 2021 · 1 min · jiezi

关于大数据:Flink多并行度下WaterMark的设计区别

问题的提出 对于WaterMark设计的地位是否会影响窗口的失常开闭? 上面我模仿了两种情景(source并行度为1,map并行度为2),别离是1.在source后设置watermark,通过map后开窗2.在map后设置watermark,而后开窗 ps: 上面的两种代码我都设置了天然增长的watermark,窗口工夫都是5秒,只是设置watermark的地位不同 watermark是testWM对象的ts字段*1000代码一:在Source后增加WaterMarkpublic class WMTest { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStreamSource<String> source = env.socketTextStream("localhost", 9999); // TODO: 2021/12/1 在source后设置watermark SingleOutputStreamOperator<String> sourceWithWM = source.assignTimestampsAndWatermarks(WatermarkStrategy .<String>forMonotonousTimestamps() .withTimestampAssigner(new SerializableTimestampAssigner<String>() { @Override public long extractTimestamp(String element, long recordTimestamp) { String[] split = element.split(","); return Long.parseLong(split[2]) * 1000; } })); // TODO: 2021/12/1 设置map并行度为2 SingleOutputStreamOperator<testWM> mapDS = sourceWithWM.map(r -> { String[] split = r.split(","); return new testWM(Integer.parseInt(split[0]), Integer.parseInt(split[1]),Long.parseLong(split[2])); }).setParallelism(2); SingleOutputStreamOperator<String> resultDS = mapDS.keyBy(r -> r.getId()) .window(TumblingEventTimeWindows.of(Time.seconds(5))) .process(new ProcessWindowFunction<testWM, String, Integer, TimeWindow>() { @Override public void process(Integer integer, Context context, Iterable<testWM> elements, Collector<String> out) throws Exception { out.collect("我关窗啦"); } }); resultDS.print(); env.execute();}}@Data@AllArgsConstructorclass testWM{ ...

December 3, 2021 · 2 min · jiezi

关于大数据:企业数字化转型的四个阶段星环科技自研数据云平台全部搞定

数字化转型能够分成信息化、数据资产化、数据业务化、数据生态化四个阶段,任何企业、任何行业想要全面数字化转型都要通过这四个阶段。企业在信息化阶段产生海量数据,在数据资产化阶段把信息化阶段产生的数据集中治理造成数据资产,在数据业务化阶段又须要第二阶段造成的数据资产来驱动业务自身,而到了数据生态化阶段,数据曾经不再只服务于某个组织或者某个企业,而是作为生产因素开始在组织之间、企业之间流通,施展出更大的价值。这四个阶段环环相扣,缺一不可,基于这四个阶段的底层技术撑持也须要同步降级,于是,数据云应运而生。 目前,大型企业广泛不足可能满足多租户、弹性、灵便的数字化基础设施。传统烟囱式零碎架构导致资源重复投入、数据孤岛等问题,很难实现数字化转型四个阶段的残缺演进。而星环科技大数据云平台 Transwarp Data Cloud (TDC)以数据、模型和利用三者为外围,以云原生技术为根底,构建数据 PaaS,剖析 PaaS 和利用 PaaS ,解决企业各个阶段的数字化问题。 星环科技大数据云平台 TDC 作为业界数据云先驱,2015 年就公布了云原生操作系统 TCOS,2018 年公布 TDC 1.0 版本。星环科技比国外厂商早 1 到 2年提出了数据云架构和产品。通过多个版本的打磨和迭代,数据云曾经在多个行业胜利落地,星环科技数据云 TDC 取得上海大数据中心、江苏省农信等大客户的认可,次要归功于 TDC 扎实过硬的关键技术,其中包含: 高性能、高性价比的大数据存储和剖析能力 星环科技数据云 TDC 能够通过整个平台的计算、存储能力以及数据云产品架构的优化,为大数据服务提供高性能的存储和剖析能力。同时,也基于整个数据云平台底层资源的复用和服务的无效调度,为大数据的存储和计算提供更高性价比的实现。 数据,剖析和利用 PaaS 三者对立 星环科技数据云 TDC 将星环科技的大数据和 AI 能力以 PaaS 云服务模式提供给企业,同时也提供了针对企业应用的部署,运行和治理能力,实现了数据,剖析和利用 PaaS三者对立。 云原生调度实现数据与计算局部性 为了兼顾弹性和性能,星环 科技TDC 把分布式计算层和存储层对立在一个集群中,依据计算对存储节点的计算局部性需要,将它们调度到同一个物理节点上,实现高效计算。当存储节点计算资源有余时,也能够应用近程的计算单元。这种架构兼顾了性能和弹性需要的均衡,同时可极大地晋升资源利用率。 分布式计算执行单元场景化扩缩容 以潮汐计算为例,星环 科技TDC 能够依据业务的特点,从工夫的维度来做扩缩容计划,白天交易型计算需要增多的时段开始主动扩容 OLTP 服务,早晨剖析型计算需要增多的时候开始扩容 OLAP 服务,从而无效利用集群资源,实现不同时间段的需要。另外,星环科技 TDC 还能够基于负载做扩缩容,当相应的计算负载减少时,对计算单元做扩容,当计算负载缩小时缩容,从而轻松应答业务波峰波谷场景。 联邦数据云平台撑持企业数字化转型 企业用户为了业务和数据的安全性,个别会有多个数据中心承载业务,包含多个公有云数据中心及私有云,星环科技数据云 TDC 联邦云解决方案通过将跨多个数据中心甚至私有云的数据、利用和基础设施资源进行对立治理,协同治理企业外部已有的资源和数据,从而构建一套残缺、对立、互联互通的数字化基础设施。TDC 联邦云以买通企业数据与利用,构建数字化利用为次要指标,满足各种数据管理标准要求,兼顾业务灾备等需要,通过一套 TDC 联邦数据云平台撑持企业数字化转型。 反对 GPU 独占与共享调度 企业的 GPU 资源, 在共享调度实现之前,只能整块应用,造成了资源的极大节约。TDC 2.4 本次降级实现了反对 GPU 共享调度,让 GPU 资源利用更正当。星环科技 TDC 能够反对单机多 GPU,多机多 GPU 的对立治理、高效的调配以及正当的布局和应用。对于利用而言,星环 科技TDC 能够反对 GPU 的独占,保障在模型训练场景中对 GPU 的高应用要求,同时也反对单块 GPU 的共享,以晋升 GPU 资源的利用率。 ...

December 2, 2021 · 1 min · jiezi

关于大数据:基于星环科技大数据平台-辽宁城市建设职业技术学院打造智慧校园

当今世界,倒退职业教育曾经成为各国应答危机、促成待业、迎接新工业革命挑战的共同行动。同时数字化技术的疾速倒退,扭转着学习和教育,将成为职业教育零碎整体改革与翻新倒退的策略抉择。 星环科技与北京点为信息科技有限公司单干,为辽宁城市建设职业技术学院构建基于大数据平台的数据中心,实现全量数据的治理,撑持学院以人为本的教育理念,满足学生个性化倒退的需要,促成职业教育的倒退。 用户与我的项目背景 辽宁城市建设职业技术学院是经辽宁省政府批准、国家教育部备案的公办全日制一般高等专科院校,省级示范校。现有教职工330余名,全日制在校生6000多名,共开设路线与桥梁工程技术、建筑工程技术等城市建设行业相干的20余个业余。 学院立足沈阳,面向辽宁,辐射全国,致力造就适应城市建设和区域经济倒退须要,懂技术、会治理、能操作的建设行业急需的高素质技术技能人才,为振兴西南老工业基地、建设漂亮中国做出踊跃奉献。 在国家《教育现代化2035》、《教育信息化2.0行动计划》、《教育信息化十年倒退布局(2011-2020)》等对教育信息化建设的倒退要求的领导下,高职院校对信息化建设的需要日益进步,使得以“数据共享、业务整合、一站式服务、打消信息孤岛和利用孤岛、解决遗留零碎为指标”等的第一代数字化校园,曾经不能齐全满足学院信息化倒退的需要。 如何可能更好地撑持以人为本的教育理念,满足学生个性化倒退的需要,体现教育的外围价值观,曾经成为高职院校信息化建设迫切需要解决的问题。 需要与挑战 辽宁城市建设职业技术学院的信息化通过多年建设,依靠于校园网的信息资源和利用零碎也从无到有、逐步丰盛和欠缺,在教育教学和学院迷信倒退中的推动作用日益显著。 学院建成的教务教学、实训实习、学工、图书、资产、财务、OA、一卡通、人事等重要信息系统,在部分业务范围内进步了管理效率,然而并不能达到从全校整体上买通数据共享、通过数据之间的关联剖析为学院提供决策的成果。 综合剖析,目前的信息系统存在的问题次要有以下几个方面: ·信息不足无效共享,各自零碎造成数据孤岛; ·标准规范建设与对立信息编码方面须要进一步提高; ·不足面向师生群体的个体视角服务; ·综合决策须要信息化的全面撑持等。 在本次合作项目中,由星环科技提供大数据平台基础设施,北京点为基于丰盛的行业教训负责我的项目的施行。次要需要包含: ·构建基于大数据平台的数据中心,实现全量数据的治理,进行大数据的采集、荡涤、转换、加工、元数据管理等,打造扎实的数据中心基础设施。 ·实现校园对立身份认证,构建以身份驱动的全域业务中台,充沛撑持学校部门业务、部门间协同业务、院系业务的信息化、流程化、个性化以及可持续性,辐射撑持师生双创流动以及学科建设的生态倒退。 ·建设智能服务门户,将扩散在各畛域的流程无效地整合起来,在帮忙各零碎无效地实现流程贯通和数据整合的同时,造成一个真正意义的校园一站式业务流程的网上服务大厅。 ·建设挪动门户大厅,为不便校内师生依据本身状况自主抉择,既有B/S又有C/S架构的客户端,客户终端至多提供Android版、iOS版、Web版,并反对微信企业号、钉钉与易班多版本能力。 解决方案 星环科技与北京点为单干,为辽宁城市建设职业技术学院提供了技术解决方案。 计划中,采纳了星环科技大数据平台与开发工具,以星环科技极速大数据平台TDH为依靠,提供关系型剖析引擎Inceptor、实时流解决引擎Slipstream、宽表数据库Hyperbase、大规模搜索引擎Scope、数据迷信平台Discover,以及数据监控运维服务、非结构化平安与资源管理服务、容器以及开源组件反对。同时提供了数据库开发工具Waterdrop、大数据整合工具Transporter和大数据治理工具Governer等星环科技大数据开发工具。 通过数据中心收集校园内的智慧教学、智慧治理、智慧服务等各类业务数据以及互联网数据。基于教育部规范制订学院的大数据规范,通过大数据技术进行数据的采集、荡涤、转换、转载、刷新,并通过人工数据补录、爬虫等技术实现全数据源的采集,实现零碎的集成和各个系统之间的数据共享。在此基础上,建设数据仓库,在寄存大量数据的同时无效地治理数据。通过对数据的剖析建模,实现对业务的反对。通过治理驾驶舱、各类报表图表展示及自定义的即时查问提供无效的决策反对、预警预测、品质改良,并可应用PC端、挪动端、微信端、大屏等多种终端展示模式,实现随时随地的应用体验。 计划中数据中心兼容支流的Linux操作系统(SuSe、RedHat、CentOS)及国产操作系统,符合国家信创政策的要求。同时,零碎采纳B/S构造,反对Chrome、IE、Firefox、360、Edge等支流浏览器拜访,满足师生的应用需要。 星环科技的技术计划领有泛滥劣势: 零碎实现数据结构设计和面向平台的全局数据建模,在整合各类结构化、半结构化及非结构化数据根底上,建设一体化数据管理平台的整合服务,通过采纳BI、报表服务技术实现综合性查问、统计及报表性能。 提供欠缺的零碎运行监控性能,反对对系统的资源占用、用户拜访等的统计分析,反对对系统运行异样情况的报警。思考到零碎的平安和稳固,且具备多用户多任务的环境适应能力,提供多终端、多语言的反对。 零碎可能在大规模用户的拜访状况下依然可能提供高速运行的服务,最高可反对20000人的同时在线拜访,10000人的同时并发。 数据中心平台搜索引擎反对综合搜寻毫秒级响应,反对含糊搜寻秒级响应,反对关键字搜寻毫秒级响应,并发数10000以上。 数据中心平台数据处理,简略过滤业务,反对单节点单颗CPU Core 20MB/s的解决能力。工夫窗口统计业务,反对单节点单颗CPU Core 10MB/s的解决能力。简单逻辑业务,如流和表关联,反对单节点单颗CPU Core 2MB/s的解决能力。 利用成果与价值 该我的项目帮忙辽宁城市建设职业技术学院实现三大翻新指标: 全量大数据+微服务,实现数据、业务、服务三大整合,实现信息化撑持校园整体智慧化。基于全量的大数据环境设计微服务,就是要突破局限在业务数据环境中的业务零碎设计的思路,以智慧化服务为指标,以微服务为切入点,重构与再造传统业务模型,从而逐渐构建起智慧校园服务体系。 实现行政化到服务化的转变。职业教育信息系统传统建设思路是以行政部门治理类需要为次要导向,无奈防止用户体验差、使用率低等顽疾。解决问题的基本在于转变现有建设思路,不再局限于行政化、治理化的信息化建设,以平台化的思路,实现垂直利用到综合服务的转型,面向宽广学生、老师、职工进行服务化的革新,提供高用户体验,造成全笼罩的利用,实现办事“最多跑一次”,施展信息化建设的真正价值,让全校师生在包含治理、教学、生存、工作、科研、社交等各个领域体验到信息化建设带来的便当和价值。 全面实现大数据撑持综合决策。传统模式下高校信息化建设实现后,信息中心及各级管理者只能从信息系统中获取对应的业务后果数据。对于最终用户来说,信息系统无奈采集其在零碎应用过程中的行为数据,学校的信息化建设积攒的大量数据无奈施展真正的价值。为了扭转这一现状,须要扭转现有的信息系统应用过程,基于服务化的全面推广,积攒大量的行为数据、流程数据,并辅以自动化的数据分析和数据展示工具,在校内造成有针对性的数据分析模型,对校内数据进行无效剖析,为各级管理者提供决策反对。 另外,星环科技的品牌、产品的性能和易用性失去客户及合作伙伴的认可。基于星环科技提供的极速大数据平台TDH打造的数据中心平台,成为辽宁城市建设职业技术学院全面的数据源,提供丰盛接口向外共享数据。同时反对大规模并发执行的数据加工工作,可能解决海量的数据内容。通过数据中心的建设,在买通各业务零碎数据的同时,积淀大量有价值的数据,将来会逐渐发展主题剖析等服务,服务学院的倒退。

December 2, 2021 · 1 min · jiezi

关于大数据:描述一下Spark的DAG原理

DAG(Directed Acyclic Graph)有向无环图,Spark中应用DAG对RDD的关系进行建模,形容了RDD的依赖关系,这种关系也被称之为lineage"血统",RDD的依赖关系应用Dependency保护,Dependency分为宽依赖(一个父RDD被多个子RDD分区应用,有shuffle)和窄依赖(一个父RDD只被一个子RDD分区应用),DAG在Spark中对应的实现为DAGScheduler。 用户提交的Flink Job会被转化成一个DAG工作运行。一个Flink工作的DAG生成计算图大抵经验以下三个过程: StreamGraph最靠近代码所表白的逻辑层面的计算拓扑构造,依照用户代码的执行程序向 StreamExecutionEnvironment增加StreamTransformation形成流式图。JobGraph从、StreamGraph生成,将能够串联合并的节点进行合并,设置节点之间的边,安顿资源共享slot槽位和搁置相关联的节点,上传工作所需的文件,设置检查点配置等。相当于通过局部初始化和优化解决的工作图。 ExecutionGraph由JobGraph转换而来,蕴含了工作具体执行所需的内容,是最贴近底层实现的执行图。理解更多大数据培训相干技术内容欢送关注小编!

December 2, 2021 · 1 min · jiezi

关于大数据:尚硅谷数仓实战之1项目需求及架构设计

@TOC 数仓笔记 数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS 尚硅谷数仓实战之1我的项目需要及架构设计 尚硅谷数仓实战之2数仓分层+维度建模 尚硅谷数仓实战之3数仓搭建 尚硅谷数据仓库4.0视频教程 B站中转:2021新版电商数仓V4.0丨大数据数据仓库我的项目实战百度网盘:https://pan.baidu.com/s/1FGUb... ,提取码:yyds 阿里云盘:https://www.aliyundrive.com/s... ,提取码:335o第2章 我的项目需要及架构设计需要剖析用户行为数据采集平台搭建业务数据采集平台搭建数据仓库维度建模业务埋点即席查问工具,随时进行指标剖析集群监控,异样报警元数据管理品质监控权限治理我的项目框架技术选型思考因素:数据量大小、业务需要、行业内教训、技术成熟度、保护老本、总成本运算 相干技术列举: 数据流程设计依据需要抉择适合的技术,设计规划具体的数据仓库架构流程 框架版本选型 尚硅谷测试稳固适配的版本 服务器选型 集群规模 集群资源规划设计在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产工作,测试集群用于上线前代码编写和测试。 1)生产集群 (1)耗费内存的离开(2)数据传输数据比拟严密的放在一起(Kafka 、Zookeeper)(3)客户端尽量放在一到两台服务器上,不便内部拜访(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)12345678910nnnndndndndndndndndn rmrmnmnmnmnmnmnm nmnm zkzkzk kafkakafkakafka FlumeFlumeflume HbaseHbaseHbase hivehive mysqlmysql sparkspark AzkabanAzkaban ESES 2)测试集群服务器布局 ...

December 1, 2021 · 2 min · jiezi

关于大数据:Flink-是如何统一批流引擎的

通常咱们在 Flink 中说批流一体指的是这四个方向,其中 Runtime 便是 Flink 运行时的实现。 数据交换模型Flink 对于流作业和批作业有一个对立的执行模型。 Flink 中每个 Task 的输入会以 IntermediateResult 做封装,外部并没有对流和批两种作业做一个明确的划分,只是通过不同类型的 IntermediateResult 来表白 PIPELINED 和 BLOCKING 这两大类数据交换模型。 在理解数据交换模型之前,咱们来看下为什么 Flink 对作业类型不作辨别,这样的益处是什么? 如上图所示,如果咱们有一个工作须要将批式作业执行后果作为流式作业的启动输出,那怎么办?这个作业是算批作业还是流作业? 很显然,以咱们的常识是无奈定义的,而现有的工业界的方法也是如此,将这个作业拆分为两个作业,先跑批式作业,再跑流式作业,这样当然能够,然而人工运维的老本也是足够大的: 须要一个外界存储来治理批作业的输入数据。须要一个反对批流作业依赖的调度零碎。如果冀望实现这样一个作业,那么首先执行这个作业的计算引擎的作业属性就不能对批作业和流作业进行强绑定。大数据培训那么 Flink 是否实现这样的需要呢?咱们先来看看数据交换的具体细节,最初再来一起看看这个作业的可行性。 咱们以 PIPELINED 数据交换模型为例,看看是如何设计的: PIPELINED 模式下,RecordWriter 将数据放入到 Buffer 中,依据 Key 的路由规定发送给对应的 Partition,Partition 将本人的数据封装到 Reader 中放入队列,让 Netty Server 从队列中读取数据,发送给上游。 咱们将数据交换模式改为 BLOCKING,会发现这个设计也是同样可行的。Partition 将数据写入到文件,而 Reader 中保护着文件的句柄,上游工作完结后调度上游工作,而上游工作通过 Netty Client 的 Partition Request 唤醒对应的 Partition 和 Reader,将数据拉到上游。 调度模型有 LAZY 和 EAGER 两种调度模型,默认状况上流作业应用 EAGER,批作业应用 LAZY。 EAGER这个很好了解,因为流式作业是 All or Nothing 的设计,要么所有 Task 都 Run 起来,要么就不跑。 ...

December 1, 2021 · 1 min · jiezi

关于大数据:数据仓库和数据集市ODSDWDWDDWMDWSADS

@TOC 数据流向 利用示例 何为数仓DWData warehouse(可简写为DW或者DWH)数据仓库,是在数据库曾经大量存在的状况下,它是一整套包含了etl、调度、建模在内的残缺的理论体系。 数据仓库的计划建设的目标,是为前端查问和剖析作为根底,次要利用于OLAP(on-line Analytical Processing),反对简单的剖析操作,偏重决策反对,并且提供直观易懂的查问后果。目前行业比拟风行的有:AWS Redshift,Greenplum,Hive等。 数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好筹备,这些筹备蕴含:荡涤、本义、分类、重组、合并、拆分、统计等 次要特点面向主题[附录] 操作型数据库组织面向事务处理工作,而数据仓库中的数据是依照肯定的主题域进行组织。主题是指用户应用数据仓库进行决策时所关怀的重点方面,一个主题通过与多个操作型信息系统相干。集成 须要对源数据进行加工与交融,对立与综合在加工的过程中必须打消源数据的不一致性,以保障数据仓库内的信息时对于整个企业的统一的全局信息。(关联关系)不可批改 DW中的数据并不是最新的,而是来源于其余数据源数据仓库次要是为决策分析提供数据,波及的操作次要是数据的查问与工夫相干 处于决策的须要数据仓库中的数据都须要表明工夫属性与数据库的比照DW:专门为数据分析设计的,波及读取大量数据以理解数据之间的关系和趋势数据库:用于捕捉和存储数据个性数据仓库事务数据库适宜的工作负载剖析、报告、大数据事务处理数据源从多个起源收集和标准化的数据从单个起源(例如事务零碎)捕捉的数据数据捕捉批量写入操作通过依照预约的批处理打算执行针对间断写入操作进行了优化,因为新数据可能最大水平地进步事务吞吐量数据标准化非标准化schema,例如星型Schema或雪花型schema高度标准化的动态schema数据存储应用列式存储进行了优化,可实现轻松拜访和高速查问性能针对在单行型物理块中执行高吞吐量写入操作进行了优化数据拜访为最小化I/O并最大化数据吞吐量进行了优化大量小型读取操作为何要分层数据仓库中波及到的问题: 为什么要做数据仓库?为什么要做数据品质治理?为什么要做元数据管理?数仓分层中每个层的作用是什么?…...在理论的工作中,咱们都心愿本人的数据可能有程序地流转,设计者和使用者可能清晰地晓得数据的整个申明周期,比方上面左图。 然而,理论状况下,咱们所面临的数据情况很有可能是复杂性高、且层级凌乱的,咱们可能会做出一套表依赖构造凌乱,且呈现循环依赖的数据体系,比方上面的右图。 为了解决咱们可能面临的问题,须要一套卓有成效的数据组织、治理和解决办法,来让咱们的数据体系更加有序,这就是数据分层。数据分层的益处: 清晰数据结构:让每个数据层都有本人的作用和职责,在应用和保护的时候可能更不便和了解简单问题简化:将一个简单的工作拆解成多个步骤来分步骤实现,每个层只解决特定的问题对立数据口径:通过数据分层,提供对立的数据进口,对立输入口径缩小反复开发:标准数据分层,开发通用的中间层,能够极大地缩小反复计算的工作数据分层每个公司的业务都能够依据本人的业务需要分层不同的档次;目前比拟成熟的数据分层:数据经营层ODS、数据仓库层DW、数据服务层ADS(APP)。 数据经营层ODS数据经营层:Operation Data Store 数据筹备区,也称为贴源层。数据源中的数据,通过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的次要性能: ODS是前面数据仓库层的筹备区为DWD层提供原始数据缩小对业务零碎的影响在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异样数据,就须要提前做一些解决)、去重(例如在个人资料表中,同一 ID 却有两条反复数据,在接入的时候须要做一步去重)、字段命名标准等一系列操作。 然而为了思考后续可能须要追溯数据问题,因而对于这一层就不倡议做过多的数据荡涤工作,一成不变地接入原始数据也能够,依据业务具体分层的需要来做。 这层的数据是后续数据仓库加工数据的起源。数据起源的形式: 业务日志 常常会应用sqoop来抽取,例如每天定时抽取一次。实时方面,能够思考用canal监听mysql的binlog,实时接入即可。埋点日志 日志个别以文件的模式保留,能够抉择用flume定时同步能够用spark streaming或者Flink来实时接入kafka也OK第三方爬虫数据数据仓库层数据仓库层从上到下,又能够分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。 数据细节层DWD数据细节层:data warehouse details,DWD(数据荡涤/DWI) 该层是业务层和数据仓库的隔离层,放弃和ODS层一样的数据颗粒度;次要是对ODS数据层做一些数据的荡涤和规范化的操作,比方去除空数据、脏数据、离群值等。 为了进步数据明细层的易用性,该层通常会才采纳一些维度进化办法,将维度进化至事实表中,缩小事实表和维表的关联。 数据中间层DWM数据中间层:Data Warehouse Middle,DWM 该层是在DWD层的数据根底上,对数据做一些轻微的聚合操作,生成一些列的两头后果表,晋升公共指标的复用性,缩小反复加工的工作。 简答来说,对通用的外围维度进行聚合操作,算出相应的统计指标数据服务层DWS(DWT)数据服务层:Data Warehouse Service,DWS(宽表-用户行为,轻度聚合) DWT在DWS的根底之上聚合的总信息,比方用户的信息,DWS的单位是天,DWT就是总的信息 该层是基于DWM上的根底数据,整合汇总成剖析某一个主题域的数据服务层,个别是宽表,用于提供后续的业务查问,OLAP剖析,数据散发等。 一般来说,该层的数据表会绝对较少;一张表会涵盖比拟多的业务内容,因为其字段较多,因而个别也会称该层的表为宽表。 用户行为,轻度聚合对DWD次要对ODS/DWD层数据做一些轻度的汇总。数据应用层ADS数据应用层:Application Data Service,ADS(APP/DAL/DF)-出报表后果 该层次要是提供给数据产品和数据分析应用的数据,个别会寄存在ES、Redis、PostgreSql等零碎中供线上零碎应用;也可能寄存在hive或者Druid中,供数据分析和数据挖掘应用,比方罕用的数据报表就是存在这里的。 事实表 Fact Table事实表是指存储有事实记录的表,比方系统日志、销售记录等。事实表的记录在一直地增长,比方电商的商品订单表,就是相似的状况,所以事实表的体积通常是远大于其余表。 维表层Dimension(DIM)维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表绝对应的一种表;它保留了维度的属性值,能够跟事实表做关联,相当于将事实表上常常反复呈现的属性抽取、标准进去用一张表进行治理。维度表次要是蕴含两个局部: 高基数维度数据:个别是用户材料表、商品材料表相似的材料表,数据量可能是千万级或者上亿级别低基数维度数据:个别是配置表,比方枚举字段对应的中文含意,或者日期维表等;数据量可能就是个位数或者几千几万。长期表TMP每一层的计算都会有很多长期表,专设一个DWTMP层来存储咱们数据仓库的长期表 数据集市广义ADS层; 狭义上指hadoop从DWD DWS ADS 同步到RDS的数据 数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需要,依照多维的形式进行存储,包含定义维度、须要计算的指标、维度的档次等,生成面向决策分析需要的数据立方体。 从范畴上来说,数据是从企业范畴的数据库、数据仓库,或者是更加业余的数据仓库中抽取进去的。数据中心的重点就在于它投合了业余用户群体的非凡需要,在剖析、内容、体现,以及易用方面。数据中心的用户心愿数据是由他们相熟的术语体现的。 ...

November 30, 2021 · 1 min · jiezi

关于大数据:kafka元数据信息存储在哪里如何查看

本文次要讲述以下两局部内容: kafka数据的存储形式;kafka如何通过offset查找message。1.前言写介绍kafka的几个重要概念(能够参考之前的博文Kafka的简略介绍): Broker:消息中间件解决结点,一个Kafka节点就是一个broker,多个broker能够组成一个Kafka集群;Topic:一类音讯,例如page view日志、click日志等都能够以topic的模式存在,Kafka集群可能同时负责多个topic的散发;Partition:topic物理上的分组,一个topic能够分为多个partition,每个partition是一个有序的队;Segment:每个partition又由多个segment file组成;offset:每个partition都由一系列有序的、不可变的音讯组成,这些音讯被间断的追加到partition中。partition中的每个音讯都有一个间断的序列号叫做offset,用于partition惟一标识一条音讯;message:这个算是kafka文件中最小的存储单位,即是 a commit log。kafka的message是以topic为根本单位,不同topic之间是互相独立的。每个topic又可分为几个不同的partition,每个partition存储一部的分message。topic与partition的关系如下: topic 其中,partition是以文件夹的模式存储在具体Broker本机上。 2.partition中的数据文件有了下面的介绍,上面咱们开始介绍Topic中partition的数据文件类型。 2.1.segment中的文件对于一个partition(在Broker中以文件夹的模式存在),外面又有很多大小相等的segment数据文件(这个文件的具体大小能够在config/server.properties中进行设置),这种个性能够不便old segment file的疾速删除。 上面先介绍一下partition中的segment file的组成: segment file 组成:由2局部组成,别离为index file和data file,这两个文件是一一对应的,后缀”.index”和”.log”别离示意索引文件和数据文件;segment file 命名规定:partition的第一个segment从0开始,后续每个segment文件名为上一个segment文件最初一条音讯的offset,ofsset的数值最大为64位(long类型),20位数字字符长度,没有数字用0填充。如下图所示:segment 对于segment file中index与data file对应关系图,这里咱们选用网上的一个图片,如下所示: index segment的索引文件中存储着大量的元数据,数据文件中存储着大量音讯,索引文件中的元数据指向对应数据文件中的message的物理偏移地址。以索引文件中的3,497为例,在数据文件中示意第3个message(在全局partition示意第368772个message),以及该音讯的物理偏移地址为497。 注:Partition中的每条message由offset来示意它在这个partition中的偏移量,这个offset并不是该Message在partition中理论存储地位,而是逻辑上的一个值(如下面的3),但它却惟一确定了partition中的一条Message(能够认为offset是partition中Message的id)。 2.2.message文件message中的物理构造为: message 2.3.数据文件的外部实现办法Partition数据文件蕴含了若干上述格局的message,依照offset由小到大排列在一起,它实现的类是FileMessageSet,类图如下: filemessageset 它的次要办法如下: append: 把给定的ByteBufferMessageSet中的Message写入到这个数据文件中。searchFor: 从指定的startingPosition开始搜寻,找到第一个Message判断其offset是大于或者等于指定的offset,并返回其在文件中的地位Position。它的实现形式是从startingPosition开始读取12个字节,别离是以后MessageSet的offset和size。如果以后offset小于指定的offset,那么将position向后挪动LogOverHead+MessageSize(其中LogOverHead为offset+messagesize,为12个字节)。read:精确名字应该是slice,它截取其中一部分返回一个新的FileMessageSet。它不保障截取的地位数据的完整性。sizeInBytes: 示意这个FileMessageSet占有了多少字节的空间。truncateTo: 把这个文件截断,这个办法不保障截断地位的Message的完整性。readInto: 从指定的绝对地位开始把文件的内容读取到对应的ByteBuffer中。3.查找3.1.遇到的问题咱们首先试想一下,如果对于Kafka的一个topic而言,如果topic的partition中只有一个数据文件的话会怎么样? 新数据是增加在文件开端(调用FileMessageSet的append办法),不管文件数据文件有多大,这个操作永远都是O(1)的。查找某个offset的Message(调用FileMessageSet的searchFor办法)是程序查找的。因而,如果数据文件很大的话,查找的效率就低。3.2.如何去解决这个问题由上述咱们晓得大数据培训,如果在topic的partition中只有一个数据文件的话,Kafka插入的效率尽管很高,然而查找的效率非常低,那么Kafka在外部是如何解决查找效率的的问题呢?对于这个问题,Kafka有两大法宝:分段和索引。 数据文件的分段 这个是比拟好了解的,退出有100条message,它们的offset是从0到99,假如将数据文件分为5端,第一段为0-19,第二段为20-39,顺次类推,每段放在一个独自的数据文件外面,数据文件以该段中最小的offset命名。这样在查找指定offset的Message的时候,用二分查找就能够定位到该Message在哪个段中。 为数据文件建索引 数据文件分段使得能够在一个较小的数据文件中查找对应offset的message了,然而这仍然须要程序扫描能力找到对应offset的message。为了进一步提高查找的效率,Kafka为每个分段后的数据文件建设了索引文件,文件名与数据文件的名字是一样的,只是文件扩大名为.index。 索引文件中蕴含若干个索引条目,每个条目示意数据文件中一条message的索引。索引蕴含两个局部(均为4个字节的数字),别离为绝对offset和position。 绝对offset:因为数据文件分段当前,每个数据文件的起始offset不为0,绝对offset示意这条message绝对于其所属数据文件中最小的offset的大小。举例,分段后的一个数据文件的offset是从20开始,那么offset为25的message在index文件中的绝对offset就是25-20 = 5。存储绝对offset能够减小索引文件占用的空间。position:示意该条message在数据文件中的相对地位。只有关上文件并挪动文件指针到这个position就能够读取对应的message了。在kafka中,索引文件的实现类为OffsetIndex,它的类图如下:offsetindex 次要的办法有: append办法:增加一对offset和position到index文件中,这里的offset将会被转成绝对的offset。lookup:用二分查找的形式去查找小于或等于给定offset的最大的那个offset3.3.通过offset查找message如果咱们想要读取offset=368776的message(见后面的第三个图),须要通过上面2个步骤查找。 查找segment file00000000000000000000.index示意最开始的文件,起始偏移量(offset)为0.第二个文件00000000000000368769.index的音讯量起始偏移量为368770 = 368769 + 1.同样,第三个文件00000000000000737337.index的起始偏移量为737338=737337 + 1,其余后续文件顺次类推,以起始偏移量命名并排序这些文件,只有依据offset 二分查找文件列表,就能够疾速定位到具体文件。当offset=368776时定位到00000000000000368769.index|log通过segment file查找message通过第一步定位到segment file,当offset=368776时,顺次定位到00000000000000368769.index的元数据物理地位和00000000000000368769.log的物理偏移地址,而后再通过00000000000000368769.log程序查找直到offset=368776为止。segment index file并没有为数据文件中的每条message建设索引,而是采取稠密索引存储形式,每隔肯定字节的数据建设一条索引,它缩小了索引文件大小,通过map能够间接内存操作,稠密索引为数据文件的每个对应message设置一个元数据指针,它比浓密索引节俭了更多的存储空间,但查找起来须要耗费更多的工夫。 总结: Kafka高效文件存储设计特点: Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期革除或删除曾经生产完文件,缩小磁盘占用。通过索引信息能够疾速定位message和确定response的最大大小。通过index元数据全副映射到memory,能够防止segment file的IO磁盘操作。通过索引文件稠密存储,能够大幅升高index文件元数据占用空间大小。

November 30, 2021 · 1 min · jiezi

关于大数据:大数据开发之Hive

Hive简介定义Facebook为了解决海量日志数据的剖析而开发了hive,起初开源给了Apache基金会组织。 hive是一种用SQL语句来帮助读写、治理存储在HDFS上的大数据集的数据仓库软件。 hive特点▪ hive 最大的特点是通过类 SQL 来剖析大数据,而防止了写 mapreduce Java 程序来剖析数据,这样使得剖析数据更容易。▪数据是存储在HDFS上的,hive自身并不提供数据的存储性能▪hive是将数据映射成数据库和一张张的表,库和表的元数据信息个别存在关系型数据库上(比方MySQL)。▪数据存储方面:他可能存储很大的数据集,并且对数据完整性、格局要求并不严格。▪数据处理方面:不适用于实时计算和响应,应用于离线剖析。 hive根本语法hive中的语句有点相似于mysql语句,次要分为DDL,DML,DQL,在此笔者就不做具体介绍了,稍微指出一点hive表分为外部表、内部表、分区表和分桶表,大数据培训感兴趣的读者能够查阅相干材料。 Hive原理hive架构图 hive内核hive 的内核是驱动引擎,驱动引擎由四局部组成,这四局部别离是:▪解释器:解释器的作用是将hiveSQL语句转换为语法树(AST)。▪编译器:编译器是将语法树编译为逻辑执行打算。▪优化器:优化器是对逻辑执行打算进行优化。▪执行器:执行器是调用底层的运行框架执行逻辑执行打算。 hive底层存储hive的数据是存储在HDFS上,hive中的库和表能够看做是对HDFS上数据做的一个映射,所以hive必须运行在一个hadoop集群上。 hive程序执行过程hive执行器是将最终要执行的mapreduce程序放到YARN上以一系列job的形式去执行。 hive元数据存储hive的元数据是个别是存储在MySQL这种关系型数据库上的,hive与MySQL之间通过 MetaStore服务交互。 表2 hive元数据相干信息 hive客户端hive有很多种客户端,下边简略列举了几个:▪ cli命令行客户端:采纳交互窗口,用hive命令行和hive进行通信。▪ hiveServer2客户端:用Thrift协定进行通信,Thrift是不同语言之间的转换器,是连贯不同语言程序间的协定,通过JDBC或者ODBC去拜访hive(这个是目前hive官网举荐应用的连贯形式)。▪ HWI客户端:hive自带的客户端,然而比拟毛糙,个别不必。▪ HUE客户端:通过Web页面来和hive进行交互,应用比拟,个别在CDH中进行集成。 Hive调优hadoop就像吞吐量微小的轮船,启动开销大,如果每次只做小数量的输入输出,利用率将会很低。所以用好hadoop的首要任务是增大每次工作所搭载的数据量。hive优化时,把hive Sql当做mapreduce 程序来读,而不是当做SQL来读。hive优化这要从三个层面进行,别离是基于mapreduce优化、hive架构层优化和hiveQL层优化。 基于mapreduce优化正当设置map数下面的mapreduce执行过程局部介绍了,在执行map函数之前会先将HDFS上文件进行分片,失去的分片做为map函数的输出,所以map数量取决于map的输出分片(inputsplit),一个输出分片对应于一个map task,输出分片由三个参数决定,如表3: 表3 输出分片决定参数 公式:分片大小=max(mapreduce.min.split.size,min(dfs.block.size, mapreduce.max.split.size)),默认状况下分片大小和dfs.block.size是统一的,即一个HDFS数据块对应一个输出分片,对应一个map task。这时候一个map task中只解决一台机器上的一个数据块,不须要将数据跨网络传输,进步了数据处理速度。 正当设置reduce数决定 reduce 数量的相干参数如表4: 表4 reduce数决定参数 所以能够用set mapred.reduce.tasks手动调整reduce task个数。 hive架构层优化不执行mapreducehive从HDFS读取数据,有两种形式:启用mapreduce读取、间接抓取。 set hive.fetch.task.conversion=more hive.fetch.task.conversion参数设置成more,能够在 select、where 、limit 时启用间接抓取形式,能显著晋升查问速度。 本地执行mapreducehive在集群上查问时,默认是在集群上N台机器上运行,须要多个机器进行协调运行,这个形式很好地解决了大数据量的查问问题。然而当hive查询处理的数据量比拟小时,其实没有必要启动分布式模式去执行,因为以分布式形式执行就波及到跨网络传输、多节点协调等,并且耗费资源。这个工夫能够只应用本地模式来执行mapreduce job,只在一台机器上执行,速度会很快。 JVM重用因为hive语句最终要转换为一系列的mapreduce job的,而每一个mapreduce job是由一系列的map task和Reduce task组成的,默认状况下,mapreduce中一个map task或者一个Reduce task就会启动一个JVM过程,一个task执行结束后,JVM过程就退出。这样如果工作破费工夫很短,又要屡次启动JVM的状况下,JVM的启动工夫会变成一个比拟大的耗费,这个时候,就能够通过重用JVM来解决。 set mapred.job.reuse.jvm.num.tasks=5 这个设置就是制订一个jvm过程在运行屡次工作之后再退出,这样一来,节约了很多的 JVM的启动工夫。 并行化一个hive sql语句可能会转为多个mapreduce job,每一个job就是一个stage,这些 job 程序执行,这个在hue的运行日志中也能够看到。然而有时候这些工作之间并不是是相互依赖的,如果集群资源容许的话,能够让多个并不相互依赖stage并发执行,这样就节约了工夫,进步了执行速度,然而如果集群资源匮乏时,启用并行化反倒是会导致各个job互相抢占资源而导致整体执行性能的降落。启用并行化: ...

November 29, 2021 · 1 min · jiezi

关于大数据:大数据开发之如何用Scala进行spark开发

1、开发第一个Spark程序1)创立一个Spark Context2)加载数据3)把每一行宰割成单词4)转换成pairs并且计数 2、wordCount程序 import org.apache.spark.{SparkConf, SparkContext} /** @author@date 2020-05-11 20:19@version 1.0 */def main(args: Array[String]) { val conf = new SparkConf().setAppName("wordcount") val sc= new SparkContext(conf) val input=sc.textFile("/Users/navyliu/Downloads/spark/helloSpark.txt") val lines = input.flatMap(line=>line.split(" ")) val count = lines.map(word=>(word,1)).reduceByKey{case (x,y)=>x+y} val output = count.saveAsTextFile("/Users/navyliu/Downloads/spark/helloSparkRes") } 3、打包配置jar包大数据培训build   而后build   4、启动集群1)启动master ./sbin/start-master.sh   master启动之后,能够拜访上面地址:http://localhost:8080/   2)启动worker ./bin/spark-class 启动work要用到这个地址: spark://deMacBook-Pro.local:7077启动work的命令为: ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://navydeMacBook-Pro.local:7077   查看过程   也能够在页面中看到worker过程   3)提交作业 ./bin/spark-submit 提交命令 ./bin/spark-submit --master spark://deMacBook-Pro.local:7077 --class CountWord untitled.jar ...

November 26, 2021 · 1 min · jiezi

关于大数据:关于数据清洗的步骤及方法的理解

数据荡涤, 是整个数据分析过程中不可短少的一个环节,其后果品质间接关系到模型成果和最终论断。在实际操作中,数据荡涤通常会占据剖析过程的50%—80%的工夫。国外有些学术机构会专门钻研如何做数据荡涤,相干的书籍也不少。 我将在这篇文章中,尝试十分浅层次的梳理一下数据荡涤过程,供各位参考。 照例,先上图: 预处理阶段预处理阶段次要做两件事件: 一是将数据导入解决工具。通常来说,倡议应用数据库,单机跑数搭建MySQL环境即可。如果数据量大(千万级以上),能够应用文本文件存储+Python操作的形式。 二是看数据。这里蕴含两个局部:一是看元数据,包含字段解释、数据起源、代码表等等所有形容数据的信息;二是抽取一部分数据,应用人工查看形式,对数据自身有一个直观的理解,并且初步发现一些问题,为之后的解决做筹备。 第一步:缺失值荡涤缺失值是最常见的数据问题,解决缺失值也有很多办法,我倡议依照以下四个步骤进行: 1、确定缺失值范畴:对每个字段都计算其缺失值比例,而后依照缺失比例和字段重要性,别离制订策略,可用下图示意: 2、去除不须要的字段:这一步很简略,间接删掉即可……但强烈建议荡涤每做一步都备份一下,或者在小规模数据上试验胜利再解决全量数据,不然删错了会追悔莫及(多说一句,写SQL的时候delete肯定要配where!)。 3、填充缺失内容:某些缺失值能够进行填充,办法有以下三种: 以业务知识或教训揣测填充缺失值以同一指标的计算结果(均值、中位数、众数等)填充缺失值以不同指标的计算结果填充缺失值 前两种办法比拟好了解。对于第三种办法,举个最简略的例子:年龄字段缺失,然而有屏蔽后六位的身份证号,so…… 4、从新取数:如果某些指标十分重要又缺失率高,那就须要和取数人员或业务人员理解,是否有其余渠道能够取到相干数据。 以上,简略的梳理了缺失值荡涤的步骤,但其中有一些内容远比我说的简单,比方填充缺失值。很多讲统计办法或统计工具的书籍会提到相干办法,有趣味的各位能够自行深刻理解。 第二步:格局内容荡涤如果数据是由系统日志而来,那么通常在格局和内容方面,会与元数据的形容统一。而如果数据是由人工收集或用户填写而来,则有很大可能性在格局和内容上存在一些问题,简略来说,格局内容问题有以下几类: 1、工夫、日期、数值、全半角等显示格局不统一 这种问题通常与输出端无关,在整合多起源数据时也有可能遇到,将其解决成统一的某种格局即可。 2、内容中有不该存在的字符 某些内容可能只包含一部分字符,比方身份证号是数字+字母,中国人姓名是汉字(赵C这种状况还是多数)。最典型的就是头、尾、两头的空格,也可能呈现姓名中存在数字符号、身份证号中呈现汉字等问题。这种状况下,须要以半自动校验半人工形式来找出可能存在的问题,并去除不须要的字符。 3、内容与该字段应有内容不符 姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简略的以删除来解决,因为成因有可能是人工填写谬误,也有可能是前端没有校验,还有可能是导入数据时局部或全副存在列没有对齐的问题,因而要具体辨认问题类型。大数据培训 格局内容问题是比拟细节的问题,但很多剖析失误都是栽在这个坑上,比方跨表关联或VLOOKUP失败(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人)、统计值不全(数字里掺个字母当然求和时后果有问题)、模型输入失败或成果不好(数据对错列了,把日期和年龄混了,so……)。因而,请各位务必留神这部分荡涤工作,尤其是在解决的数据是人工收集而来,或者你确定产品前端校验设计不太好的时候…… 第三步:逻辑谬误荡涤这部分的工作是去掉一些应用简略逻辑推理就能够间接发现问题的数据,避免剖析后果走偏。次要蕴含以下几个步骤: 1、去重 有的分析师喜爱把去重放在第一步,但我强烈建议把去重放在格局内容荡涤之后,起因曾经说过了(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人,去重失败)。而且,并不是所有的反复都能这么简略的去掉…… 我已经做过电话销售相干的数据分析,发现销售们为了抢单几乎无所不用其极……举例,一家公司叫做“ABC管家有限公司“,在销售A手里,而后销售B为了抢这个客户,在零碎里录入一个”ABC官家有限公司“。你看,不认真看你都看不出两者的区别,而且就算看进去了,你能保障没有”ABC官家有限公司“这种货色的存在么……这种时候,要么去抱RD大腿要求人家给你写含糊匹配算法,要么肉眼看吧。 当然,如果数据不是人工录入的,那么简略去重即可。 2、去除不合理值 一句话就能说分明:有人填表时候瞎填,年龄200岁,年收入100000万(预计是没看见”万“字),这种的就要么删掉,要么按缺失值解决。这种值如何发现?提醒:可用但不限于箱形图(Box-plot). 3、修改矛盾内容 有些字段是能够相互验证的,举例:身份证号是1101031980XXXXXXXX,而后年龄填18岁,咱们尽管了解人家永远18岁的想法,但得悉实在年龄能够给用户提供更好的服务啊(又瞎扯……)。在这种时候,须要依据字段的数据起源,来断定哪个字段提供的信息更为牢靠,去除或重构不牢靠的字段。 逻辑谬误除了以上列举的状况,还有很多未列举的状况,在实际操作中要酌情处理。另外,这一步骤在之后的数据分析建模过程中有可能反复,因为即便问题很简略,也并非所有问题都可能一次找出,咱们能做的是应用工具和办法,尽量减少问题呈现的可能性,使剖析过程更为高效。 第四步:非需要数据荡涤这一步说起来非常简单:把不要的字段删了。 但实际操作起来,有很多问题,例如: 把看上去不须要但实际上对业务很重要的字段删了;某个字段感觉有用,但又没想好怎么用,不晓得是否该删;一时看走眼,删错字段了。 前两种状况我给的倡议是:如果数据量没有大到不删字段就没方法解决的水平,那么能不删的字段尽量不删。第三种状况,请勤备份数据…… 第五步:关联性验证如果你的数据有多个起源,那么有必要进行关联性验证。例如,你有汽车的线下购买信息,也有电话客服问卷信息,两者通过姓名和手机号关联,那么要看一下,同一个人线下注销的车辆信息和线上问卷问进去的车辆信息是不是同一辆,如果不是(别笑,业务流程设计不好是有可能呈现这种问题的!),那么须要调整或去除数据。 严格意义上来说,这曾经脱离数据荡涤的领域了,而且关联数据变动在数据库模型中就应该波及。但我还是心愿揭示大家,多个起源的数据整合是非常复杂的工作,肯定要留神数据之间的关联性,尽量在剖析过程中不要呈现数据之间互相矛盾,而你却毫无觉察的状况。

November 26, 2021 · 1 min · jiezi

关于大数据:干货大数据开发之Spark总结

一、实质 Spark是一个分布式的计算框架,是下一代的MapReduce,扩大了MR的数据处理流程 二、mapreduce有什么问题 1.调度慢,启动map、reduce太耗时 2.计算慢,每一步都要保留两头后果落磁盘 3.API形象简略,只有map和reduce两个原语 4.不足作业流形容,一项工作须要多轮mr 三、spark解决了什么问题 1.最大化利用内存cache 2.两头后果放内存,减速迭代 3.将后果集放内存,减速后续查问和解决,解决运行慢的问题 select * from table where col1 > 50 rdd.registerastable(cachetable) SQL: select col2, max (col3) from cachetable group by col2 select col3, max (col2) from cachetable group by col3 更丰盛的API(Transformation类和Actions类)残缺作业形容,将用户的整个作业串起来val file = sc.textFile(hdfs://input) val counts = file.flatMap( line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) counts.saveAsTextFile(hdfs://output) 因为Excutor过程能够运行多个Task线程,因此实现了多线程的操作,放慢了处理速度四、Spark外围—RDD( Resilient Distributed Dataset 弹性分布式数据集模型) 1.四个特色 – RDD使用户可能显式将计算结果保留在内存中,控制数据的划分 – 记录数据的变换和形容,而不是数据自身,以保障容错 ...

November 25, 2021 · 2 min · jiezi

关于大数据:Spark主备切换机制原理

Master实际上能够配置两个,那么在spark原生的standalone上也是反对Master主备切换的,也就是说,当Active Master节点挂掉之后,咱们能够将Standby Master切换为Active Master Spark Master的主备切换能够基于两种切换机制,一种是文件系统,一种是基于Zookeeper,基于文件系统的机制,是Active Master挂掉后,须要咱们手动去切换到Standby Master上,基于Zookeeper机制,呆以实现主动切换。 所以这里说的主备切换机制,其实指的是在Active Master挂掉之后,切换到Standby Master时,Master会做哪些操作 1.应用长久化引挚(FileSystemPersistence或者是ZookeeperPersisitence)去读取长久化的storedApps,storedDriver,storedWorker, 2.判断下面的三个长久化的storedApps,storedDriver,storedWorker, 有任何一个不为空,就将长久化有Application,Driver,Worker的信息从新注册,注册到Master外部的缓存构造中。 3.将Application和Worker的状态都批改为UNKNOWN,而后向Application对应的Driver,Worker发送Standby Master的地址. 4.Driver,Worker,实践上讲,如果他们目前是失常工作的话,那么在收到Master发送来的地址后,就会返回响应给新的Master。 5.此时,Master在陆续接管到Driver,Worker发送来的响应音讯之后,会应用completeRecovery()对没有收到发送响应音讯的Driver,Worker进行解决,过滤掉他们的信息。如下: // Kill off any workers and apps that didn’t respond to us.workers.filter(.state == WorkerState.UNKNOWN).foreach(removeWorker)apps.filter(.state == ApplicationState.UNKNOWN).foreach(finishApplication) // Reschedule drivers which were not claimed by any workersdrivers.filter(_.worker.isEmpty).foreach { d => logWarning(s"Driver ${d.id} was not found after master recovery") if (d.desc.supervise) { logWarning(s"Re-launching ${d.id}")relaunchDriver(d)} else { removeDriver(d.id, DriverState.ERROR, None)logWarning(s"Did not re-launch ${d.id} because it was not supervised")}6.调用Master的schedule(),对正在期待调度的Driver,Application进行调度,比方在某个Worker上启动Driver,或者为Application在Worker上启动Executor。 ...

November 24, 2021 · 1 min · jiezi

关于大数据:驴行千里不洗沙尘尚硅谷Spark性能调优教程发布

摘要:当年少立志三千里,莫迟疑百步无寸功。 你是不是长了颗红楼梦的心, 却生存在水浒的世界, 想结交些三国里的桃园弟兄, 却总遇到西游记中的各路妖魔鬼怪。 Today,咱们聊聊从西游记看职场, 聊一聊咱们应该端什么碗吃什么饭。 唐三藏吃资源饭。 女儿国国王为什么叫他御弟哥哥? 公开的皇帝是他哥,天上的如来是他靠山, 他能够不干活,能够骑在马上。 条条大路通罗马,但有的人生在罗马。 “轻轻问圣僧,老娘美不美?” 艳遇就是他一辈子最难的关了。 你祖坟没冒青烟,你还想学唐僧躺平, are you crazy? 孙悟空吃本事饭。 会七十二变,一个跟头十万八千里。 他能够迟到早退,能够拍桌子瞪眼睛, 越级汇报直属主管的风格问题, 甚至动不动撂挑子回花果山了, 但回来了他还是大师兄,没他不灵。 人的本能是高估本人, 都感觉本人和孙悟空是一种猴变的, 事实是,石头缝里蹦出来的太少了。 猪八戒吃感情饭。 时刻和头保持一致,展现依赖紧跟领导, 善于各种嘘寒问暖,精通各式样彩虹屁。 有事就喊:“大师兄”, 没事连忙问:“什么时候开饭”, 领导看着悦目,工作干也行不干也行, 虽好色又贪吃,但被偏爱的有恃无恐。 领导一撅屁股,他晓得要拉几个粪蛋, 这玩意儿,你来得了吗? 沙和尚吃辛苦饭。 没资源,没天才,老实巴交不会来事。 你不卷怎么办?普通人,汗水就是前途, 一句话:“干就完了!” 未来修成正果,也有你一份。 情绪不好的时候,去瞅两眼白龙马, 每天撅哒撅哒光着屁股来下班, 不让吃人饭,不让说人话, 领导都不拿他当人看:“我师徒四人, 从东土大唐而来,去往西天取经。” 所谓命运,命是定数,运是变数。 如果你不是生下来就家里有矿, 不是叫一声“阿姨”就能够不必致力, 你要认命,认清本人是普通人的事实。 不与命争,但要和运斗! 抉择学大数据,是一条高速公路, 可你是个牛车,吭哧吭哧不走道, 你奋发图强躺平了,后车就把你撞死。 来来来,给你一套认命修运的小电影: Spark性能调优教程公布! Spark是大数据工程师的必备技能,教程基于最新Spark 3.0版本,拆解最新个性:AQE(自适应查问执行)、DPP(动静分区裁剪)、Hint加强,新增了谓词下推、列剪裁、常量替换、基于CBO的优化等Spark SQL优化伎俩。从多角度详解Spark调优策略,包含资源配置调优、Spark SQL语法调优、执行打算解读、数据歪斜问题解决、Job优化等。 教程涉及面广、系统性强,分析常见故障排除手法,详解Spark调优策略,提供多种解决方案,造就解决问题思路,让你举一反三、触类旁通,一套教程搞定各种Spark疑难杂症!老规矩:视频、笔记、代码、材料,一个都不能少,世间精品鹏哥(DataX教程和ClickHouse教程撸Sir)最新作品。 Spark性能调优教程简介 https://www.bilibili.com/vide... 大数据近期视频精选 重磅降级 | 尚硅谷新版Hadoop视频教程公布 经典再降级,ZooKeeper从入门到精通 ...

November 24, 2021 · 1 min · jiezi

关于大数据:正确学习大数据开发技术的方法有哪些

大数据开发技术的利用在咱们的生存中也是随处可见的,对于当初来说并不是一个新的开发技术,在大数据开发技术的一直倒退的过程中,曾经趋于成熟,然而零根底小伙伴想要通过大数据培训机构学习来取得开发技术常识,我想是一个比拟不错的形式,那什么样的学习办法是我认为正确的呢?1.对数据的敏感度 小伙伴想要学习大数据开发技术常识,首先要理解大数据开发是和数据打交道的编程技术语言,所以小伙伴须要对数据具备肯定的敏感水平,须要肯定的统计学,在学习过程中,要学会爱数据,学会数据的统计与整顿。 2.在实践中学习 小伙伴在大数据培训班想要学好大数据开发技术常识,不仅须要基础知识的学习积攒,还须要联合相干的我的项目实战案例的练习来深刻了解学习大数据开发技术,在小伙伴练习我的项目实战案例的过程中,不仅能小伙伴积攒肯定的实战开发教训,还能锤炼我的项目开发过程中解决问题的能力。 3.向同行学习 大数据开发技术的学习是一直学习的过程,小伙伴在大数据培训班学习实现之后,胜利入职后也是须要持续学习的,你基本设想不到你会从同行身上学到多少货色,在数据工作中,团队单干十分重要。也能够尝试给那些写乏味的数据分析博客发消息看有没有单干的可能。 大数据开发技术常识体系是比拟宏大的,常识内容也是比拟杂且多的,所以小伙伴在学习大数据开发技术的过程中,肯定要学习积攒好编程基础知识,不断丰富知识结构,联合相干的我的项目实战案例练习来积攒肯定的开发实战经验,对小伙伴日后找工作有肯定的帮忙。

November 24, 2021 · 1 min · jiezi

关于大数据:大数据相关

一、装置1、装置dockerdocker个别命令 docker pull **: 下载镜像docker images:列出已下载的镜像docker run -it ubuntu:16.04 /bin/bash:启动一个容器exit: 退出容器docker ps: 查看正在运行中的容器docker ps -a: 查看所有容器docker start fab4da838c2f:启动容器docker exec -it fab4da838c2f /bin/bash:进入一个容器docker stop fab4da838c2f:敞开一个容器2、构建虚构网络 docker network create --driver=bridge hadoop以上命令创立了一个名为 Hadoop 的虚构桥接网络,该虚构网络外部提供了主动的DNS解析服务。3、装置jdk1.8、scala、hadoop yum install java-1.8.0-openjdkyum install scalayum install vim

November 24, 2021 · 1 min · jiezi

关于大数据:大数据开发之hive的了解及SQL基础命令分享

hive(数据仓库工具)Hive是一个数据仓库根底工具在Hadoop中用来解决结构化数据。它架构在Hadoop之上,总归为大数据,并使得查问和剖析不便。并提大数据培训供简略的sql查问性能,能够将sql语句转换为MapReduce工作进行运行。术语“大数据”是大型数据集,其中包含体积宏大,高速,以及各种由一劳永逸的数据的汇合。应用传统的数据管理系统,它是难以加工大型数据。因而,Apache软件基金会推出了一款名为Hadoop的解决大数据管理和解决难题的框架。 SQL结构化查询语言(Structured Query Language)简称SQL,是一种数据库查问和程序设计语言,用于存取数据以及查问、更新和治理关系数据库系统;同时也是数据库脚本文件的扩展名。 结构化查询语言是高级的非过程化编程语言,容许用户在高层数据结构上工作。它不要求用户指定对数据的寄存办法,也不须要用户理解具体的数据寄存形式,所以具备齐全不同底层构造的不同数据库系统, 能够应用雷同的结构化查询语言作为数据输出与治理的接口。结构化查询语言语句能够嵌套,这使它具备极大的灵活性和弱小的性能。 常见SQL命令SELECT 语句 作用:用于从表中选取数据,后果被存储在一个后果表中 语法:select 列名称 from 表名称 举例:select LastName from Person 或 select * from Person WHERE 子句 作用:如需有条件地从表中选取数据,可将 WHERE 子句增加到 SELECT 语句 语法:SELECT 列名称 FROM 表名称WHERE 列 运算符 值 举例:SELECT * FROM Persons WHERE FirstName='John' ORDER BY 语句 作用:ORDER BY 语句用于依据指定的列对后果集进行排序,默认依照升序对记录进行排序;如需依照降序,可应用DESC关键字 举例:ORDER BY SELECT LastName, FirstName FROM Persons ORDER BY FirstName SELECT DISTINCT 作用:关键字DISTINCT 用于返回惟一不同的值 语法:SELECT DISTINCT 列名称 FROM 表名称 举例:要从Company列中仅选取惟一不同的值,SELECTDISTINCT Company FROM Orders ...

November 23, 2021 · 1 min · jiezi

关于大数据:HBase数据的读写流程

HBase 的外围模块是 Region 服务器。Region 服务器由多个 Region 块形成,Region 块中存储一系列间断的数据集。Region 服务器次要形成局部是 HLog 和 Region 块。HLog 记录该 Region 的操作日志。 Region 对象由多个 Store 组成,每个 Store 对应以后分区中的一个列族,每个 Store 治理一块内存,即 MemStoreo 当 MemStore 中的数据达到肯定条件时会写入 StoreFile 文件中,因而每个 Store 蕴含若干个 StoreFile 文件。StoreFile 文件对应 HDFS 中的 HFile 文件。 HBase 群集数据的形成如图所示。 MemStore当 Region 服务器收到写申请的时候,Region 服务器会将申请转至相应的 Region。数据先被写入 MemStore,当达到肯定的阈值时,MemStore 中的数据会被刷新到 HFile 中进行长久化存储。 HBase 将最近接管到的数据缓存在 MemStore 中,在长久化到 HDFS 之前实现排序,再程序写入 HDFS,为后续数据的检索进行优化。因为 MemStore 缓存的是最近减少的数据,所以也进步了对近期数据的操作速度。 在长久化写入之前,在内存中对行键或单元格进行优化。例如,当数据的 version 被设为 1 时,对某些列族中的一些数据,MemStore 缓存单元格的最新数据,在写入 HFile 时,仅须要保留一个最新的版本。StoreStore 是 Region 服务器的外围,存储的是同一个列族下的数据,每个 Store 蕴含一块 MemStore 和 StoreFile( 0 个或多个)。StoreFile 是 HBase 中最小的数据存储单元。 ...

November 22, 2021 · 2 min · jiezi

关于大数据:大数据开发之YARN

YARN是资源管理零碎,实践上反对多种资源,目前反对CPU和内存两种资源 YARN产生背景 间接源于MRv1在几个方面的缺点 扩展性受限 单点故障 难以反对MR之外的计算 多计算框架各自为战,数据共享艰难 MR:离线计算框架 Storm:实时计算框架 Spark:内存计算框架 YARN设计指标 通用的对立资源管理零碎 同时运行长应用程序和短应用程序 长应用程序 通常状况下,永不进行运行的程序 Service、HTTP Server等 短应用程序 短时间(秒级、分钟级、小时级)内会运行完结的程序 MR job、Spark Job等 YARN根本架构ResourceManager 整个集群只大数据培训有一个,负责集群资源的对立治理和调度 具体性能 解决客户端申请 启动/监控ApplicationMaster 监控NodeManager 资源分配与调度 NodeManager 整个集群有多个,负责单节点资源管理和应用 具体性能 单个节点上的资源管理和工作治理 解决来自ResourceManager的命令 解决来自ApplicationMaster的命令 ApplicationMaster 每个利用有一个,负责应用程序的治理 具体性能 数据切分 为应用程序申请资源,并进一步调配给外部工作 工作监控与容错 Container 对工作运行环境的形象 形容一系列信息 工作运行资源(节点、内存、CPU) 工作启动命令 工作运行环境 YARN运行过程YARN容错性 ResourceManager 存在单点故障; 正在基于ZooKeeper实现HA。 NodeManager 失败后,RM将失败工作通知对应的AM; AM决定如何解决失败的工作。 ApplicationMaster 失败后,由RM负责重启; AM需解决外部工作的容错问题; RMAppMaster会保留曾经运行实现的Task,重启后无需从新运行。 YARN调度框架 双层调度框架 RM将资源分配给AM AM将资源进一步调配给各个Task 基于资源预留的调度策略 资源不够时,会为Task预留,直到资源短缺 与“all or nothing”策略不同(Apache Mesos) YARN资源调度器 ...

November 22, 2021 · 1 min · jiezi

关于大数据:Hadoop-入门笔记核心组件-YARN

作者:幻好 起源:恒生LIGHT云社区 根本概述Apache YARN (Yet Another Resource Negotiator) 是 Hadoop 中的资源管理和作业调度零碎, 在 Hadoop 2.x 时才被引入。 用户能够将各种服务框架部署在 YARN 上,由 YARN 进行对立地治理和资源分配。 Yarn在 Hadoop2.x 时才被推出,在 Hadoop1.x 时,次要由 MapReduce 进行资源分配,因为思考到如果 MapReduce 在计算中挂掉了,那么资源调度也将进行工作,于是在新版本中将资源调度这部分性能剥来到,才有 Yarn。 外围架构Yarn 的次要架构分为四个局部:ResourceManager、NodeManager、ApplicationMaster、Container ResourceManagerResourceManager 通常在独立的部署在一台机器作为利用运行,集群中只有一个,负责整个零碎的资源管理和调配。ResourceManager 次要由两个组件形成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。可能依据应用程序优先级、队列容量、数据地位等信息,做出决策,通过平安的、共享的、多租户的形式制订调配策略,调度集群资源。NodeManagerNodeManager 是 YARN 集群中的每个具体节点的管理者。次要负责该节点内所有容器的生命周期的治理,监督资源和跟踪节点衰弱。NodeManager 次要用来解决来自ResourceManager 、ApplicationMaster的命令。一个节点启动时,它会向 ResourceManager 进行注册并推送可用资源信息。在运行期,通过 NodeManager 和 ResourceManager 协同工作,这些信息会一直被更新并保障整个集群施展出最佳状态。ApplicationMaster在用户提交一个应用程序时,YARN 会启动一个轻量级的过程ApplicationMaster。ApplicationMaster 负责协调来自ResourceManager 的资源,并通过NodeManager 监督容器内资源的应用状况,同时还负责工作的监控与容错。ApplicationMaster 将能将数据进行拆分,并依据利用的运行状态动静匹配资源需要,可能监控跟踪工作状态和进度,报告利用的进度信息。ContainerContainer是 YARN 中的资源形象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当ApplicationMaster 向ResourceManager 申请资源时,ResourceManager 为ApplicationMaster 返回的资源是用Container 示意的。YARN 会为每个任务分配一个Container,该工作只能应用该Container 中形容的资源。ApplicationMaster 可在Container 内运行任何类型的工作。工作流程YARN 利用提交的整个工作流程: 首先客户端提交工作到 YARN 上,ResourceManager 提交利用并申请一个ApplicationMaster 实例;ResourceManager 会抉择一个可运行的NodeManager,并在Container 中启动并运行ApplicationMaster 实例;启动中的ApplicationMaster 向ResourceManager 注册本人,启动胜利后与RM放弃心跳。ApplicationMaster 向ResourceManager 发送申请,获取须要的Container 资源;ApplicationMaster 通过获取到的Container 资源执行分布式计算。利用运行完结后,ApplicationMaster 向ResourceManager 登记本人,并容许属于它的container 被发出。总结Yarn 次要在 Hadoop 体系中负责服务资源的调度调配,可能最大限度的利用机器资源,高效调配,达到资源利用的最大化。 ...

November 22, 2021 · 1 min · jiezi

关于大数据:Hadoop-入门笔记核心组件-HDFS

作者:幻好 起源:恒生LIGHT云社区 基本概念HDFS (Hadoop Distributed File System) 是 Hadoop 下的分布式文件系统,具备高容错、高吞吐量等个性,能够部署在低成本的硬件上。 首先,通过名字就能很分明的明确 HDFS 在 Hadoop 中是应该文件存储的组件。 HDFS 的设计之初,次要是思考到在数据量的一直增长的环境下,因为受制单机资源无限,为了保证系统可能提供高可用、高可靠性以及高扩大等要求,于是通过分布式架构,以达到响应的需要。 外围架构HDFS 的次要架构分为三个局部:NameNode(nn)、DataNode(dn) 、Secondary NameNode(2nn)。 NameNode(nn) 存储文件的元数据,如文件名,文件目录构造,文件属性(生成工夫、正本数、文件权限),以及每个文件的块列表和块所在的DataNode等。能够了解零碎的文件资源管理器,不便咱们查问文件存储地位以及相干属性信息。DataNode(dn) 负责提供来自文件系统客户端的读写申请,执行块的创立,删除等操作。能够了解为通过NameNode是存储一些文件根本属性信息不便咱们查问,而DataNode则是存储文件数据的。Secondary NameNode(2nn) 用来监控HDFS 状态的辅助后台程序,每隔一段时间获取HDFS 元数据的快照Secondary NameNode能够了解为NameNode的备份,如果NameNode都挂了,Secondary NameNode的备份还能持续提供服务一个 HDFS 集群由一个 NameNode 和一些 DataNode 组成, NameNode 相当于控制中心,负责管理文件系统的名字空间、数据块与数据节点的映射以及数据节点的调度。 DataNode 则负责解决理论的客户端读写的申请,存储数据。 运行原理写数据首先客户端向NameNode 发动RPC 申请创立文件;NameNode 会校验用户权限并查问文件是否存在,最终创立一条元数据信息并返回存储的DataNode 信息给客户端;客户端开始向DataNode 上传数据,DataNode 会对数据进行切分并实现正本的创立;而后DataNode 会将数据复制到其余的节点上;直到所有的节点实现后,返回上传胜利,敞开连贯。读数据首先客户端通过RPC 调用NameNode 的查询方法;NameNode 会校验用户权限并查问文件是否存在,并将文件保留在DataNode 的节点返回;客户端向返回的DataNode 发动读取的申请,获取数据;当所有的数据读取实现后,资源敞开。优缺点长处:可能解决较大文件,如MB到TB。可能部署在便宜服务器上,对性能要求不高,具备较高容错性。可能对已存储内容进行追加存储内容毛病:拜访提早较高,不适宜利用在低提早场景不适宜大量较小文件存储,会消耗较多资源。总结HDFS 的设计保障了零碎的高可用、高扩大等要求,尽管也有弊病,然而咱们应该依据切实的业务需要,抉择最合适的技术计划。 HDFS 通过其良好的跨平台移植性,使得其余大数据计算框架都将其作为数据长久化存储的首选计划。

November 19, 2021 · 1 min · jiezi

关于大数据:直播-大数据能力体系构建的技术方法全在这了

在明天数字经济的浪潮中,产业充分认识到要做好数字化、智能化,第一件要做的事件即是健全的企业大数据能力。 在数据量指数增长、数据类型繁冗多样、数据利用场景多变、数据分析实时性要求高的多重挑战下,开发者如何利用技术驱动企业高效、疾速地构建大数据能力体系? 『百度开发者沙龙』第二期邀请到了百度智能云大数据的 4 位资深工程师、产品经理,为大家带来百度智能云智能大数据平台相干技术解说,同时分享落地实战经验,探讨大数据技术与利用。 直播介绍(一)直播简介全方位笼罩从数据基础设施到智能开掘平台/智能可视化 BI 背地的技术与实际,介绍如何建设新型数据基础设施,详尽解读全功能 AI 开发平台、可视化 BI 等产品背地的技术,摸索数据价值开掘的最新计划。 (二)直播纲要 (三)报名形式:Step1. 扫描下方二维码预约报名 Step 2. 增加百度开发者小助手好友,进直播专属交换群 精彩议题《百度数据仓库 Palo 技术个性解读》 鲁志敬 | 百度智能云高级产品经理 百度数据仓库 Palo 是基于开源 Apache Doris 构建的企业级 MPP 云数据仓库,可无效地反对在线实时数据分析。 本次分享将介绍百度数据仓库的倒退历程,探寻极速易用背地的技术原理,帮忙大家更加疾速构建数据分析平台。 《智能化可视化 BI 与大屏揭秘》 张军 | 百度智能云资深研发工程师 Sugar BI 是百度自助 BI 报表剖析和制作可视化数据大屏的工具,直连 MySQL、本地 excel 等各类数据源,通过丰盛的图表和拖拽式编辑即可生成可视化页面,并以炫酷大屏出现,让数据信息更直观。 本次分享将介绍 BI 剖析背地的技术架构与流程,及可视化图表的智能举荐策略,帮忙大家深刻了解智能化可视化 BI 的技术与实际。 《数据湖架构下的大规模解决技术实际》 李莅 | 百度智能云大数据平台技术架构师 在数据量指数增长、数据类型繁冗多样、数据利用场景多变、数据分析实时性要求越来越高的多重挑战下,繁多的数据仓库或者数据湖解决方案满足不了用户对数据挖掘和应用的需要,湖仓一体架构成为云原生时代数据架构演变的必然趋势。 本次分享将介绍云原生大数据架构、一体化数据平台、数据湖剖析技术与实际,帮忙开发者解大规模数据湖剖析技术及趋势。 《企业数据资产构建与利用实际》 崔宝宏 | 百度智能云大数据资深产品经理 在构建数据基础设施后,开发者应该如何帮忙企业实现数据资产价值最大化? 本次分享将基于企业实在场景,通过百度智能大数据平台 BMR 托管大数据平台、EasyDAP 数据湖治理开发平台、百度数据仓库 Palo、Sugar BI 一步步实现企业数据资产构建和利用。 ...

November 19, 2021 · 1 min · jiezi

关于大数据:Scala中List的操作

//对于共享雷同类型的不可变对象序列,能够应用Scala的List类//作为一个array,一个list[String]蕴含为String类型,scala中的list和java中的list不一样//scala中的list是不可变得val oneTwoThree = List(1,2,3) //相当于定义了一个List[Int]的list,外面的元素为Int类型println(oneTwoThree + " this is a List")//列表是不可变的,它们的行为有点像Java字符串:当您调用一个列表上的办法时,//该办法的名称可能暗示该列表将发生变化,但它会创立并返回一个具备新值的新列表。//例如,List有一个名为:::的办法用于列表连贯val list1 = List(1,2)val list2 = List(3,4)val list1AndList2 = list1 ::: list2println("one list1" + list1 + " and two list2 " + list2)println("used ::: 连贯两个list:" + list1AndList2) //兴许大家大数据培训学习中在列表中应用的最常见的操作符是::,它发音为cons。cons将一个新元素放在现有列表的结尾,并返回后果列表val consBeforeList = List(2,3)val consAfterList = 1 :: consBeforeListprintln("consBeforeList : " + consBeforeList)println("consAfterList : " + consAfterList)//这里不须要应用new List,应为List.apply()被定义在scala.List 这个对象中,是一个工厂办法//::是一个右操作数的办法//您可能狐疑:: method的关联性存在一些问题,//但它实际上是一个须要记住的简略规定:如果在运算符表示法中应用了一个办法,//例如 b,则在左操作数上调用该办法,如 在a.(b)中 - 办法名称以冒号结尾。//如果办法名称以冒号结尾,则在右操作数上调用该办法。//因而,在1 :: consBeforeList中,:: method被调用在consBeforeList上,传入1,就像这样:consBeforeList. :: (1)//制订一个空的list是应用nil,一种是创立蕴含中有的list,用cons操作进行追加一个nil元素到最初val nilList = 1 :: 2 :: 3 :: Nilprintln("this is a nil append last:" + nilList) ...

November 19, 2021 · 2 min · jiezi

关于大数据:大数据开发之HBase异常问题分析

1. 问题景象和起因概述1) 网卡打满导致申请响应迟缓:通过查看问题产生时段集群服务器的网络流量状况,发现大量的RegionServer所在的服务器呈现了网卡打满景象。随着大数据业务的疾速倒退,Hadoop集群所面临的数据读写压力也在一直增长,千兆网卡在应答大批量的数据通信申请时容易被打满,这种大数据培训状况下就会大大影响数据的传输速度,进而产生申请响应迟缓的问题。2) RegionServer过程JVM的负载过高:随着业务的倒退,HBase集群所承载的数据量也在一直增长,各个RegionServer中都保护了大量的Region,常常会呈现单个RegionServer中蕴含一千多个Region的状况,大量的Region所对应的memstore就会占用较大的内存空间,同时也会呈现频繁的memstore flush以及HFile的compaction操作,而磁盘刷写和compaction的执行也会加大磁盘写入的压力进而导致较高的IO wait,在这样的运行状态下HBase就非常容易呈现申请响应迟缓,甚至产生较大的FullGC。须要阐明的是,当RegionServer呈现长时间的GC后,其与Zookeeper的连贯将超时断开,也就会导致RegionServer产生异样宕机,这种状况下随着Region的迁徙而产生region not online的状况,甚至呈现数据不统一,当呈现数据不统一的时候就须要运维工程师进行手工数据修复能力复原相干数据的拜访;同时,因为Region的迁徙还会导致其余的RegionServer须要负载更多的Region,这就使得整个集群的运行处于十分不稳固的状态。如下是一次RegionServer产生Full GC的日志信息,一共继续了280秒:[GC--T::*.+0800: 431365.526: [ParNew (promotion failed)Desired survivor size 107347968 bytes, new threshold 1 (max 6) age 1: 215136792 bytes, 215136792 total: 1887488K->1887488K(1887488K), 273.7583160 secs]--T::*.+0800: 431639.284: [CMS: 15603284K->3621907K(20971520K), 7.1009550 secs] 17192808K->3621907K(22859008K), [CMS Perm : 47243K->47243K(78876K)], 280.8595860 secs] [Times: user=3044.83 sys=66.01, real=280.88 secs]--T::.+0800: 431650.802: [GC--T::.+0800: 431650.802: [ParNewDesired survivor size 107347968 bytes, new threshold 1 (max 6)age 1: 215580568 bytes, 215580568 total: 1677824K->209664K(1887488K), 2.4204620 secs] 5299731K->4589910K(22859008K), 2.4206460 secs] [Times: user=35.54 sys=0.09, real=2.42 secs]Heap par new generation total 1887488K, used 1681569K [0x000000027ae00000, 0x00000002fae00000, 0x00000002fae00000)eden space 1677824K, 87% used [0x000000027ae00000, 0x00000002d4b68718, 0x00000002e1480000)from space 209664K, 100% used [0x00000002e1480000, 0x00000002ee140000, 0x00000002ee140000)to space 209664K, 0% used [0x00000002ee140000, 0x00000002ee140000, 0x00000002fae00000) concurrent mark-sweep generation total 20971520K, used 4380246K [0x00000002fae00000, 0x00000007fae00000, 0x00000007fae00000) concurrent-mark-sweep perm gen total 78876K, used 47458K [0x00000007fae00000, 0x00000007ffb07000, 0x0000000800000000)长时间的JVM进展使得RegionServer与Zookeeper的连贯超时,进而导致了RegionServer的异样宕机:INFO org.apache.hadoop.hbase.regionserver.HRegionServer: stopping server ,,1597296398937; zookeeper connection closed.INFO org.apache.hadoop.hbase.regionserver.HRegionServer: regionserver60020 exitingERROR org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine: Region server exitingjava.lang.RuntimeException: HRegionServer Aborted at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:66) at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:85) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126) at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2493)INFO org.apache.hadoop.hbase.regionserver.ShutdownHook: Shutdown hook starting; hbase.shutdown.hook=true; fsShutdownHook=org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer@c678e872. HBase架构和概念HBase 是一种面向列的分布式数据库,是Google BigTable的开源实现,实用于大数据量的存储(可反对上百亿行的数据),以及高并发地随机读写,针对rowkey的查问速度可达到毫秒级,其底层存储基于多正本的HDFS,数据可靠性较高,在我行的大数据业务中利用宽泛。HBase采纳Master/Slave架构搭建集群,次要由HMaster、RegionServer、ZooKeeper集群这些组件形成,HBase的架构如下图所示:• HBase Master : 负责监控所有RegionServer的状态,以及负责进行Region 的调配,DDL(创立,删除 table)等操作。• Zookeeper : 负责记录HBase中的元数据信息,探测和记录HBase集群中的服务状态信息。如果zookeeper发现服务器宕机, 它会告诉Hbase的master节点负责保护集群状态。• Region Server : 负责解决数据的读写申请,客户端申请数据时间接和 Region Server 交互。• HRegion:HBase表在行的方向上宰割为多个HRegion,HRegion是HBase中分布式存储和负载平衡的最小单元,不同的HRegion能够别离在不同的HRegionServer上,当HRegion的大小达到肯定阀值时就会决裂成两个新的HRegion。• Store:每个region由1个以上Store组成,每个Store对应表的一个列族;一个Store由一个MemStore和多个StoreFile组成。• MemStore: 当RegionServer解决数据写入或者更新时,会先将数据写入到MemStore,当Memstore的数据量达到肯定数值后会将数据刷写到磁盘,保留为一个新的StoreFile。• StoreFile:一个列族中的数据保留在一个或多个StoreFile中,每次MemStore flush到磁盘上会造成一个StoreFile文件,对应HDFS中的数据文件HFile。3. Region数对HBase的影响剖析3.1 HBase flush3.1.1 HBase flush的触发条件HBase在数据写入时会先将数据写到内存中的MemStore,而后再将数据刷写到磁盘的中。RegionServer在启动时会初始化一个MemStoreFlusher(实现了FlushRequester接口)线程,该线程一直从flushQueue队列中取出相干的flushrequest并执行相应的flush操作:public void run() { ...

November 19, 2021 · 4 min · jiezi

关于大数据:Apache-Kyuubi-助力-CDH-解锁-Spark-SQL

Apache Kyuubi(Incubating)(下文简称Kyuubi)是⼀个构建在Spark SQL之上的企业级JDBC网关,兼容HiveServer2通信协议,提供高可用、多租户能力。Kyuubi 具备可扩大的架构设计,社区正在致力使其可能反对更多通信协议(如 RESTful、 MySQL)和计算引擎(如Flink)。 Kyuubi的愿景是让大数据平民化。一个的典型应用场景是替换HiveServer2,帮忙企业把HiveQL迁徙到Spark SQL,轻松取得10~100倍性能晋升(具体晋升幅度与SQL和数据无关)。另外最近比拟火的两个技术,LakeHouse和数据湖,都与Spark联合得比拟严密,如果咱们能把计算引擎迁徙到Spark上,那咱们离这两个技术就很近了。 Kyuubi最早起源于网易,这个我的项目自诞生起就是开源的。在Kyuubi倒退的前两年,它的应用场景次要在网易外部。自从2020年底进行了一次架构大降级、公布了Kyuubi 1.0之后,整个Kyuubi社区开始沉闷起来了,我的项目被越来越多的企业采纳,而后在往年6月进入了Apache基金会孵化器,并在往年9月公布了进入孵化器后的第一个版本1.3.0-incubating。 Kyuubi vs SparkThriftServer vs HiveServer2咱们通过Kyuubi和其余SQL on Spark计划的比照,看看用Kyuubi替换 HiveServer2能带来什么样的晋升。图中对Hive Server2标记了Hive on Spark,这是Hive2的一个性能,最早的Hive会把SQL翻译成MapReduce来执行,Hive on Spark计划其实就是把SQL翻译成Spark算子来执行,然而这仅仅是物理算子的替换,因为复用了Hive的SQL解析逻辑,所以SQL方言还是HiveQL,包含后续SQL的改写、优化走的都是Hive的优化器。Spark2放弃了Hive on Spark计划,抉择从头开始做SQL解析、优化,发明了Spark SQL和Catalyst。所以说,Spark Thrift Server只是兼容了HiveServer2的Thrift通信协议,它整个SQL的解析、优化都被重写了。 Kyuubi也是用Spark来解析、优化和执行SQL,所以对于用户来说,客户端与服务端的通信协议是截然不同的,因为大家兼容的都是HiveServer2的通信协议。然而在SQL方言上,Kyuubi和Spark Thrift Server是Spark SQL,HiveServer2是HiveQL。SQL的编译和优化过程,HiveServer2在本过程上进行,Spark是在Driver端进行。对于STS,Thrift Server和Driver在同一个过程内;对于Kyuubi,Thrift Server和Spark Driver是拆散的,它们能够跑在同一台机器上的不同过程(如YARN Client模式),也能够跑在不同的机器上(如YARN Cluster模式)。 对于执行阶段,当一条SQL提交后,HiveServer2会将其翻译成了一个Spark Application,每一次SQL提交就会生成一个全新的Spark的利用,都会经验Driver的创立、Executor的创立过程,SQL执行完结后再将其销毁掉。Spark Thrift Server则是齐全相同的形式,一个Spark Thrift Server只持有一个Driver,Driver是常驻的,所有的SQL都会由这一个Driver来编译、执行。Kyuubi不仅对这两种形式都反对,还反对了更灵便的Driver共享策略,会在后续具体介绍。 Kyuubi on Spark与CDH集成CDH是应用最宽泛的Apache Hadoop发行版之一,其自身集成了Spark,然而禁用了Spark Thrift Server性能和spark-sql命令,使得用户只能通过spark-shell、spark-submit应用Spark,故而在CDH上应用Spark SQL具备肯定的门槛。在CDH上SQL计划用得更多的往往是Hive,比如说咱们能够通过Beeline、HUE连贯HiveServer2,来进行SQL批工作提交或交互式查问,同时也能够通过Apache Superset这类BI工具连贯到HiveServer2上做数据可视化展现,背地最终的计算引擎能够是MapReduce,也能够是Spark。 当咱们引入Kyuubi后,图中左侧的这些Client都是不须要更改的,只须要部署Spark3和Kyuubi Server(以后Kyuubi仅反对Spark3),再把Client连贯地址改一下,即可实现从HiveQL到Spark SQL的迁徙。当然其间可能会碰到HiveQL方言跟Spark SQL方言的差异性问题,能够联合老本抉择批改Spark或者批改SQL来解决。 Kyuubi中有一个重要的概念叫作引擎共享级别(Engine Share Level),Kyuubi通过该个性提供了更高级的Spark Driver共享策略。Spark Engine与Spark Driver概念是等价的,都对应一个Spark Application。Kyuubi目前提供了三种Engine共享级别,SERVER、USER和CONNECTION,缺省是USER模式。 SERVER模式相似Spark Thrift Server,Kyuubi Server只会持有一个Spark Engine,即所有的查问都会提交到一个Engine上来跑。USER模式即每个用户会应用独立的Engine,能做到用户级别的隔离,这也是更具普适性的一种形式,一方面不心愿太浪费资源,每个SQL都起一个Engine,另一方面也心愿放弃肯定的隔离性。CONNECTION模式是指Client每建设一个连贯,就创立一个Engine,这种模式和Hive Server2较为相似,但不完全一致。CONNECTION模式比拟适宜跑批计算,比方ETL工作,往往须要数十分钟甚至几个小时,用户不心愿这些工作相互烦扰,同时也心愿不同的SQL有不同的配置,例如为Driver调配2G内存还是8G内存。总的来说,CONNECTION模式比拟适宜跑批工作或者大工作,USER模式比拟适宜HUE交互式查问的场景。 ...

November 18, 2021 · 2 min · jiezi

关于大数据:RabbitMQ死信队列延迟队列使用原理

简介 本文介绍RabbitMQ的死信队列和提早队列。 本内容也是Java后端面试中常见的问题。 死信队列 简介 DLX,全称为Dead-Letter-Exchange,能够称之为死信交换器,也有人称之为死信邮箱。当音讯在一个队列中变成死信(dead message)之后,它能被从新被发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。 以下几种状况会导致音讯变成死信: 音讯被回绝(Basic.Reject/Basic.Nack),并且设置requeue参数为false; 音讯过期; 队列达到最大长度。 DLX是一个失常的交换器,和个别的交换器没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性。当这个队列中存在死信时,RabbitMQ就会主动地将这个音讯从新公布到设置的DLX下来,进而被路由到另一个队列,即死信队列。能够监听这个队列中的音讯以进行相应的解决,这个个性与将音讯的TTL设置为0配合应用能够补救immediate参数的性能。 为队列增加DLX的办法 法1:代码形式 //创立 DLX: dlx_exchange channel.exchangeDeclare("dlx_exchange", "direct" ); Map<String, Object> args = new HashMap<String, Object>; args.put("x-dead-letter-exchange", "dlx_exchange"); //为队列myqueue增加DLX channel.queueDeclare("myqueue", false, false, false, args); 也能够为这个DLX指定路由键。(如果没有非凡指定,则应用原队列的路由键) args.put("x-dead-letter-routing-key","dlx-routing-key"); 法2:命令形式 rabbitmqctl set_policy DLX ".*" '{"dead-letter-exchange":"dlx_exchange"}' --apply-to queues 示例 代码 channel.exchangeDeclare("exchange.dlx", "direct", true); channel.exchangeDeclare("exchange.normal", "fanout", true); Map<String, Object> args = new HashMap<String, Object>(); args.put("x-message-ttl", 10000); args.put("x-dead-letter-exchange" , "exchange.dlx"); args.put("x-dead-letter-routing-key" , "routingkey"); channel.queueDeclare("queue.normal" , true, false, false, args); channel.queueBind("queue.normal", "exchange.normal", ""); channel.queueDeclare("queue.dlx", true, false, false, null); channel.queueBind("queue.dlx", "exchange.dlx" , "routingkey"); channel.basicPublish("exchange.normal" , "rk", MessageProperties.PERSISTENT_TEXT_PLAIN, "dlx".getBytes()); ...

November 18, 2021 · 1 min · jiezi

关于大数据:大数据开发技术之Storm原理与实践

一、Storm简介1. 引例在介绍Storm之前,咱们先看一个日志统计的例子:如果咱们想要依据用户的拜访日志统计应用斗鱼客户端的用大数据培训户的地区散布状况,个别状况下咱们会分这几步:• 取出拜访日志中客户端的IP• 把IP转换成对应地区• 依照地区进行统计 Hadoop貌似就能够轻松搞定:• map做ip提取,转换成地区• reduce以地区为key聚合,计数统计• 从HDFS取出后果 如果有时效性要求呢?• 小时级:还行,每小时跑一个MapReduce Job• 10分钟:还对付能跑• 5分钟 :够呛了,等槽位可能要几分钟呢• 1分钟 :算了吧,启动Job就要几十秒呢• 秒级 :… 要满足秒级别的数据统计需要,须要• 过程常驻运行;• 数据在内存中 Storm正好适宜这种需要。2. 个性Storm是一个分布式实时流式计算平台。次要个性如下:• 简略的编程模型:相似于MapReduce升高了并行批处理复杂性,Storm升高了实时处理的复杂性,只需实现几个接口即可(Spout实现ISpout接口,Bolt实现IBolt接口)。• 反对多种语言:你能够在Storm之上应用各种编程语言。默认反对Clojure、Java、Ruby和Python。要减少对其余语言的反对,只需实现一个简略的Storm通信协议即可。• 容错性:nimbus、supervisor都是无状态的, 能够用kill -9来杀死Nimbus和Supervisor过程, 而后再重启它们,工作照常进行; 当worker失败后, supervisor会尝试在本机重启它。• 分布式:计算是在多个线程、过程和服务器之间并行进行的。• 持久性、可靠性:音讯被长久化到本地磁盘,并且反对数据备份避免数据失落。• 牢靠的音讯解决:Storm保障每个音讯至多能失去一次残缺解决。工作失败时,它会负责从音讯源重试音讯(ack机制)。• 疾速、实时:Storm保障每个音讯能能失去疾速的解决。 3. 与罕用其余大数据计算平台比照• Storm vs. MapReduce Storm的一个拓扑常驻内存运行,MR作业运行完了进行就被kill了;storm是流式解决,MR是批处理;Storm数据在内存中不写磁盘,而MR会与磁盘进行交互;Storm的DAG(有向无环图)模型能够组合多个阶段,而MR只能够有MAP和REDUCE两个阶段。 Storm vs. Spark Streaming Storm解决的是每次传入的一条数据,Spark Streaming理论解决的是微批量数据。二、Storm的架构和运行时原理1. 集群架构如上图所示,一个典型的storm集群蕴含一个主控节点Nimbus,负责资源分配和任务调度;还有若干个子节点Supervisor,负责承受nimbus调配的工作,启动和进行属于本人治理的worker过程;Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群实现。2. Storm的容错(Fault Tolerance)机制Nimbus和Supervisor过程被设计成疾速失败(fail fast)的(当遇到异样的状况,过程就会挂掉)并且是无状态的(状态都保留在Zookeeper或者在磁盘上)。 Nimbus与Supervisor自身也是无状态的,状态信息是由zookeeper存储(实现了高可用,当nimbus挂掉,能够找另外一个节点启动nimbus过程,状态信息从zookeeper取得)。在Nimbus过程失败后,能够疾速重启恢复正常工作,不须要很长的工夫来进行初始化和状态复原。当Nimbus从zookeeper得悉有supervisor节点挂掉,能够将该节点的工作重新分配给其余子节点。Nimbus在“某种程度”上属于单点故障的。在理论中,即便Nimbus过程挂掉,也不会有灾难性的事件产生 。当Nimbus挂掉会怎么? 曾经存在的拓扑能够持续失常运行,然而不能提交新拓扑;正在运行的worker过程依然能够持续工作。而且当worker挂掉,Supervisor会始终重启worker。失败的工作不会被调配到其余机器(是Nimbus的职责)上了当一个Supervisor(slave节点)挂掉会怎么? 调配到这台机器的所有工作(task)会超时,Nimbus会把这些工作(task)重新分配给其余机器。当一个worker挂掉会怎么样?当一个worker挂掉,Supervisor会重启它。如果启动始终失败那么此时worker也就不能和Nimbus放弃心跳了,Nimbus会重新分配worker到其余机器3. Storm的编程模型Strom在运行中可分为spout与bolt两个组件,其中,数据源从spout开始,数据以tuple的形式发送到bolt,多个bolt能够串连起来,一个bolt也能够接入多个spot/bolt。运行时Topology如下图:编程模型的一些基本概念:• 元组 • storm应用tuple(元组)来作为它的数据模型。每个tuple由一堆域(field)组成,每个域有一个值,并且每个值能够是任何类型。• 一个tuple能够看作一个没有办法的java对象。总体来看,storm反对所有的根本类型、字符串以及字节数组作为tuple的值类型。 • Spout • i. BaseRichSpout是实现 IRichSpout接口的类,对上述必要的办法有默认的实现;• ii. 如果业务须要自定义ack()、fail() 等办法,抉择实现 IRichSpout接口;• iii. 如果业务没有自定义需要,抉择继承BaseRichSpout类,能够不实现并不一定须要用户实现的办法,简化开发。• i. open办法是初始化动作。容许你在该spout初始化时做一些动作,传入了上下文,不便取上下文的一些数据。• ii. close办法在该spout敞开前执行。• iii. activate和deactivate :一个spout能够被临时激活和敞开,这两个办法别离在对应的时刻被调用。• iv. nextTuple 用来发射数据。Spout中最重要的办法。• v. ack(Object)传入的Object其实是一个id,惟一示意一个tuple。该办法是这个id所对应的tuple被胜利解决后执行。• vi. fail(Object)同ack,只不过是tuple解决失败时执行。• Spout是在一个topology中产生源数据流的组件。通常状况下spout会从内部数据源中读取数据,而后转换为topology外部的源数据。Spout是一个被动的角色,其接口中有个nextTuple()函数,storm框架会不停地调用此函数,用户只有在其中生成源数据即可。• 实现Spout时,须要实现最顶层形象ISpout接口外面的几个办法 ...

November 18, 2021 · 1 min · jiezi

关于大数据:SpringBootRabbitMQ-实现-RPC-调用

说到 RPC(Remote Procedure Call Protocol 近程过程调用协定),小伙伴们脑海里蹦出的预计都是 RESTful API、Dubbo、WebService、Java RMI、CORBA 等。 其实,RabbitMQ 也给咱们提供了 RPC 性能,并且应用起来很简略。 明天松哥通过一个简略的案例来和大家分享一下 Spring Boot+RabbitMQ 如何实现一个简略的 RPC 调用。 留神 对于 RabbitMQ 实现 RPC 调用,有的小伙伴可能会有一些误会,心想这还不简略?搞两个音讯队列 queue_1 和 queue_2,首先客户端发送音讯到 queue_1 上,服务端监听 queue_1 上的音讯,收到之后进行解决;解决实现后,服务端发送音讯到 queue_2 队列上,而后客户端监听 queue_2 队列上的音讯,这样就晓得服务端的处理结果了。 这种形式不是不能够,就是有点麻烦!RabbitMQ 中提供了现成的计划能够间接应用,十分不便。接下来咱们就一起来学习下。 架构先来看一个简略的架构图:这张图把问题说的很明确了: 首先 Client 发送一条音讯,和一般的音讯相比,这条音讯多了两个要害内容:一个是 correlation_id,这个示意这条音讯的惟一 id,还有一个内容是 reply_to,这个示意音讯回复队列的名字。Server 从音讯发送队列获取音讯并解决相应的业务逻辑,解决实现后,将处理结果发送到 reply_to 指定的回调队列中。Client 从回调队列中读取音讯,就能够晓得音讯的执行状况是什么样子了。这种状况其实非常适合解决异步调用。 实际接下来咱们通过一个具体的例子来看看这个怎么玩。2.1 客户端开发首先咱们来创立一个 Spring Boot 工程名为 producer,作为音讯生产者,创立时候增加 web 和 rabbitmq 依赖,如下图:我的项目创立胜利之后,首先在 application.properties 中配置 RabbitMQ 的根本信息,如下: spring.rabbitmq.host=localhostspring.rabbitmq.port=5672spring.rabbitmq.username=guestspring.rabbitmq.password=guestspring.rabbitmq.publisher-confirm-type=correlatedspring.rabbitmq.publisher-returns=true这个配置后面四行都好了解,我就不赘述,前面两行:首先是配置音讯确认形式,咱们通过 correlated 来确认,只有开启了这个配置,未来的音讯中才会带 correlation_id,只有通过 correlation_id 咱们能力将发送的音讯和返回值之间关联起来。最初一行配置则是开启发送失败退回。大数据培训 ...

November 17, 2021 · 2 min · jiezi

关于大数据:大数据开发之Kafka

前言Kafka是一个分布式的流解决平台(0.10.x版本),在kafka0.8.x版本的时候,kafka次要是作为一个分布式的、可分区的、具备大数据培训正本数的日志服务零碎(Kafka™ is a distributed, partitioned, replicated commit log service), 具备高水平扩展性、高容错性、访问速度快、分布式等个性;次要利用场景是:日志收集零碎和音讯零碎为什么应用Kafka 它有什么劣势有以下特点:大数据畛域、高吞吐量、低提早、可扩展性、持久性、可靠性、容错性、高并发Kafka适宜以下利用场景大数据畛域、日志收集、音讯零碎、流动跟踪、数据处理、行为日志、等等方面Kafka常常被用到的模式有点对点或者 公布/订阅模式:点对点很容易了解 一对一的公布承受音讯,公布和订阅模式 相似于播送 就比方 微信公众号推文,每天要给这一个公众号外面的所有用户推文,不能一对一的发送音讯,要一对一的发送万一有几百万粉丝订阅,这得创立多少队列在录入数据的时候得有多麻烦,所以就要应用公布/订阅模式去解决,公布/订阅模式外面波及了一个比拟好的点就是 我能够依据场景去抉择我要哪一种模式,一种是能够让消费者主动去拉取数据本人去管制流量运行的速度,然而这里有一个毛病就是kafka被动被消费者程序拉去,被动询问是否有新的音讯 这里防止不了有一个循环,始终去询问kafka有没有新数据,比拟浪费资源。 一种是我被动推送音讯到消费者那里,微信公众号就是这样的逻辑,被动推送音讯给粉丝。架构图生产者:用来生产音讯并推送到对应的主题外面。kafka集群:能够了解为部署多个kafka,能够在一台机器下面 也能够不输在多台机器下面。broker:能够了解为单个kafka,也就是图下面机器N 的官网名称。topic:主题,生产者/消费者订阅主题进行收发音讯,次要为了解决某一kafka下面能够反对多个程序处理不同的事。leader/follower:一个是备份 一个是leader,当leader出问题的时候,follower会上移进化成leader,防止咱们的服务挂掉。分区:次要是用来削峰,能让咱们的程序能平均的解决音讯。消费者:消费者外面有一个概念,就是有一个消费者组的这么一说,外面有一个要留神的中央就是 某一个主题只能被某一个消费者组外面某一个用户用来生产,就是同一个组外面消费者不能订阅同一个主题,最好是主题与消费者组外面消费者个数统一 否则会造成资源节约,造成闲暇的消费者。zk:用于kafka注册音讯应用,9.0以下版本 音讯解决的偏移量放到zk外面存储,9.0以上偏移量就放到kafka topic外面存储,次要就是为了解决不频繁的与zk交互。常用命令zk 装置:去官网下载对应压缩包:https://zookeeper.apache.org/...cd /tmp/zookeeper/zookeeper-node1/confcp /tmp/zookeeper/zookeeper-node1/conf/zoo_sample.cfg /tmp/zookeeper/zookeeper-node1/conf/zoo.cfg data与log 默认zookeeper外面没有须要手动创立zoo.cfg配置文件须要批改的中央:dataDir=/tmp/zookeeper/zookeeper-node1/data #音讯缓存门路dataLogDir=/tmp/zookeeper/zookeeper-node1/log #音讯log门路 zookeeper集群须要配置server 伪集群只须要改一下对应的端口就OK了server.1=47.94.2.151:2888:3888server.2=47.94.2.151:2889:3889server.3=47.94.2.151:2890:3890启动zk的时候要查看是否有java环境,没有的话须要装置一下 以centos7为例:yum install java启动zkServer.sh (start|stop|restart)等启动命令行调试:bash zkCli.shls / 查看是否有kafka注册上来ls /broker 查看机器broker 上面与主题等kafka 应用docker装置这里应用 docker-compose,具体配置文件 docker-compose.yml 内容如下version: '3'services: zookeeper: image: wurstmeister/zookeepervolumes: - /etc/localtime:/etc/localtime:roports: - "2181:2181"restart: alwayskafka: image: wurstmeister/kafkaports: - "9092:9092"environment: KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181volumes: - /var/run/docker.sock:/var/run/docker.sock - /data/db/kafka:/kafka/KafkaLog - /etc/localtime:/etc/localtime:rodepends_on: - zookeeperrestart: alwaysdocker-compose根底命令docker-compose up -d 在后盾启动docker-compose down 进行kafka分布式装置去官网下载对应压缩包:http://kafka.apache.org/downl...vim /tmp/kafka/config/server.properties机器的ID必须惟一且为intbroker.id=0 kafka地址listeners=PLAINTEXT://127.0.0.1:9092音讯存储门路log.dirs=/tmp/kafka/logszk 门路zookeeper.connect=127.0.0.1:2181kafka启动敞开:start开启 stop进行bash /bin/kafka-server-start.sh -daemon ../config/server.propertieskafka cmd操作:所有主题:bash kafka-topics.sh --list --zookeeper 127.0.0.1:2181创立:bash kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test删除:bash kafka-topics.sh --delete --zookeeper localhost:2181 --topic testkafka 生产者:./kafka-c testkafka 消费者:./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic testkafka消费者组:bash kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic deamon --consumer.config ../config/consumer.propertiesbash kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic deamon --consumer.config ../config/consumer.properties生产形式+分区调配策略注:消费者组外面的消费者不可反复订阅 主题外面的分区生产形式:次要有两种: ...

November 17, 2021 · 2 min · jiezi

关于大数据:大数据开发运维之YARN运维

1.扩缩容hadoop节点下线nodemanagerStep-by-step guide下线Nodemanager:在yarn-site.xml中配置以下配置:<property><name>yarn.resourcemanager.nodes.exclude-path</name><value>/etc/hadoop/conf/mapred.exclude</value><final>true</final></property>当前有节点下线只须要编辑mapred.exclude文件,每个节点一行以yarn 用户执行yarn rmadmin -refreshQueues 则会把exclude的节点标记为下线2.资源队列调整1.案例yz-4m1-01集群上的队列分为生产型和非生产型。在2017年4月12日凌晨0点--早上9点,非生产型队列占用资大数据培训源较多,导致集群压力过大,影响了当日早上9点的dwa下发。生产侧提出了队列资源的优化计划,如下:2.备份以后队列的配置文件在CM首页点击yarn在yarn的【配置】页面,搜寻“容量调度”,调出右侧的【值】将【值】中的数据全副复制进去备份到本地。倡议粘贴到写字板上,粘贴到txt里排版会呈现凌乱。3.批改以后队列的配置信息以qc队列为例:4.保留更改5.刷新动静资源池在CM首页,点击集群左边的倒三角,再点击【刷新动静资源池】6.核实曾经批改胜利在Applications页面的Scheduler,调出qc队列的信息。3.无CM批改队列资源1.需要:固网集群xx队列lf_zl资源38%*1.8拆分原队列 lf_zl 改为 25%*2 ----租户应用其余资源新增队列lf_ja 13%*1.8 -----预计后续部署租户应用2.批改capacity-scheduler.xmlcd/opt/beh/core/hadoop/etc/hadoop/ #进入配置文件所在目录cpcapacity-scheduler.xmlcapacity-scheduler.xml_20170616 #备份配置文件vi capacity-scheduler.xml #批改配置文件批改yarn.scheduler.capacity.root.queues的值,在value里增加lf_ja批改原lf_zl的值:把yarn.scheduler.capacity.root.lf_zl.capacity的值从38改为25把yarn.scheduler.capacity.root.lf_zl.user-limit-facto的值从1.8改为2在配置文件中新增队列配置文件,如下:<property><name>yarn.scheduler.capacity.root.lf_ja.capacity</name><value>13</value><description>default queue target capacity.</description></property><property><name>yarn.scheduler.capacity.root.lf_ja.user-limit-factor</name><value>1.8</value><description>default queue user limit a percentage from 0.0 to 1.0.</description></property><property><name>yarn.scheduler.capacity.root.lf_ja.maximum-capacity</name><value>100</value><description>The maximum capacity of the default queue.</description></property><property><name>yarn.scheduler.capacity.root.lf_ja.state</name><value>RUNNING</value><description>The state of the default queue. State can be one of RUNNING or STOPPED.</description></property><property><name>yarn.scheduler.capacity.root.lf_ja.acl_submit_applications</name><value>lf_ja_pro</value><description>The ACL of who can submit jobs to the default queue.</description></property><property><name>yarn.scheduler.capacity.root.lf_ja.acl_administer_queue</name><value>lf_ja_pro</value><description>The ACL of who can administer jobs on the default queue.</description></property>3.把更改后的配置文件拷贝到stanby节点cp/opt/beh/core/hadoop/etc/hadoop/capacity-scheduler.xml /opt/beh/core/hadoop/etc/hadoop/capacity-scheduler.xml_20170616#登录stanby节点备份原配置文件scp/opt/beh/core/hadoop/etc/hadoop/capacity-scheduler.xml hadoop@10.162.3.71:/opt/beh/core/hadoop/etc/hadoop/capacity-scheduler.xml #把批改后的配置文件拷贝到备节点主机上4.登录主节点动静刷新资源池yarn rmadmin -refreshQueues#刷新动静资源池5.登录yarn界面查看更改后果是否正确,如图:4.批改用户yarn资源分配hadoop批改用户yarn队列调配倍数1.以管理员用户登录所要更改的CM,进入后点击yarn,如图:2.在yarn界面点击配置按钮,并在弹出的查找框中输出“容量调度”,查找如图:3.把呈现的值粘贴到文本留作备份(倡议粘贴到写字板上,粘贴到txt里排版会呈现凌乱)切记肯定要备份!!!4.批改所需批改的值(个别限度用户队列,倡议批改调配的倍数即Configured User Limit Factor这个值。批改Absolute Capacity须要对整体集群进行计算,所以用户加一起的达到百分百,倡议不做批改)5.列:如批改didi用户的Configured User Limit Factor值。(1)登录yarn,点击Scheduler,点击didi用户的倒三角图标:咱们能够看出didi用户的Configured User Limit Factor值为3,即他能够应用超出他调配百分比的三倍。(2)批改拷贝中的文本,查找didi配置文件那列:(3)找到所需批改的值Configured User Limit Factor。将倍数批改成须要调整后的值。(3)把配置文件拷贝回CM-yarn-配置-容量调度的那个文本框里,点击保留。(4)回到CM主页,点击集群左边的倒三角,点击刷新动静资源池。(5)配置结束,到yarn上查看批改是否胜利。 ...

November 16, 2021 · 1 min · jiezi

关于大数据:大数据可视化BI分析工具Superset部署详解

概述Apache Superset是一个开源的、古代的、轻量级BI剖析工具,领有丰盛的图表展现模式、反对自定义仪表盘,可能对接多种数据源、且领有敌对的用户界面,非常好用。利用场景因为Superset可能对接罕用的大数据分析工具,如Hive、Kylin、Impala、Druid、mysql等,且反对自定义仪表盘,故可作为数仓的可视化工具。装置及应用3.1 环境要求Superset是由Python语言编写的Web利用,要求Python3.7的环境。 3.2 装置Miniconda为了不影响零碎自身的python环境,本次部署抉择conda,conda是一个开源的包、环境管理器,能够用于在同一个机器上装置不同Python版本的软件包及其依赖,并可能在不同的Python环境之间切换,Anaconda包含Conda、Python以及一大堆装置好的工具包,比方:numpy、pandas等,Miniconda包含Conda、Python。此处,咱们不须要如此多的工具包,故抉择MiniConda。 下载Miniconda下载地址: https://repo.anaconda.com/min...装置Miniconda(普通用户装置)新建test用户,用普通用户装置部署[root@node02 ~]# useradd test[test@node02 opt]$ wgethttps://repo.anaconda.com/min...执行以下命令进行装置,并依照提醒操作,直到装置实现。[test@node02 opt]$ bash Miniconda3-latest-Linux-x86_64.sh在装置过程中,呈现以下提醒时,回车键持续[test@node02 ~]$ bash Miniconda3-latest-Linux-x86_64.shWelcome to Miniconda3 py39_4.10.3In order to continue the installation process, please review the licenseagreement.Please, press ENTER to continue ... Miscellaneous--More-- 输出yes Do you accept the license terms? [yes|no] 呈现以下提醒时,能够指定装置门路,不指定默认/home/test/miniconda3 Miniconda3 will now be installed into this location:/home/test/miniconda3 Press ENTER to confirm the locationPress CTRL-C to abort the installationOr specify a different location below[/home/test/miniconda3] >>>初始化,yesPreparing transaction: doneExecuting transaction: doneinstallation finished.Do you wish the installer to initialize Miniconda3by running conda init? [yes|no][no] >>> ...

November 16, 2021 · 3 min · jiezi

关于大数据:零基础学习大数据有哪些学习技巧

大数据开发技术在一直倒退,在咱们生存和工作中也失去了很好的体现,而且其薪资待遇也是十分高的,因而有很多小伙伴将眼光都转移到大数据开发技术常识的学习上来,想过通过大数据培训的形式来取得开发技术常识,以达到胜利入行大数据开发的目标,然而想要胜利入行大数据开发,还须要更为零碎的学习开发技术常识,那对于零根底学习大数据开发技术有什么好的学习办法没有呢?1.对于基础知识大数据开发技术的学习对于零根底的小伙伴来说是有肯定难度的,因为学习大数据开发技术相干的开发技术常识体系是比拟宏大的,然而没关系,对于大数据的学习来说学,的确逻辑思维能力是更重要的。基础知识是能够通过学习进行补救的,大数据培训则成为小伙伴比拟靠谱的学习形式。在大数据培训班第一阶段就是根底内容的学习,通常须要花一个月的工夫来为你打牢根底。2.大数据课程的内容对于大数据培训课程内容的问题呢,不同的大数据培训机构在课程内容上侧重点可能会有所不同,所以在培训周期上也会有所差别。尚硅谷大数据培训班,学习课程内容除了第一阶段学习Java语言根底之外,还要学习HTML、CSS、Java、JavaWeb和数据库、Linux根底、Hadoop生态体系、Spark生态体系等课程内容。3.我的项目的实操分割我的项目实战对学习大数据的同学来说是一个必须通过的过程。学习大数据的同学只有通过我的项目实战训练,能力在面试和前期工作中从容应对,这是一个很重要的过程。当然了,我的项目实战训练工夫与我的项目的难度、我的项目的数量相干,我的项目难度较大、我的项目较多,当然学习的工夫会更长。小伙伴想要更疾速的入门大数据开发技术学习,尚硅谷是一家比拟靠谱的大数据培训机构,而后通过一直的努力学习,积攒丰盛本身知识结构,一直去摸索适宜本人的学习办法,能力更疾速的进步学习效率。

November 12, 2021 · 1 min · jiezi

关于大数据:大数据-ETL-处理工具-Kettle-的核心概念

在理论工作中,能够应用 Kettle 的图形化的形式定义简单的 ETL 程序和工作流,如下图就是通过一系列的转换(Transformation) 实现一个作业(Job)流程。 Kettle 外围概念 转换转换(Transaformation)是 ETL 中最次要的局部,它解决抽取、转换、加载各种对数据行的操作。 转换蕴含一个或多个步骤(Step),如上图中的「CSV 文件输出」、「Excel输入」步骤,还包含过滤数据行、数据荡涤、数据去重或将数据加载到数据库等等。 转换里的步骤通过跳(hop)来进行连贯,跳定义一个单向通道,容许数据从一个步骤向另一个步骤流动。 步骤(Step) Kettle 外面的,Step 步骤是转换里的根本的组成部分,上篇疾速体验的案例中就存在两个步骤,「CSV文件输出」和「Excel输入」,一个步骤有如下几个要害个性: 步骤须要有一个名字,这个名字在转换范畴内惟一。 每个步骤都会读、写数据行(惟一例外是「生成记录」步骤,该步骤只写数据)。 步骤将数据写到与之相连的一个或多个输入跳,再传送到跳的另一端的步骤。 大多数的步骤都能够有多个输入跳,当有多个输入时,会弹出如下图所示的正告进行抉择散发还是复制。一个步骤的数据发送能够被设置为散发和复制,散发是指标步骤轮流接管记录,复制是所有的记录被同时发送到所有的指标步骤。 跳(Hop) Kettle 外面的,跳(Hop),跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路,如上图。在 Kettle里,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的挪动, 跳是两个步骤之间的被称之为行集的数据行缓存(行集的大小能够在转换的设置里定义,如下图)。当行集满了,向行集写数据的步骤将进行写入,直到行集里又有了空间;当行集空了,从行集读取数据的步骤进行读取,直到行集里又有可读的数据行。大数据培训 行集设置 数据行在 Kettle 里,数据的单位是行,数据以数据行的模式沿着步骤挪动。一个数据行是零到多个字段的汇合,字段蕴含上面几种数据类型。 String:字符类型数据Number:双精度浮点数Integer:带符号长整型(64位)BigNumber:任意精度数据Date:带毫秒精度的日期工夫值Boolean:取值为 true 和 false 的布尔值Binary:二进制字段能够蕴含图像、声音、视频及其他类型的二进制数据image-20210708013817323 同时,每个步骤在输入数据行时都有对字段的形容,这种形容就是数据行的元数据。通常蕴含上面一些信息: 名称:行里的字段名利用是惟一的数据类型:字段的数据类型格局:数据显示的形式,如 Integer 的#、0.00长度:字符串的长度或者 BigNumber 类型的长度精度:BigNumber 数据类型的十进制精度货币符号:¥小数点符号:十进制数据的小数点格局分组符号:数值类型数据的分组符号步骤是并行的这种基于行集缓存的规定(后面 「跳(Hop)」节提到),容许每个步骤都是由一个独立的线程运行,这样并发水平最高。这一规定也容许数据以最小耗费内存的数据流的形式来解决(设置正当的行集大小)。在数据仓库建设过程中,常常要解决大量数据,所以这种并发低消耗内存的形式也是 ETL 工具的外围需要。 对于 Kettle 的转换,所有步骤都以并发形式执行,即:当转换启动后,所有步骤都同时启动,从它们的输出跳中读取数据,并把解决过的数据写到输出跳,直到输出跳里不再有数据,就停止步骤的运行。当所有的步骤都停止了,整个转换就停止了。 总结Kettle 通过一系列的转换(Transformation) 实现一个作业(Job)流程通过理解 Kettle 的外围概念,得悉 Kettle 是通过「跳(Hop)」将数据流从一个步骤到另一个步骤的挪动,每个步骤都是由一个独立的线程运行,这样进步并发水平,但相比 Hadoop 生态挪动计算模型更加低廉Kettle 自身由 Java 开发,须要配置正当的 JVM 参数。

November 12, 2021 · 1 min · jiezi

关于大数据:Apache-Pulsar-在-BIGO-的性能调优实战下

作者:陈航,BIGO 大数据音讯平台团队负责人。本期文章排版:Tango@StreamNative。对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/背 景在上一篇博客中,咱们探讨了 BIGO 在 Pulsar Broker 性能调优过程中遇到的一些问题并提出相应的解决方案。本篇博客,咱们将探讨 BIGO 在 Pulsar 底层分布式存储服务 BookKeeper 的性能调优工作。 对于 BIGO 而言,Apache Pulsar 在 bookie 端(BookKeeper 的单个存储节点)的零碎性能次要存在以下几个问题: 读申请耗时较长,排队重大;Bookie 呈现 direct memory Out of Memory (OOM),导致过程挂掉;压测的时候经常出现 broker direct memory OOM;当 journal 盘为 HDD 时,尽管敞开了 fsync,然而 bookie add entry 99th latency 仍旧很高, 写入性能很差;当大量读申请进入 bookie 时,呈现写被反压,add entry latency 回升。当 Ledger 盘为 HDD 时,体现更加显著。保障 BookKeeper 的稳定性以及高吞吐和低提早是 Pulsar 稳固、吞吐的基石。本文会基于 BookKeeper 基本原理介绍影响读写吞吐和稳定性的因素。咱们打算次要从以下六个方面介绍 bookie 性能调优: ...

November 11, 2021 · 6 min · jiezi

关于大数据:Palo-Doris版五分钟快速入门

本文转载自百度开发者核心https://developer.baidu.com/article/detail.html?id=294225 在本教程章节中,我将为大家介绍应用Palo UI疾速体验和应用Palo查问的操作过程。 私有云用户,请先参阅文档创立一个 Palo 集群。开源用户,须要在 fe.conf 中配置 enable_http_server_v2=true 后,重启 FE 节点。Palo UI是Palo为大家提供的能够疾速执行查问申请和进行一些治理操作的Web UI环境。 本文档中演示应用的demo数据和查问例句均来自于 Star Schema Benchmark,用户能够点击获取样例数据和SQL语句。进入Palo UI在Palo的集群详情页面中,提供了Palo UI的快捷入口。 点击Palo UI按钮,进入Web UI环境。在登陆页面输出用户名和明码,用户名是“admin”,明码是用户创立集群时填写的明码。 开源用户能够在浏览器关上 FE 节点的 http_port 端口(默认8030)。 点击登陆之后,就能够进入到Palo UI的主页面,默认页面就是Palo查问页面(Playground)。 Palo疾速查问页面次要分成三个区域,左侧为表治理区域,包含零碎库表和用户本人创立的表。右上区域是SQL执行区域,右下区域为表预览和数据导入以及执行后果区域。接下来咱们在本页面展现从建库、建表、导入数据、查问等次要步骤,帮忙首次应用Palo的用户体验一次残缺的应用流程。 建库建表在编辑器区域,咱们输出SQL语句创立一个example_db的库。点击执行之后,在下方能够看到执行后果,执行胜利之后,刷新左侧表区域,就能够在表治理区域看到新创建的example_db库了。 CREATE DATABASE example_db; 咱们的demo数据一共有5份销售相干的订单、日期、客户信息等数据样例,所以咱们须要创立5张对应的表。 首先咱们在example_db库中创立一个名为lineorder的表。Palo应用DISTRIBUTED关键字设置分桶列,分桶列用于对数据进行程度划分,个别咱们抉择一个能够帮忙数据可能平均划分的列作为分桶列。此处咱们应用lo_orderkey作为分桶列。此处咱们还设置了一个正本数为1,因为Palo默认三正本,如果咱们集群只购买了一个 Compute Node,则须要手动设置正本数为1。 这个表次要定义了订单号、订单工夫以及利润、税收等一些订单主信息。 CREATE TABLE lineorder ( lo_orderkey BIGINT, lo_linenumber BIGINT, lo_custkey INT, lo_partkey INT, lo_suppkey INT, lo_orderdate INT, lo_orderpriotity VARCHAR(16), lo_shippriotity INT, lo_quantity BIGINT, lo_extendedprice BIGINT, lo_ordtotalprice BIGINT, lo_discount BIGINT, lo_revenue BIGINT, lo_supplycost BIGINT, lo_tax BIGINT, lo_commitdate BIGINT, lo_shipmode VARCHAR(11))DISTRIBUTED BY HASH(lo_orderkey)PROPERTIES ("replication_num"="1");而后咱们再创立一个date表。应用d_datekey作为分桶列,并设置正本数为1。这个表定义的是更加具体一些的订单日期信息。 ...

November 11, 2021 · 2 min · jiezi

关于大数据:Hive计算最大连续登陆天数

一、背景在网站平台类业务需要中用户的「最大登陆天数」,需要比拟广泛。 原始数据: u0001 2019-10-10u0001 2019-10-11u0001 2019-10-12u0001 2019-10-14u0001 2019-10-15u0001 2019-10-17u0001 2019-10-18u0001 2019-10-19u0001 2019-10-20u0002 2019-10-20 阐明:数据是简化版,两列别离是user_id,log_in_date。现实情况须要从采集数据通过去重,转换失去以上模式数据。 咱们先建表并且将数据导入Hive: create table test.user_log_1 (user_id string, log_in_date string) row format delimited fields terminated by ' '; load data local inpath '/var/lib/hadoop-hdfs/data/user_log.txt' into table test.user_log_1 ; 查看一下数据: hive> select * from test.user_log_1 ;OKu0001 2019-10-10u0001 2019-10-11u0001 2019-10-12u0001 2019-10-14u0001 2019-10-15u0001 2019-10-17u0001 2019-10-18u0001 2019-10-19u0001 2019-10-20u0002 2019-10-20Time taken: 0.076 seconds, Fetched: 10 row(s) 二、算法外围是按拜访工夫排序,登陆工夫列减去排序后的序列号,失去一个日期值,按这个值分组计数即可。大数据培训 第一步:排序依照user_id分组,并且依照日期log_in_date排序:select user_id, log_in_date, row_number() over(partition by user_id order by log_in_date) as rank from test.user_log_1; ...

November 11, 2021 · 2 min · jiezi

关于大数据:大数据开发之数据仓库Hive学习介绍

Hive是什么?Hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射成为一张数据库表,并提供类SQL的查问性能。能够将sql语大数据培训句转化为MapReduce工作进行运行。Hive提供了一系列的工具,能够用来进行数据提取转化加载,这是一种能够存储、查问和剖析存储在 Hadoop 中的大规模数据的机制。Hive的架构用户接口:Shell/CLI,CLI,Shell终端命令行,采纳交互模式应用 Hive 命令行与 Hive 进行交互。Cli启动的时候,会同时启动一个Hive正本。JDBC/ODBC客户端是Hive的JAVA实现,与传统数据库JDBC相似。Web UI通过浏览器拜访hive。次要用来将咱们的sql语句提交给hive。Thrift服务器:Thrift是Facebook开发的一个软件框架,能够用来进行可扩大且跨语言的服务的开发,Hiv集成了该服务,能让不同的编程语言调用Hive的接口。元数据库: 存储在 Hive 中的数据的形容信息。Hive 将元数据存储在数据库中,如 mysql、derby。Hive中的元数据包含表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。解释器蕴含编译器、优化器、执行器:实现HQL查问语句从词法剖析、语法分析、编译、优化以及查问打算的生成。编译器:次要将sql语句编译成一个MR的工作。优化器:次要是对咱们的sql语句进行优化。执行器:提交mr工作,进行执行。Hive的数据基于HDFS进行存储,查问打算被转化为MapReduce工作,在Hadoop中执行。操作数据库1.创立数据库:create database if not exists 数据库名;2.创立数据库并指定hdfs存储地位:create database 数据库名 location ‘地位’;3.查看有哪些数据库:show databases;4.批改数据库的信息:alter database 数据库名 set dbproperties()5.查看数据库的信息:desc database 数据库名;6.查问具体数据库信息:desc database extended 数据库名;7.删除数据库(删除一个空数据库):drop database 数据库名;8.强制删除数据库(删除有数据的数据库):drop database myhive cascade;

November 11, 2021 · 1 min · jiezi

关于大数据:实时技术的荣光微软发布实时大数据分析产品

跨云智能设施和并行技术的新编程模型是数字化转型的一个要害方面。从这些新的利用范式中产生的要害数据类型之一是遥测数据。遥测数据无处不在: 物联网传感器、应用程序日志、网络日志、基础设施日志、平安日志、指标、点击流、工夫序列等等。从这些数据中释放出来的弱小洞察力推动了消费者和企业每天依赖的联网设施的提高。 利用遥测数据须要一个灵便的适应性平台,它必须能够解决大量数据,并为用户提供实时的洞察,以改善他们的操作和翻新。传统上,这些数据是在竖井零碎中存储和治理的,不足实时可见性,具备规模的限度,保护老本很高。此外,将这些数据与企业业务进行普及化和关联是很简单的。 Azure Synapse Data Explorer (数据浏览器)是什么? 为了让客户可能充分利用日志和遥测数据,微软公布Azure Synapse Data Explorer(数据浏览器)的公开预览。为了补充现有的SQL池和Apache Spark引擎,微软从产品层面对新的数据浏览器运行时引擎进行了优化,应用弱小的索引技术,主动索引自在文本和半结构化数据,让它能够近乎实时的速度查问大量的结构化、半结构化和自在文本遥测和工夫序列数据,以下是一些使之成为可能的要害性能: 弱小的分布式查问引擎,索引所有数据,包含自在文本和半结构化数据。数据被主动压缩、索引、主动优化,缓存在SSD上,并长久化在存储上。计算和存储是拆散的,这给了用户齐全的弹性来主动伸缩,而不须要停机。直观的Kusto查询语言(KQL),应用Synapse数据浏览器的最佳文本索引来摸索原始遥测和工夫序列数据,用于高效的自在文本搜寻、正则表达式和对跟踪\文本数据的解析。全面的JSON解析性能,用于查问半结构化数据,包含数组和嵌套构造。原生、高级工夫序列反对创立、操作和剖析多个工夫序列,引擎内Python和R执行反对模型评分。Azure Synapse数据浏览器的架构是什么样的?数据资源管理器集群通过计算资源和存储资源拆散来实现横向扩大的体系结构。这样,用户就能够独立扩大每种资源,例如,针对雷同的数据运行多个只读计算。数据资源管理器集群蕴含一组计算引擎,该引擎负责主动索引编制、压缩、缓存和分布式查问服务。另外,数据资源管理器集群还有一组数据管理服务的计算引擎,该服务负责后盾零碎作业,以及托管和排队的数据引入。所有数据以压缩的分列格局保留在托管的 Blob 存储帐户上。 数据资源管理器集群反对丰盛的生态系统,能够应用连接器、SDK、REST API 和其余托管性能引入数据。用户能够通过多种形式应用长期查问、报告、仪表板、警报、REST API 和 SDK 的数据。 Azure Synapse数据浏览器有哪些翻新和特色之处? 有限流数据引入 - 数据资源管理器提供内置的集成用于实现无代码/少代码、高吞吐量数据引入以及从实时源缓存数据。能够从Event hub、Kafka、Azure Data Lake 之类的源、Fluentd/Fluent Bit 之类的开源代理以及各种跨云和本地数据源引入数据。 无界数据建模 - 如果应用数据资源管理器,无需生成简单的数据模型,并且在应用数据之前无需编写简单的脚本来转换数据。 无穷数据规模 - 数据资源管理器是一个分布式系统,其计算和存储可独立缩放,能够轻松实现PB 量级之上的数据分析。 无需索引保护 - 无需执行保护工作即可优化数据以放弃查问性能,并且无需保护索引。应用数据资源管理器时,所有原始数据立刻可供使用,因而你能够针对流数据和永久性数据运行高性能、高并发的查问。能够应用这些查问生成准实时仪表板和警报,并将经营剖析数据连贯到数据分析平台的其余组件。 低提早、高性能、高并发 - 数据资源管理器为半结构化数据 (JSON) 和非结构化数据(自在文本)编制索引,因而能够非常高效地对此类数据运行查问。默认状况下,在数据引入期间将为每个字段编制索引,并能够通过相应的选项应用低级别编码策略,以微调或禁用特定字段的索引编制。索引范畴为单个数据分片。 规范数据分析 - 数据资源管理器通过直观的 Kusto 查询语言 (KQL) 标准化了自助式的大数据分析。KQL 兼备 SQL 的表白性和弱小性能,以及 Excel 的简便性。KQL 通过高度优化,能够利用数据资源管理器的一流文本索引技术摸索原始遥测数据和时序数据,实现高效的自在文本和正则表达式搜寻,并提供全面的剖析性能用于查问跟踪\文本数据和 JSON 半结构化数据(包含数组和嵌套构造)。KQL 提供高级时序反对用于创立、操作和剖析多个时序,并为模型评分提供引擎外部的 Python 执行反对。 ...

November 11, 2021 · 1 min · jiezi

关于大数据:这本少见的大数据采集与处理书到底讲了啥

计算技术的提高,以及挪动互联网、物联网、5G挪动通信技术的倒退,引发了数据规模的爆发式增长。大数据蕴含微小价值,引起了社会各界的高度关注。大概从2009年开始,“大数据”成为互联网信息技术行业的风行词汇。在经验了几年的批评、质疑、探讨、炒作之后,大数据终于迎来了属于它的时代。大数据时代将在泛滥畛域中掀起改革的巨浪。在以云计算为代表的技术创新大幕的烘托下,这些本来很难收集和应用的数据开始容易被利用起来了,通过各行各业的不断创新,大数据会逐渐为人类发明更多的价值。大数据的能量是不可估量的,比方在2020年,大数据分析技术在新冠肺炎疫情预测、密切接触者追踪方面都产生了至关重要的作用,大大晋升了疫情防控和停工复产的效率。然而,考察显示:未被应用的信息比例高达99%,造成这种后果的次要起因是无奈采集高价值的信息。如何从大数据中采集有用的信息并正当地存储起来是大数据倒退的最关键因素之一,也能够说数据采集与解决是大数据产业的基石。目前,大数据方面的著述、系列教材很多,但专门阐述大数据采集与解决方面的书籍不多。在此背景下,思考到大数据利用与行业及企业的联合严密,以及在大数据技术学习和教学中,应更偏差新技术的利用,对工程实际能力要求更高,河南工业大学软件学院副院长张雪萍传授组织多家单位大数据利用的一线研发工程师,总结多年研发教训,编写《大数据采集与解决》一书。本书内容贯通大数据采集与解决的全过程,采纳“实践根底+工具+案例实战” 的编排架构,系统化解说了大数据采集、大数据预处理、大数据存储与计算、大数据安全等重要环节的相干实践与技术,包含Hadoop生态系统,Scribe、Chukwa、Kafka、Flume等大数据采集工具,HDFS、NoSQL、ElasticSearch 3种大数据存储技术,Spark String、Storm、Flink3种流计算解决框架等;聚焦电商、金融、电信、煤炭、交通、教育等行业热点问题,实例化的解说了大数据采集与解决的实践与技术在行业实际中的具体利用,展现了残缺的数据采集、荡涤、解决的数据分析案例,以期给读者展现残缺的数据采集与解决实际操作流程。

November 10, 2021 · 1 min · jiezi

关于大数据:大数据预处理方法来看看你知道几个

大数据蕴含微小价值,引起了社会各界的高度关注。大数据的起源多种多样,从事实世界中采集的数据大体上都是不残缺、不统一的脏数据,无奈间接进行数据挖掘和剖析,或剖析开掘的后果差强人意。为了进步数据分析开掘的品质,须要对数据进行预处理。数据预处理办法次要包含数据荡涤、数据集成、数据转换和数据消减。 1 .数据荡涤事实世界的数据经常是不齐全的、含噪声的、不统一的。数据荡涤过程包含缺失数据处理、噪声数据处理,以及不统一数据处理。对于缺失的数据,能够采纳疏忽该条记录、手动补充缺失值、利用默认值填补缺失值、利用均值填补缺失值、利用最可能的值填补缺失值等办法解决。对于噪声数据,可采纳Bin办法、聚类分析办法、人机联合检测办法、回归办法来解决。对于不统一的数据,能够利用它们与内部的关联,手动解决这类问题。 2 .数据集成大数据处理经常波及数据集成操作,行将来自多个数据源的数据,如数据库、数据立方、一般文件等,联合在一起并造成一个对立的数据汇合,以便为数据处理工作的顺利完成提供残缺的数据根底。在数据集成过程中,须要思考解决以下几个问题。 (1)模式集成问题。模式集成问题指如何使来自多个数据源的事实世界的实体互相匹配,这其中波及实体辨认问题。例如,如何确定一个数据库中的“custom_id”与另一个数据库中的“custome_number”是否示意同一实体。 (2)冗余问题冗余问题是数据集成中常常产生的另一个问题。若一个属性能够从其余属性中推演出来,则这个属性就是冗余属性。例如,一个顾客数据表中的均匀月支出属性就是冗余属性,显然它能够依据月支出属性计算出来。此外,属性命名的不统一也会导致集成后的数据集呈现数据冗余问题。 (3)数据值冲突检测与打消问题数据值冲突检测与打消是数据集成中的另一个问题。在事实世界实体中,来自不同数据源的属性值或者不同。产生这种问题的起因可能是示意、比例尺度,或编码的差别等。例如,分量属性在一个零碎中采纳公制,而在另一个零碎中却采纳英制;价格属性在不同地点采纳不同的货币单位。这些语义的差别为数据集成带来许多问题。 3 .数据转换数据转换就是将数据进行转换或归并,从而形成一个适宜数据处理的形容模式。罕用的转换策略如下。 (1)规格化解决规格化解决就是将一个属性取值范畴投射到一个特定范畴之内,以打消数值型属性因大小不一而造成开掘后果的偏差,经常用于神经网络、基于间隔计算的最近邻分类和聚类开掘的数据预处理。对于神经网络,采纳规格化后的数据不仅有助于确保学习后果的正确性,而且也会帮忙进步学习的效率。对于基于间隔计算的开掘,规格化办法能够帮忙打消因属性取值范畴不同而影响开掘后果的公正性。 (2)属性结构解决属性结构解决就是依据已有属性集结构新的属性,以帮忙数据处理过程。属性构造方法能够利用已有属性集结构出新的属性,并将其退出现有属性汇合中以开掘更深层次的模式常识,进步开掘后果准确性。 (3)数据离散化解决数据离散化解决是将数值属性的原始值用区间标签或概念标签替换的过程,它能够将间断属性值离散化。间断属性离散化的本质是将间断属性值转换成多数无限的区间,从而无效地进步数据挖掘工作的计算效率。 (4)数据泛化解决数据泛化解决就是用更形象(更高层次)的概念来取代低层次或数据层的数据对象,它广泛应用于标称数据的转换。例如,街道属性能够泛化到更高层次的概念,如城市、国家;数值型属性(如年龄属性),能够映射到更高层次的概念,如青年、中年和老年。 4. 数据消减对大规模数据进行简单的数据分析通常须要消耗大量的工夫,这时就须要应用数据消减技术了。数据消减技术的次要目标是从原有微小数据集中取得一个精简的数据集,并使这一精简数据集放弃原有数据集的完整性。这样在精简数据集上进行数据挖掘就会提高效率,并且可能保障开掘进去的后果与应用原有数据集所取得的后果基本相同。数据消减的次要策略有以下几种。(1)数据聚合(Data Aggregation),如结构数据立方(数据仓库操作)。(2)维数消减(Dimension Reduction),次要用于检测和打消无关、弱相干或冗余的属性或维(数据仓库中属性),如通过相干剖析打消多余属性。(3)数据压缩(Data Compression), 利用编码技术压缩数据集的大小。(4)数据块消减(Numerosity Reduction),利用更简略的数据表达形式,如参数模型、非参数模型(聚类、采样、直方图等),来取代原有的数据。此外,利用基于概念树的泛化(Generalization)也能够实现对数据规模的消减。以上内容摘自《大数据采集与解决》一书。

November 10, 2021 · 1 min · jiezi

关于大数据:吐血整理常用的大数据采集工具你不可不知

大数据的起源多种多样,在大数据时代背景下,如何从大数据中采集出有用的信息是大数据倒退的最关键因素。大数据采集是大数据产业的基石,大数据采集阶段的工作是大数据的核心技术之一。为了高效采集大数据,根据采集环境及数据类型抉择适当的大数据采集办法及平台至关重要。上面介绍一些罕用的大数据采集平台和工具。 1 FlumeFlume作为Hadoop的组件,是由Cloudera专门研发的分布式日志收集零碎。尤其近几年随着Flume的不断完善,用户在开发过程中应用的便利性失去很大的改善,Flume现已成为Apache Top我的项目之一。Flume提供了从Console(控制台)、RPC(Thrift-RPC)、Text(文件)、Tail(UNIX Tail)、Syslog、Exec(命令执行)等数据源上收集数据的能力。Flume采纳了多Master的形式。为了保障配置数据的一致性,Flume引入了ZooKeeper,用于保留配置数据。ZooKeeper自身可保障配置数据的一致性和高可用性。另外,在配置数据发生变化时,ZooKeeper能够告诉Flume Master节点。Flume Master节点之间应用Gossip协定同步数据。Flume针对非凡场景也具备良好的自定义扩大能力,因而Flume实用于大部分的日常数据采集场景。因为Flume应用JRuby来构建,所以依赖Java运行环境。Flume设计成一个分布式的管道架构,能够看成在数据源和目的地之间有一个Agent的网络,反对数据路由。Flume反对设置Sink的Failover和加载均衡,这样就能够保障在有一个Agent生效的状况下,整个零碎仍能失常收集数据。Flume中传输的内容定义为事件(Event),事件由Headers(蕴含元数据,即Meta Data)和Payload组成。Flume提供SDK,能够反对用户定制开发。Flume客户端负责在事件产生的源头把事件发送给Flume的Agent。客户端通常和产生数据源的利用在同一个过程空间。常见的Flume 客户端有Avro、Log4J、Syslog和HTTP Post。 2 FluentdFluentd是另一个开源的数据收集架构,如图1所示。Fluentd应用C/Ruby开发,应用JSON文件来对立日志数据。通过丰盛的插件,能够收集来自各种零碎或利用的日志,而后依据用户定义将日志做分类解决。通过Fluentd,能够十分轻易地实现像追踪日志文件并将其过滤后转存到 MongoDB 这样的操作。Fluentd能够彻底地把人从繁缛的日志解决中解放出来。图1 Fluentd架构Fluentd具备多个性能特点:装置不便、占用空间小、半结构化数据日志记录、灵便的插件机制、牢靠的缓冲、日志转发。Treasure Data公司对该产品提供反对和保护。另外,采纳JSON对立数据/日志格局是它的另一个特点。绝对Flume,Fluentd配置也绝对简略一些。Fluentd的扩展性十分好,客户能够本人定制(Ruby)Input/Buffer/Output。Fluentd具备跨平台的问题,并不反对Windows平台。Fluentd的Input/Buffer/Output十分相似于Flume的Source/Channel/Sink。Fluentd架构如图2所示。图2 Fluentd架构 3 LogstashLogstash是驰名的开源数据栈ELK(ElasticSearch,Logstash,Kibana)中的那个L。因为Logstash用JRuby开发,所以运行时依赖JVM。Logstash的部署架构如图3所示,当然这只是一种部署的选项。 图3 Logstash的部署架构一个典型的Logstash的配置如下,包含Input、Filter的Output的设置。 input { file { type =>"Apache-access" path =>"/var/log/Apache2/other_vhosts_access.log" } file { type =>"pache-error" path =>"/var/log/Apache2/error.log" }}filter { grok { match => {"message"=>"%(COMBINEDApacheLOG)"} } date { match => {"timestamp"=>"dd/MMM/yyyy:HH:mm:ss Z"} }}output { stdout {} Redis { host=>"192.168.1.289" data_type => "list" key => "Logstash" }}简直在大部分的状况下,ELK作为一个栈是被同时应用的。在你的数据系统应用ElasticSearch的状况下,Logstash是首选。 4 ChukwaChukwa是Apache旗下另一个开源的数据收集平台,它远没有其余几个有名。Chukwa基于Hadoop的HDFS和MapReduce来构建(用Java来实现),提供扩展性和可靠性。它提供了很多模块以反对Hadoop集群日志剖析。Chukwa同时提供对数据的展现、剖析和监督。该我的项目目前曾经不沉闷。Chukwa适应以下需要:(1)灵便的、动静可控的数据源。(2)高性能、高可扩大的存储系统。(3)适合的架构,用于对收集到的大规模数据进行剖析。Chukwa架构如图4所示。图4 Chukwa架构 5 ScribeScribe是Facebook开发的数据(日志)收集零碎。其官网曾经多年不保护。Scribe为日志的“分布式收集,对立解决”提供了一个可扩大的,高容错的计划。当地方存储系统的网络或者机器呈现故障时,Scribe会将日志转存到本地或者另一个地位;当地方存储系统复原后,Scribe会将转存的日志从新传输给地方存储系统。Scribe通常与Hadoop联合应用,用于向HDFS中push(推)日志,而Hadoop通过MapReduce作业进行定期解决。Scribe架构如图5所示。图5 Scribe架构Scribe架构比较简单,次要包含三局部,别离为Scribe agent、Scribe和存储系统。 ...

November 10, 2021 · 1 min · jiezi

关于大数据:就是这么驴性尚硅谷Hadoop3x高可用集群教程

摘要:奔浪少年永不停歇,怯懦追赶星河璀璨。 冷风如刀, 以大地为砧板,视众生为鱼肉。 万里飞雪, 将穹苍作洪炉,熔万物为白银。 雪将住,风未定, 一辆马车自北而来, 滚动的车轮辗碎了地上的冰雪, 却辗不碎这天地间的寂寞。 忽然间马声嘶鸣,车骤然停住, 翩翩然走下一女子,霸气凌绝, 只一个眼神,便让人心生敬畏。 是他,是他,果然又是他—— 世界奇奇怪怪,汪公子怯懦可恶, 大数据圈的傅红雪又来啦! 他淡淡地嘴角挂着浅浅地笑: 惆怅东栏一株雪,人生看得几清明。 Oh,my ladygaga! 我要前半生的烟火气, 我要后半夜的风霜雪, 我要来路终己不顾的孤勇, 我要客途甘之若饴的诉梦, 我要胭脂色, 我要颓唐客, 我要汪公子……的大数据视频。 Hadoop3.x高可用集群教程! 汪公子:你想要吗?你真想要吗? 汪公子:你想要,你就和我说啊? 汪公子:你不说我怎么会晓得呢? 汪公子:不会你要了我不给, 汪公子:不要我又偏发给你…… 公子,我为你吟诗一首,《咏雪》: 什么货色天上飞,东一堆来西一堆。 莫非玉皇盖金殿,筛石灰啊筛石灰。 汪公子:…… 公子,我表一下对你的钦佩之心: “你如何陪伴他?” “我只愿做一朵飘落他肩头的雪。” “若他撑了伞呢?” “落他伞头也有温度。” “若他用手拂去?” “我独享受那一刻他掌心的温度。” 汪公子:都给你,别说了…… 公众号聊天窗口发暗号:Hadoop高可用,收费获取全套教程! Hadoop是一个对海量数据进行分布式解决的软件框架,用户能够轻松地在Hadoop上开发和运行解决PB级数据,具备高可靠性、高扩展性、高容错性、低成本等长处。Hadoop是大数据技术中最重要的框架之一,是大数据工程师的必备技能。 继尚硅谷Hadoop新版教程重磅降级,再次带来Hadoop高可用集群教程,教你如何解决单点故障问题,教程内容蕴含HDFS手动和全自动高可用集群,以及Yarn集群的全自动高可用集群。学成之后,再不用放心某个过程挂掉导致集群不可用,老板要杀了你祭天…… 教程前置常识: Hadoop、ZooKeeper、Java、Linux。 教程简介https://www.bilibili.com/vide... 晚来天欲雪,能饮一杯无? 汪公子:缓缓看,我走了。 化雪总比下雪冷,完结总比开始疼, 故事的结尾,总是极具温顺, 终局却配不上整个结尾…… 我只晓得上一句: “今朝若能同林雪,此生也算共白头。” 却不晓得下一句: “白头若是雪可替,此生何来苦心人。” 夜阑卧听风吹雪, 铁马是你,冰河也是你。 你来时携风带雪,我无处可避。 你走时乱了四季,我久病难医。 汪公子:再说我入手了! 公子,入手能够,别动感情。 汪公子:…… 解决所有问题的办法就是:搞钱! 充实寂寞冷了,就去搞钱; ...

November 10, 2021 · 1 min · jiezi

关于大数据:Spark-架构设计与原理思想

Spark 在 MapReduce 的根底上进行了改良,它次要应用内存进行两头计算数据存储,放慢了计算执行工夫,在某些状况下性能能够晋升百倍 。        除了速度更快,Spark 和 MapReduce 相比,还有更简略易用的编程模型 。        Spark 的次要编程模型是 RDD,即弹性数据集 。在 RDD 上定义了许多常见的大数据计算函数,利用这些函数能够用极少的代码实现较为简单的大数据计算 。        例如咱们在介绍 Hive 架构设计时谈到的 WordCount 示例 。 应用 Scala 语言在 Spark 上编写 ,代码只需三行 。 val textFile = sc.textFile("hdfs://...") val counts = textFile.flatMap(line => line.split(" "))                 .map(word => (word, 1))                 .reduceByKey(_ + _) ...

November 10, 2021 · 4 min · jiezi

关于大数据:尚硅谷Hadoop3x高可用集群教程发布

Hadoop是一个对海量数据进行分布式解决的软件框架,用户能够轻松地在Hadoop上开发和运行解决PB级数据,具备高可靠性、高扩展性、高容错性、低成本等长处。Hadoop是大数据技术中最重要的框架之一,是大数据工程师的必备技能。继尚硅谷Hadoop新版教程重磅降级,再次带来Hadoop高可用集群教程,教你如何解决单点故障问题,教程内容蕴含HDFS手动和全自动高可用集群,以及Yarn集群的全自动高可用集群。学成之后,再不用放心某个过程挂掉导致集群不可用,老板要杀了你祭天……教程前置常识:Hadoop、ZooKeeper、Java、Linux。

November 10, 2021 · 1 min · jiezi

关于大数据:大数据开发技术面试注意哪些方面

大数据架构与开发 顾名思义大数据是一个以数据为外围的产业。大数据产业从数据的生命周期的传导和演变上可分为这几个局部:数据收集、数据贮存、数据建模、数据分析、数据变现。 通过各种渠道收集数据,继而通大数据培训过云数据中心贮存,再通过数据科学家或业务进行建模和加工,最初数据分析找到大量看似不相干数据背地的因果关系。这些产生的信息能够作为贵重的资产,帮忙业务决策者对将来进行预测,缩小试错老本,也能够降低成本危险,加强业务竞争力。目前市场上人才需求观和部署企业本身大数据我的项目来看,大抵分为3个方向:大数据架构、大数据开发、大数据分析。其中数据分析曾经在(link) 中为大家介绍了。 那么本期咱们就聚焦技术要求更硬核的架构与开发职位。 让咱们从目前市场上的需要动手,为大家剖析这两个煊赫一时的岗位。 某顶级独角兽互联网:数据开发工程师大数据开发 大数据开发并重利用实现,重视服务器端开发、数据库开发、出现与可视化人机交互等连接数据载体和数据加工各个单元以及用户的性能落地与实现。 次要钻研方向 数据库开发:RDBMS、NoSQL、MySQL、Hive等。 数据流工具开发:Flume、Heka、Fluentd、Kafka、ZMQ等。 数据前端开发:HightCharts、ECharts、JavaScript、D3、HTML5、CSS3等。 数据获取开发:爬虫、分词、自然语言学习、文本分类等。 某top互联网公司:资深大数据架构开发 大数据架构 大数据架构并重基建和架构,更多重视的是Hadoop、Spark、Storm等大数据框架的实现原理、部署、调优和稳定性问题,以及它们与Flume、Kafka等数据流工具以及可视化工具联合技巧。再有就是一些工具的商业利用问题,如Hive、Cassandra、HBase、PrestoDB等。 可能将这些概念了解分明,并可能用辩证的技术观点进行组合应用,达到软/硬件资源利用的最大化,服务提供的稳定化,这是大数据架构人才的指标。 次要钻研方向 架构实践:高并发、高可用、并行计算、MapReduce、Spark等 数据流利用:Flume、Fluentd、Kafka、ZeroMQ等 贮存利用:HDFS、Ceph等 软件应用:Hive、HBase、Cassandra、PrestoDB等。 可视化利用:HightCharts、ECharts、D3、HTML5、CSS3等。 大数据架构师对架构层面、数据流层面、存储层面、软件应用层面等都须要做比拟深刻的了解和落地利用。 不难发现大数据开发和架构很多的要害关键词是重合的,但一个次要是开发,一个次要是对于各种大数据技术的加以利用。 开发更重视的是熟练掌握,疾速实现,利用要求的是懂得各种大数据技术性能上的异同,并且在抉择实现形式时候的计划和取舍。大家能够依据本人的状况进行细分,但在面试中是能够兼顾的。 大数据研发面试技术栈 那么如何井井有条的筹备大数据开发架构岗位的面试呢,咱们为大家整顿了6个次要的维度, 能够依据以下的目录查漏补缺。 1. 编程语言和手撕代码 对于大数据来说,咱们有泛滥的工具和框架,Java还是主力编程语言。能够说做大数据,Java是必须要熟练掌握的。那么对于Java的学习,根底、并发、JVM都是重点。 2. 计算机根底 数据结构,包含常见的布隆过滤器,Bitmap,B+树,LSM Tree,跳表。计算机网络常见TCP-IP协定,网络连接。操作系统问题。Linux根底,Linux过程通信和线程通信, 数据库范式等。 3. Hadoop&Spark MapReduce、YARN、HDFS,Spark几大经典我的项目的概念,实现,关系。经典机制的解说和辨析。 4. 分布式和流计算 分布式实践概念,准则。Zookeeper、Raft的概念和解说。Flink、Storm/Jstorm等流计算框架的比照,特色,应用场景。 5. 存储和音讯队列 非关系存储:Redis、Hbase、Tair、Tbase,这些存储蕴含什么样的数据结构,如何底层实现,有什么数据长久化的形式。一致性哈希 音讯队列:Kafka,包含基本原理,和其余的MQ相比的劣势。实现细节如高阶,低阶消费者API的区别,ack有哪几种。消费者如何Kafka取数据,怎么保障Exactly Once,有序性。 6. 数据仓库与可视化 理解和应用HTML5、CSS3, Tableau作为可视化的工具。如何构建数仓,如何做分层,辨析范式建模和维度建模,星型模型和雪花模型的区别。 面经 一、二轮面: 简答题与算法题 Java: Java的多态final关键字,volatile关键字的作用,与synchronized关键字的不同理解HashMap的内部结构吗?本人实现一个HashMapHashMap、Hashtable、ConcurrentHashMap的原理与区别Java实现生产者消费者模型,能够用BlockingQueue阻塞队列设计模式Hive: Hive 根底函数分别,row_number,rank。Hive窗口函数怎么设置窗口大小,分桶Hive order by, sort by, distribute by, cluster by 区别,应用场景Hive map,reduce数怎么设置Hive SQL数据歪斜起因和优化Hive数据抉择的什么压缩格局Hive的udf、udaf和udtf理解过吗?本人有没有写过udfjoin操作底层的MapReduce是怎么去执行的MapReduce&Spark: ...

November 10, 2021 · 1 min · jiezi

关于大数据:Hadoop原理与源码

hadoop概述Hadoop 历史Hadoop最早起源于Nutch。Nutch的设计指标是一个网络爬虫引擎,但随着抓取网页数据量的增大,Nutch遇到了重大的性能扩大问题。2003年,2004年谷歌公布两篇论文为该问题提供了一个解决方案一个是HDFS的前身GFS,用于海量网页的存储;另一个是分布式计算框架MAPERDUCE。Nutch的创始人依据论文的领导用了·两年的工夫实现了HDFS和MapReduce代码。并将其从Nutch剥离进去,成为独立我的项目Hadoop。2008年Hadoop成为Apache顶级我的项目。晚期的Hadoop并非当初大家所相熟的Hadoop分布式开源软件,而是指代大数据的一个生态圈,包含很多其余的软件。在2010前后,Hbase,HIVE,Zookeeper等顺次脱离Hadoop我的项目成为Apache的顶级我的项目。2011年,Hadoop公布2.0,在架构上进行了重大更新,引入Yarn框架专一于资源的治理精简了MapReduce的职责。同时Yarn框架作为一个通用的资源调度和治理模块,同时反对多种其余的编程模型,比方最闻名的Spark。因为HADOOP的版本治理简单,简单集群的部署装置配置等须要编写大量的配置文件而后散发到每一台节点上,容易出错效率低下。所以很多公司会在根底的Hadoop进行商业化后进行再发行。目前Hadoop发行版十分多,有华为发行版、Intel发行版、Cloudera发行版(CDH)等。![image](# hadoop概述 Hadoop 历史Hadoop最早起源于Nutch。Nutch的设计指标是一个网络爬虫引擎,但随着抓取网页数据量的增大,Nutch遇到了重大的性能扩大问题。2003年,2004年谷歌公布两篇论文为该问题提供了一个解决方案一个是HDFS的前身GFS,用于海量网页的存储;另一个是分布式计算框架MAPERDUCE。Nutch的创始人依据论文的领导用了·两年的工夫实现了HDFS和MapReduce代码。并将其从Nutch剥离进去,成为独立我的项目Hadoop。2008年Hadoop成为Apache顶级我的项目。晚期的Hadoop并非当初大家所相熟的Hadoop分布式开源软件,而是指代大数据的一个生态圈,包含很多其余的软件。在2010前后,Hbase,HIVE,Zookeeper等顺次脱离Hadoop我的项目成为Apache的顶级我的项目。2011年,Hadoop公布2.0,在架构上进行了重大更新,引入Yarn框架专一于资源的治理精简了MapReduce的职责。同时Yarn框架作为一个通用的资源调度和治理模块,同时反对多种其余的编程模型,比方最闻名的Spark。因为HADOOP的版本治理简单,简单集群的部署装置配置等须要编写大量的配置文件而后散发到每一台节点上,容易出错效率低下。所以很多公司会在根底的Hadoop进行商业化后进行再发行。目前Hadoop发行版十分多,有华为发行版、Intel发行版、Cloudera发行版(CDH)等。 Hadoop(2.0)的组成 HDFSHDFS的组成NameNode:是整个HDFS集群的管理者,治理HDFS的名称空间治理正本策略治理数据块在DataNode的地位映射信息与客户端交互解决来自于客户端的读写操作。DataNode:理论文件的存储者。存储理论的数据块执行数据块的读、写操作DataNode启动后向NameNode注册并每6小时向NameNode上报所有的块信息DataNode的心跳是每3秒一次,心跳返回后果带有NameNode给该DataNode的命令,例如:复制数据到另一台机器;删除某个数据块。若NameNode超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。客户端HDFS提供的工具包,面向开发者,封装了对HDFS的操作调用。负责文件切分:文件上传到HDFS时,Client负责与NameNode和DataNode交互,将文件切分为一个一个的block进行上传。Secondary NameNode:辅助NameNode,分担其工作量。定期合并Fsimage和Edits,并推送给NameNode。辅助复原NameNode。并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务HDFS读写流程HDFS上传文件client向NameNode申请上传文件,NameNode进行合规性检测,并创立相应的目录元数据。并返回是否能够上传。client将文件切分,再次询问NameNode第一个Block须要上传到哪几个DataNode服务端上。NameNode 返回 3 个 DataNode 节点,别离为 dn1、dn2、dn3。client将第一个block数据上传给dn1,dn1 收到申请会持续调用dn2,而后 dn2 调用 dn3,将这个通信管道建设实现。client开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地内存缓存),以 Packet 为单位,dn1 收到一个 Packet 就会传给 dn2,dn2 传给 dn3。当一个Block传输实现之后,客户端再次申请NameNode上传第二个Block,而后反复1~4步骤。 NameNode节点抉择策略-节点间隔计算如果Client与HADOOP在同一个集群,则NameNode会抉择间隔待上传数据最近间隔的DataNode接收数据。节点间隔:两个节点达到最近的独特先人的间隔总和。如果Client与HADOOP不在同一个集群,则NameNode随机选一个机架上的一个节点。第二个正本在另一个机架的随机的一个节点,第三个正本在第二个正本所在的机架的随机节点。HDFS读流程client向NameNode申请下载文件,NameNode返回文件块所在的DataNode地址。client依据节点间隔筛选一台最近的DataNode服务器,而后开始读取数据。DataNode以Packet来传输数据。client接管到一个packet数据后,并进行校验。校验通过后,将packet写入指标文件,再申请第二个packet。整个过程为串行的过程。(因为IO自身就是速度最慢的流程)读取数据的过程中,如果client端与dn数据结点通信时呈现谬误,则尝试连贯蕴含此数据块的下一个dn数据结点。失败的dn数据结点将被client记录,并且当前不再连贯。SecondaryNameNodeNameNode是机器的文件治理容易造成单点读写性能问题与数据存储平安问题。 SecondaryNameNode与Name帮助解决读写性能问题:NameNode的数据既存储在内存中又存储在磁盘中Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中蕴含HDFS文件系统的所有目录和文件inode的序列化信息。Edits文件:寄存HDFS文件系统的所有更新操作的门路,文件系统客户端执行的所有写操作首先会被记录到Edits文件中。Edits文件只进行追加操作,效率很高。每当元数据有更新或者增加元数据时,批改内存中的元数据并追加到Edits中。NameNode启动的时候都会将Fsimage文件读入内存,加载Edits外面的更新操作,保障内存中的元数据信息是最新的、同步的。长时间增加数据到 Edits 中,会导致该文件数据过大,效率升高,而且一旦断电,复原元数据须要的工夫过长。因而2NN,专门用于FsImage和Edits的合并。SecondaryNameNode 工作机制NameNode启动后,会创立FsImage和Edits文件。如果不是第一次启动,则间接加载FsImage和Edits文件。 fsimage_0000000000000000002 文件最新的FsImage。edits_inprogress_0000000000000000003 正在进行中的edits。seen_txid 是一个txt的文本文件,记录是最新的edits_inprogress文件开端的数字。Secondary NameNode 工作 2NN询问NN是须要CheckPoint。NN将当初进行中的edits文件和最新的fsimage文件拷贝到2NN并更新seen_txid里的数字,而后从新生成edits文件。2NN加载编辑日志和镜像文件到内存,并合并生成新的镜像文件fsimage.chkpoint。而后拷贝回NN。NN将fsimage.chkpoint重新命名为fsImage实现一次滚写。 HDFS总结长处 1. 高容错性:数据主动保留多个正本,通过减少正本的模式,进步容错性。某一个正本失落后,能够主动复原。2. 适宜解决大数据:可能解决的数据规模达到GB,TB甚至PB级别,文件数量能够达到百万规模以上。3. 可构建在便宜的机器上:通过多正本机制,进步可靠性。毛病 1. 不适宜低时延的数据拜访 2. 无奈高效的对大量小文件进行存储,大量的小文件会占用NameNode大量的内存来存储文件目录和块信息,同时小文件的寻址工夫会超过读取工夫,它违反了HDFS的设计指标 3. 不反对并发写入,文件随机批改。仅反对数据追加的。DataNode与NameNode源代码导读代码浏览前的筹备工作:Hadoop Rpc框架指南Rpc 协定public interface MyInterface { Object versionID = 1; boolean demo();}Rpc providerpublic class MyHadoopServer implements MyInterface { @Override public boolean demo() { return false; } public static void main(String[] args) { Server server = new RPC.Builder(new Configuration()) .setBindAddress("localhost") .setPort(8888) .setProtocol(MyInterface.class) .setInstance(new MyHadoopServer()) .build(); server.start(); }}Rpc consuemrpublic class MyHadoopClient { public static void main(String[] args) throws Exception { MyInterface client = RPC.getProxy( MyInterface.class, MyInterface.versionID, new InetSocketAddress("localhost", 8888), new Configuration()); client.demo(); } }NameNode 启动源码启动9870端口服务加载镜像文件和编辑日志 初始化NN的RPC服务端:用于接管DataNode的RPC申请NN启动资源检测NN对心跳超时判断(启动一个线程去判断DataNode是否超时) ...

November 9, 2021 · 3 min · jiezi

关于大数据:极光笔记丨Spark-SQL-在极光的建设实践

极光高级工程师——蔡祖光 前言 Spark在2018开始在极光大数据平台部署应用,历经多个版本的迭代,逐渐成为离线计算的外围引擎。以后在极光大数据平台每天运行的Spark工作有20000+,执行的Spark SQL均匀每天42000条,本文次要介绍极光数据平台在应用Spark SQL的过程中总结的局部实践经验,包含以下方面内容: Spark Extension的利用实际Spark Bucket Table的革新优化从Hive迁徙到Spark SQL的实际计划 一、Spark Extension利用实际 Spark Extension作为Spark Catalyst扩大点在SPARK-18127中被引入,Spark用户能够在SQL解决的各个阶段扩大自定义实现,十分弱小高效 1.1 血缘关系解析 在极光咱们有自建的元数据管理平台,相干元数据由各数据组件进行信息收集,其中对Spark SQL的血缘关系解析和收集就是通过自定义的Spark Extension实现的。 Spark Catalyst的SQL解决分成parser,analyzer,optimizer以及planner等多个步骤,其中analyzer,optimizer等步骤外部也分为多个阶段,为了获取最无效的血缘关系信息,咱们抉择最终的planner阶段作为切入点,为此咱们专门实现了一个planner strategy进行Spark SQL物理执行打算的解析,并提取出读写表等元数据信息并存储到元数据管理平台 1.2 权限校验 在数据安全方面,极光抉择用Ranger作为权限治理等组件,但在理论应用的过程中咱们发现目前社区版本的Ranger次要提供的还是HDFS、HBase、Hive、Yarn的相干接入插件,在Spark方面须要本人去实现相干性能,对于以上问题咱们同样抉择用Spark Extension去帮忙咱们进行权限方面的二次开发,在实现的过程中咱们借助了Ranger Hive-Plugin的实现原理,对Spark SQL拜访Hive进行了权限校验性能的实现。 1.3 参数管制 随着数据平台应用Spark SQL的业务同学越来越多,咱们发现每个业务同学对于Spark的相熟水平都有所不同,对Spark配置参数的了解也有好有坏,为了保障集群整体运行的稳定性,咱们对业务同学提交的Spark工作的进行了拦挡解决,提取工作设置的配置参数,对其中配置不合理的参数进行屏蔽,并给出危险提醒,无效的疏导业务同学进行正当的线上操作。 二、Spark Bucket Table的革新优化 在Spark的实际过程中,咱们也积极关注业内其它公司优良计划,在2020年咱们参考字节跳动对于Spark Bucket Table的优化思路,在此基础上咱们对极光应用的Spark进行了二次革新,实现如下优化项: Spark Bucket Table和Hive Bucket Table的相互兼容Spark反对Bucket Num是整数倍的Bucket JoinSpark反对Join字段和Bucket字段是蕴含关系的Bucket Join 上述三点的优化,丰盛了Bucket Join的应用场景,能够让更多Join、Aggregate操作防止产生Shuffle,无效的进步了Spark SQL的运行效率.在实现相干优化当前,如何更好的进行业务革新推广,成为了咱们关怀的问题。 通过对数据平台过往SQL执行记录的剖析,咱们发现用户ID和设施ID的关联查问是非常高频的一项操作,在此基础上,咱们通过之前SQL血缘关系解析收集到的元数据信息,对每张表进行Join、Aggregate操作的高频字段进行了剖析整顿,统计出最为适合的Bucket Cloumn,并在这些元数据的撑持下辅助咱们进行Bucket Table的推广革新。 三、Hive迁徙Spark 随着公司业务的高速倒退,在数据平台上提交的SQL工作继续一直增长,对工作的执行工夫和计算资源的耗费都提出了新的挑战,出于上述起因,咱们提出了Hive工作迁徙到Spark SQL的工作指标,由此咱们总结出了如下问题需要: 如何更好的定位哪些Hive工作能够迁徙,哪些不能够如何让业务部门无感知的从Hive迁徙到Spark SQL如何进行比照剖析,确认工作迁徙前后的运行成果 3.1 Hive迁徙分析程序的实现 在迁徙业务job时,咱们须要晓得这个部门有哪些人,因为Azkaban在执行具体job时会有执行人信息,所以咱们能够依据执行人来揣测有哪些job。分析程序应用了元数据系统的某些表数据和azkaban相干的一些库表信息,用来帮忙咱们收集迁徙的部门下有多少hive job,以及该hive job有多少sql,sql语法通过率是多少,当然在迁徙时还须要查看Azkaban的具体执行耗时等信息,用于帮忙咱们在精细化调参的时候大抵判断耗费的资源是多少。 因为线上间接检测某条sql是否合乎spark语义须要具备相干的读写权限,间接凋谢权限给分析程序不平安。所以实现的思路是通过应用元数据系统存储的库表构造信息,以及azkaban上有采集业务job执行的sql信息。只有领有某条sql所须要的全副库表信息,咱们就能在本地通过重建库表构造剖析该条sql是否合乎spark语义(当然线上环境和本地是有不同的,比方函数问题,但大多状况下是没有问题的)。 图3-1-1 以下为某数据部通过分析程序失去的SQL通过率 ...

November 9, 2021 · 1 min · jiezi

关于大数据:大数据开发之数据仓库Hive

1.数据仓库的基本概念数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目标是构建面向剖析的集成化数据环境,为企业提供决策反对(Decision Support)。它出于剖析性报告和决策反对目标而创立。数据仓库自身并不“生产”任何数据,同大数据培训时本身也不须要“生产”任何的数据,数据来源于内部,并且凋谢给内部利用,这也是为什么叫“仓库”,而不叫“工厂”的起因。2.数据仓库的次要特色数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant )数据汇合,用以反对管理决策。2.1.面向主题传统数据库中,最大的特点是面向利用进行数据的组织,各个业务零碎可能是互相拆散的。而数据仓库则是面向主题的。主题是一个形象的概念,是较高层次上企业信息系统中的数据综合、归类并进行剖析利用的形象。在逻辑意义上,它是对应企业中某一宏观剖析畛域所波及的剖析对象。操作型解决(传统数据)对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的畛域,每个畛域有各自的逻辑外延但互不穿插,在抽象层次上对数据进行残缺、统一和精确的形容。一些主题相干的数据通常散布在多个操作型零碎中。2.2. 集成性通过对扩散、独立、异构的数据库数据进行抽取、清理、转换和汇总便失去了数据仓库的数据,这样保障了数据仓库内的数据对于整个企业的一致性。数据仓库中的综合数据不能从原有的数据库系统间接失去。因而在数据进入数据仓库之前,必然要通过对立与综合,这一步是数据仓库建设中最要害、最简单的一步,所要实现的工作有:(1)要对立源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不对立、字长不统一,等等。(2)进行数据综合和计算。数据仓库中的数据综合工作能够在从原有数据库抽取数据时生成,但许多是在数据仓库外部生成的,即进入数据仓库当前进行综合生成的。下图阐明一个保险公司综合数据的简略处理过程,其中数据仓库中与“保险” 主题无关的数据来自于多个不同的操作型零碎。这些零碎外部数据的命名可能不同,数据格式也可能不同。把不同起源的数据存储到数据仓库之前,须要去除这些不统一。2.3. 非易失性(不可更新性)操作型数据库次要服务于日常的业务操作,使得数据库须要一直地对数据实时更新,以便迅速取得以后最新数据,不至于影响失常的业务运作。在数据仓库中只有保留过来的业务数据,不须要每一笔业务都实时更新数据仓库,而是依据商业须要每隔一段时间把一批较新的数据导入数据仓库。数据仓库的数据反映的是一段相当长的工夫内历史数据的内容,是不同时点的数据库快照的汇合,以及基于这些快照进行统计、综合和重组的导出数据。数据非易失性次要是针对利用而言。数据仓库的用户对数据的操作大多是数据查问或比较复杂的开掘,一旦数据进入数据仓库当前,个别状况下被较长时间保留。数据仓库中个别有大量的查问操作,但批改和删除操作很少。因而,数据经加工和集成进入数据仓库后是极少更新的,通常只须要定期的加载和更新。2.4. 时变性数据仓库蕴含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份无关。数据仓库的目标是通过剖析企业过来一段时间业务的经营情况,开掘其中暗藏的模式。尽管数据仓库的用户不能批改数据,但并不是说数据仓库的数据是永远不变的。剖析的后果只能反映过来的状况,当业务变动后,挖掘出的模式会失去时效性。因而数据仓库的数据须要更新,以适应决策的须要。从这个角度讲,数据仓库建设是一个我的项目,更是一个过程 。数据仓库的数据随工夫的变动体现在以下几个方面。(1)数据仓库的数据时限个别要远远长于操作型数据的数据时限。(2)操作型零碎存储的是以后数据,而数据仓库中的数据是历史数据。(3)数据仓库中的数据是依照工夫程序追加的,它们都带有工夫属性。3.数据仓库与数据库区别数据库与数据仓库的区别理论讲的是 OLTP 与 OLAP 的区别。操作型解决,叫联机事务处理 OLTP(On-Line Transaction Processing,),也能够称面向交易的解决零碎,它是针对具体业务在数据库联机的日常操作,通常对多数记录进行查问、批改。用户较为关怀操作的响应工夫、数据的安全性、完整性和并发反对的用户数等问题。传统的数据库系统作为数据管理的次要伎俩,次要用于操作型解决。剖析型解决,叫联机剖析解决 OLAP(On-Line Analytical Processing)个别针对某些主题的历史数据进行剖析,反对管理决策。首先要明确,数据仓库的呈现,并不是要取代数据库。• 数据库是面向事务的设计,数据仓库是面向主题设计的。• 数据库个别存储业务数据,数据仓库存储的个别是历史数据。• 数据库设计是尽量避免冗余,个别针对某一业务利用进行设计,比方一张简略的User表,记录用户名、明码等简略数据即可,合乎业务利用,然而不合乎剖析。• 数据仓库在设计是无意引入冗余,按照剖析需要,剖析维度、剖析指标进行设计。• 数据库是为捕捉数据而设计,数据仓库是为剖析数据而设计。 以银行业务为例。数据库是事务零碎的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,能够简略地了解为用数据库记账。数据仓库是剖析零碎的数据平台,它从事务零碎获取数据,并做汇总、加工,为决策者提供决策的根据。比方,某银行某分行一个月产生多少交易,该分行以后贷款余额是多少。如果贷款又多,生产交易又多,那么该地区就有必要设立ATM了。显然,银行的交易量是微小的,通常以百万甚至千万次来计算。事务零碎是实时的,这就要求时效性,客户存一笔钱须要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而剖析零碎是预先的,它要提供关注时间段内所有的无效数据。这些数据是海量的,汇总计算起来也要慢一些,然而,只有可能提供无效的剖析数据就达到目标了。数据仓库,是在数据库曾经大量存在的状况下,为了进一步开掘数据资源、为了决策须要而产生的,它决不是所谓的“大型数据库”。4、数据仓库分层架构依照数据流入流出的过程,数据仓库架构可分为三层——源数据、数据仓库、数据利用。数据仓库的数据来源于不同的源数据,并提供多样的数据利用,数据自下而上流入数据仓库后向下层凋谢利用,而数据仓库只是两头集成化数据管理的一个平台。源数据层(ODS):此层数据无任何更改,间接沿用外围零碎数据结构和数据,不对外开放;为长期存储层,是接口数据的长期存储区域,为后一步的数据处理做筹备。数据仓库层(DW):也称为细节层,DW层的数据应该是统一的、精确的、洁净的数据,即对源零碎数据进行了荡涤(去除了杂质)后的数据。数据应用层(DA或APP):前端利用间接读取的数据源;依据报表、专题剖析需要而计算生成的数据。数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都能够认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程,ETL是数据仓库的流水线,也能够认为是数据仓库的血液,它维系着数据仓库中数据的推陈出新,而数据仓库日常的治理和保护工作的大部分精力就是放弃ETL的失常和稳固。为什么要对数据仓库分层?用空间换工夫,通过大量的预处理来晋升利用零碎的用户体验(效率),因而数据仓库会存在大量冗余的数据;不分层的话,如果源业务零碎的业务规定发生变化将会影响整个数据荡涤过程,工作量微小。通过数据分层治理能够简化数据荡涤的过程,因为把原来一步的工作分到了多个步骤去实现,相当于把一个简单的工作拆成了多个简略的工作,把一个大的黑盒变成了一个白盒,每一层的解决逻辑都绝对简略和容易了解,这样咱们比拟容易保障每一个步骤的正确性,当数据产生谬误的时候,往往咱们只须要部分调整某个步骤即可。5、数据仓库元数据管理元数据(Meta Date),次要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL的工作运行状态。个别会通过元数据资料库(Metadata Repository)来对立地存储和治理元数据,其次要目标是使数据仓库的设计、部署、操作和治理能达成协同和统一。元数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的要害组件,贯通数据仓库构建的整个过程,间接影响着数据仓库的构建、应用和保护。l 构建数据仓库的次要步骤之一是ETL。这时元数据将施展重要的作用,它定义了源数据系统到数据仓库的映射、数据转换的规定、数据仓库的逻辑构造、数据更新的规定、数据导入历史记录以及装载周期等相干内容。数据抽取和转换的专家以及数据仓库管理员正是通过元数据高效地构建数据仓库。l 用户在应用数据仓库时,通过元数据拜访数据,明确数据项的含意以及定制报表。l 数据仓库的规模及其复杂性离不开正确的元数据管理,包含减少或移除内部数据源,扭转数据荡涤办法,管制出错的查问以及安顿备份等。元数据可分为技术元数据和业务元数据。技术元数据为开发和治理数据仓库的IT 人员应用,它形容了与数据仓库开发、治理和保护相干的数据,包含数据源信息、数据转换形容、数据仓库模型、数据荡涤与更新规定、数据映射和拜访权限等。而业务元数据为管理层和业务剖析人员服务,从业务角度形容数据,包含商务术语、数据仓库中有什么数据、数据的地位和数据的可用性等,帮忙业务人员更好地了解数据仓库中哪些数据是可用的以及如何应用。由上可见,元数据不仅定义了数据仓库中数据的模式、起源、抽取和转换规则等,而且是整个数据仓库零碎运行的根底,元数据把数据仓库零碎中各个涣散的组件分割起来,组成了一个有机的整体。Hive简介1.什么是HiveHive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供类SQL查问性能。其本质是将SQL转换为MapReduce的工作进行运算,底层由HDFS来提供数据的存储,说白了hive能够了解为一个将SQL转换为MapReduce的工作的工具,甚至更进一步能够说hive就是一个MapReduce的客户端为什么应用Hive间接应用hadoop所面临的问题人员学习老本太高我的项目周期要求太短MapReduce实现简单查问逻辑开发难度太大为什么要应用Hive操作接口采纳类SQL语法,提供疾速开发的能力。防止了去写MapReduce,缩小开发人员的学习老本。性能扩大很不便。Hive的特点可扩大Hive能够自在的扩大集群的规模,个别状况下不须要重启服务。延展性Hive反对用户自定义函数,用户能够依据本人的需要来实现本人的函数。容错良好的容错性,节点呈现问题SQL仍可实现执行。2.Hive架构架构图根本组成用户接口:包含CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC相似;WebGUI是通过浏览器拜访Hive。元数据存储:通常是存储在关系数据库如mysql/derby中。Hive 将元数据存储在数据库中。Hive 中的元数据包含表的名字,表的列和分区及其属性,表的属性(是否为内部表等),表的数据所在目录等。解释器、编译器、优化器、执行器:实现HQL 查问语句从词法剖析、语法分析、编译、优化以及查问打算的生成。生成的查问打算存储在HDFS 中,并在随后有MapReduce 调用执行。3.Hive与Hadoop的关系Hive利用HDFS存储数据,利用MapReduce查问剖析数据4.Hive与传统数据库比照hive用于海量数据的离线数据分析总结:hive具备sql数据库的表面,但利用场景齐全不同,hive只适宜用来做批量数据统计分析5.Hive的数据存储Hive中所有的数据都存储在 HDFS中,没有专门的数据存储格局(可Text,SequenceFile,ParquetFile,ORC格局RCFILE等)SequenceFile是hadoop中的一种文件格式:文件内容是以序列化的kv对象来组织的只须要在创立表的时候通知 Hive 数据中的列分隔符和行分隔符,Hive 就能够解析数据。Hive 中蕴含以下数据模型:DB、Table,External Table,Partition,Bucket。db:在hdfs中体现为${hive.metastore.warehouse.dir}目录下一个文件夹table:在hdfs中体现所属db目录下一个文件夹external table:与table相似,不过其数据寄存地位能够在任意指定门路partition:在hdfs中体现为table目录下的子目录bucket:在hdfs中体现为同一个表目录下依据hash散列之后的多个文件

November 9, 2021 · 1 min · jiezi

关于大数据:Flink-Yarn的2种任务提交方式

Pre-Job模式介绍每次应用flink run运行工作的时候,Yarn都会从新申请Flink集群资源(JobManager和TaskManager),工作执行实现之后,所申请的Flink集群资源就会开释,所申请的Yarn资源是独享的,不与其余工作分享资源。 运行命令./bin/flink run -m yarn-cluster -yn 3 -ys 12-p 4 -yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar 参数解读:-p 并行度-yn Task Managers数量-ys 每个TaskManager的Slot数量-yjm 每个JobManager内存 (default: MB)-ytm 每个TaskManager内存 (default: MB) Session模式介绍须要先在yarn上先调配一个flink集群,后续所有工作都共享这个Flink集群上的资源,该Flink不会因为工作的完结而终止。 先向Yarn申请Flink所需资源flink客户端目录下,执行如下命令: bin/yarn-session.sh -jm 1024m -tm 4096m -n 4 -s 8 -na hdq-yarn 参数含意:-jm jobmanager的内存大小-tm taskManager的内存大小-n taskManager个个数-s 每个taskManager中slot的个数 执行实现之后会输入如下日志: Flink JobManager is now running on 172-16-122-56:9101 with leader id 00000000-0000-0000-0000-000000000000.JobManager Web Interface: http://172-16-122-56:9101 运行实现后,Yarn的集群上会有一个常驻工作。此时,大数据培训Flink集群的资源都曾经申请结束。这里须要记住JobManager的ip和端口:172-16-122-56:9101,等会运行Flink工作的时候须要批改这里的配置。 运行Flink程序运行Flink工作之前须要批改Flink客户端下的配置文件:conf/flink-conf.yaml别离批改jobmanager.rpc.address和rest.port,对应第二步中的172-16-122-56和9101。 jobmanager.rpc.address: 172-16-122-56rest.port: 9101 批改实现之后即可运行Flink工作: /flink/bin/flink run-C file:/plugins/oraclereader/flinkx-oracle-reader.jar-C file:/plugins/mysqlwriter/flinkx-mysql-writer.jar-C file:/plugins/common/flinkx-rdb.jar-C file:/plugins/common/flinkx-rdb-2.0.0.jar-C file:/plugins/common/flink-table_2.11-1.7.2.jar /plugins/flinkx.jar-job fx_2065.json-pluginRoot /plugins-jobid 2065 ...

November 9, 2021 · 1 min · jiezi

关于大数据:大数据开发之Spark-SQL执行性能的提升

Catalyst是Spark SQL外围优化器,晚期次要基于规定的优化器RBO,前期又引入基于代价进行优化的CBO。然而在这些版本中,Spark SQL执行打算一旦确定就不会扭转。因为不足或者不精确的数据统计信息(如行数、不同值的数量、NULL值、最大/最小值等)和对老本的谬误估算导致生成的初始大数据培训打算不现实,从而导致执行效率绝对低下。 那么就引来一个思考:咱们如何可能在运行时获取更多的执行信息,而后依据这些信息来动静调整并抉择一个更优的执行打算呢? Spark SQL自适应执行优化引擎(Adaptive Query Execution,简称AQE)应运而生,它能够依据执行过程中的两头数据优化后续执行,从而进步整体执行效率。外围在于:通过在运行时对查问执行打算进行优化,容许Spark Planner在运行时执行可选的执行打算,这些打算将基于运行时统计数据进行优化,从而晋升性能。 AQE齐全基于准确的运行时统计信息进行优化,引入了一个根本的概念Query Stages,并且以Query Stage为粒度,进行运行时的优化,其工作原理如下所示: 由shuffle和broadcast exchange把查问执行打算分为多个query stage,query stage执行实现时获取两头后果 query stage边界是运行时优化的最佳时机(人造的执行间歇;分区、数据大小等统计信息曾经产生) 整个AQE的工作原理以及流程为: 运行没有依赖的stage 在一个stage实现时再根据新的统计信息优化残余局部 执行其余曾经满足依赖的stage 反复步骤(2)(3)直至所有stage执行实现 自适应查问执行框架(AQE) 自适应查问执行最重要的问题之一是何时进行从新优化。Spark算子通常是pipeline化的,并以并行的形式执行。然而shuffle或broadcast exchange会突破这个pipeline。咱们称它们为物化点,并应用术语"查问阶段"来示意查问中由这些物化点限定的子局部。每个查问阶段都会物化它的两头后果,只有当运行物化的所有并行过程都实现时,能力继续执行下一个阶段。这为从新优化提供了一个绝佳的机会,因为此时所有分区上的数据统计都是可用的,并且后续操作还没有开始。当查问开始时,自适应查问执行框架首先启动所有叶子阶段(leaf stages)—— 这些阶段不依赖于任何其余阶段。一旦其中一个或多个阶段实现物化,框架便会在物理查问打算中将它们标记为实现,并相应地更新逻辑查问打算,同时从实现的阶段检索运行时统计信息。 基于这些新的统计信息,框架将运行优化程序、物理打算程序以及物理优化规定,其中包含惯例物理规定(regular physical rules)和自适应执行特定的规定,如coalescing partitions(合并分区)、skew join handling(join数据歪斜解决)等。当初咱们有了一个新优化的查问打算,其中蕴含一些已实现的阶段,自适应执行框架将搜寻并执行子阶段已全副物化的新查问阶段,并反复下面的execute-reoptimize-execute过程,直到实现整个查问。 在Spark 3.0中,AQE框架带来了以下三个个性: Dynamically coalescing shuffle partitions(动静合并shuffle的分区)能够简化甚至防止调整shuffle分区的数量。用户能够在开始时设置绝对较多的shuffle分区数,AQE会在运行时将相邻的小分区合并为较大的分区。 Dynamically switching join strategies(动静调整join策略)在肯定水平上防止因为短少统计信息或着谬误预计大小(当然也可能两种状况同时存在),而导致执行次优打算的状况。这种自适应优化能够在运行时sort merge join转换成broadcast hash join,从而进一步晋升性能 Dynamically optimizing skew joins(动静优化数据歪斜的join)skew joins可能导致负载的极其不均衡,并重大升高性能。在AQE从shuffle文件统计信息中检测到任何歪斜后,它能够将歪斜的分区宰割成更小的分区,并将它们与另一侧的相应分区连接起来。这种优化能够并行化歪斜解决,取得更好的整体性能。 上面咱们来具体介绍这三个个性。 动静合并shuffle的分区 当在Spark中运行查问来解决十分大的数据时,shuffle通常对查问性能有十分重要的影响。shuffle是一个低廉的操作,因为它须要在网络中挪动数据,以便数据依照上游操作所要求的形式从新散布。 分区的数量是shuffle的一个要害属性。分区的最佳数量取决于数据,然而数据大小可能在不同的阶段、不同的查问之间有很大的差别,这使得这个分区数很难调优: 如果分区数太少,那么每个分区解决的数据可能十分大,解决这些大分区的工作可能须要将数据溢写到磁盘(例如,波及排序或聚合的操作),从而减慢查问速度 如果分区数太多,那么每个分区解决的数据可能十分小,并且将有大量的网络数据获取来读取shuffle块,这也会因为低效的I/O模式而减慢查问速度。大量的task也会给Spark任务调度程序带来更多的累赘 为了解决这个问题,咱们能够在开始时设置绝对较多的shuffle分区数,而后在运行时通过查看shuffle文件统计信息将相邻的小分区合并为较大的分区。 假如咱们运行如下SQL: SELECT max(i)FROM tbl GROUP BY j tbl表的输出数据相当小,所以在分组之前只有两个分区。咱们把初始的shuffle分区数设置为5,因而在shuffle的时候数据被打乱到5个分区中。如果没有AQE,Spark将启动5个task来实现最初的聚合。然而,这里有三个十分小的分区,为每个分区启动一个独自的task将是一种节约。应用AQE之后,Spark将这三个小分区合并为一个,因而,最终的聚合只须要执行3个task,而不是5个task。动静调整join策略 Spark反对多种join策略(如broadcast hash join、shuffle hash join、sort merge join),通常broadcast hash join是性能最好的,前提是参加join的一张表的数据可能装入内存。因为这个起因,当Spark预计参加join的表数据量小于播送大小的阈值时,它会将join策略调整为broadcast hash join。然而,很多状况都可能导致这种大小预计出错——例如存在一个十分有选择性的过滤器。 ...

November 8, 2021 · 1 min · jiezi

关于大数据:十大最热门的大数据技术

随着大数据分析市场疾速渗透到各行各业,哪些大数据技术是刚需?哪些技术有极大的潜在价值?依据弗雷斯特钻研公司公布的指数,这里给出最热的十个大数据技术。 1、预测剖析 预测剖析是一种统计或数据挖掘解决方案,蕴含可在结构化和非结构化数据中应用以确定将来后果的算法和技术。可为预测、优化、预报和模仿等许多其余用处而部署。随着当初硬件和软件解决方案的成熟,许多公司利用大数据技术来收集海量数据、训练模型、优化模型,并公布预测模型来进步业务水平或者防止危险;以后最风行的预测剖析工具当属IBM公司的SPSS,SPSS这个软件大家都曾经很相熟了,它集数据录入、整顿、剖析性能于一身。用户能够依据理论须要和计算机的性能抉择模块,SPSS的剖析后果清晰、直观、易学易用,而且能够间接读取EXCEL及DBF数据文件,现已推广到多种各种操作系统的计算机上。 2、NoSQL数据库 非关系型数据库包含Key-value型(Redis)数据库、文档型(MonogoDB)数据库、图型(Neo4j)数据库;尽管NoSQL流行语火起来才短短一年的工夫,然而不可否认,当初曾经开始了第二代静止。只管晚期的堆栈代码只能算是一种试验,然而当初的零碎曾经更加的成熟、稳固。 3、搜寻和认知商业 当今时代大数据与剖析曾经倒退到一个新的高度,那就是认知时代,认知时代不再是简略的数据分析与展现,它更多的是回升到一个利用数据来撑持人机交互的一种模式,例如前段时间的围棋大战,就是一个很好的利用、现曾经逐步推广到机器人的利用下面,也就是下一个经济暴发点——人工智能,互联网人都比拟相熟国内的BAT,以及国外的apple、google、facebook、IBM、微软、亚马逊等等;能够大抵看一下他们的商业布局,将来全是往人工智能方向倒退,当然目前在认知商业这一块IBM当属领头羊,特地是以后主推的watson这个产品,以及获得了十分棒的成果。大数据培训 4、流式剖析 目前流式计算是业界钻研的一个热点,最近Twitter、LinkedIn等公司相继开源了流式计算零碎Storm、Kafka等,加上Yahoo!之前开源的S4,流式计算钻研在互联网畛域继续升温,流式剖析能够对多个高吞吐量的数据源进行实时的荡涤、聚合和剖析;对存在于社交网站、博客、电子邮件、视频、新闻、电话记录、传输数据、电子感应器之中的数字格局的信息流进行疾速解决并反馈的需要。目前大数据流剖析平台有很多、如开源的spark,以及ibm的streams。 5、内存数据结构 通过动态随机内存拜访(DRAM)、Flash和SSD等分布式存储系统提供海量数据的低延时拜访和解决; 6、分布式存储系统 分布式存储是指存储节点大于一个、数据保留多正本以及高性能的计算网络;利用多台存储服务器分担存储负荷,利用地位服务器定位存储信息,它岂但进步了零碎的可靠性、可用性和存取效率,还易于扩大。以后开源的HDFS还是十分不错,有须要的敌人能够深刻理解一下。 7、数据可视化 数据可视化技术是指对各类型数据源(包含hadoop上的海量数据以及实时和靠近实时的分布式数据)进行显示;以后国内外数据分析展现的产品很多,如果是企业单位以及政府单位倡议应用cognos,平安、稳固、功能强大、反对大数据、十分不错的抉择。 8、数据整合 通过亚马逊弹性MR(EMR)、Hive、Pig、Spark、MapReduce、Couchbase、Hadoop和MongoDB等软件进行业务数据整合; 9、数据预处理 数据整合是指对数据源进行荡涤、裁剪,并共享多样化数据来放慢数据分析; 10、数据校验 对分布式存储系统和数据库上的海量、高频率数据集进行数据校验,去除非法数据,补全缺失。 数据整合、解决、校验在目前曾经统称为ETL,ETL过程能够把结构化数据以及非结构化数据进行荡涤、抽取、转换成你须要的数据、同时还能够保障数据的安全性以及完整性、对于ETL的产品举荐应用datastage就行、对于任何数据源都能够完满解决。

November 8, 2021 · 1 min · jiezi

关于大数据:大数据开发之Hive解析Json数组

在Hive中会有很多数据是用Json格局来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段寄存在一个json数组中,因而数据平大数据培训台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。Hive自带的json解析函数 get_json_object• 语法:get_json_object(json_string, '$.key')• 阐明:解析json的字符串json_string,返回path指定的内容。如果输出的json字符串有效,那么返回NULL。这个函数每次只能返回一个数据项。• 示例:select get_json_object('{"name":"zhangsan","age":18}','$.name'); • 后果: 如果既要解析name字段,也解析age字段,则能够这样写:select get_json_object('{"name":"zhangsan","age":18}','$.name'),get_json_object('{"name":"zhangsan","age":18}','$.age');然而如果要解析的字段有很多,再这样写就太麻烦了,所以就有了 json_tuple 这个函数。 json_tuple• 语法:json_tuple(json_string, k1, k2 ...)• 阐明:解析json的字符串json_string,可指定多个json数据中的key,返回对应的value。如果输出的json字符串有效,那么返回NULL。• 示例:select b.name,b.agefrom tableName a lateral viewjson_tuple('{"name":"zhangsan","age":18}','name','age') b as name,age;• 后果: 留神:下面的json_tuple函数中没有$.如果在应用json_tuple函数时加上$.就会解析失败:select b.name,b.agefrom tableName a lateral viewjson_tuple('{"name":"zhangsan","age":18}','$.name','$.age') b as name,age;后果:字段全是NULL,所以json_tuple函数不须要加$.了,否则会解析不到。总结:json_tuple相当于get_json_object的劣势就是一次能够解析多个json字段。然而如果咱们有个json数组,这两个函数都无奈解决。Hive解析json数组一、嵌套子查问解析json数组如果有一个hive表,表中 json_str 字段的内容如下:咱们想把这个字段解析进去,造成如下的构造:要解析这个json数组,仅用下面介绍的两个函数就解析不进去了,还需用到如下介绍的几个函数:explode函数• 语法:explode(Array OR Map)• 阐明:explode()函数接管一个array或者map类型的数据作为输出,而后将array或map外面的元素依照每行的模式输入,行将hive一列中简单的array或者map构造拆分成多行显示,也被称为列转行函数。• 示例: -- 解析arrayhive> select explode(array('A','B','C'));OKABC-- 解析maphive> select explode(map('A',10,'B',20,'C',30));OKA 10B 20C 30regexp_replace函数• 语法: regexp_replace(string A, string B, string C)• 阐明:将字符串A中的合乎java正则表达式B的局部替换为C。留神,在有些状况下要应用转义字符,相似oracle中的regexp_replace函数。• 示例: hive> select regexp_replace('foobar', 'oo|ar', ''); OKfb上述示例将字符串中的 oo 或 ar 替换为''。有了上述几个函数,接下来咱们来解析json_str字段的内容:• 先将json数组中的元素解析进去,转化为每行显示: ...

November 5, 2021 · 2 min · jiezi

关于大数据:导致数据挖掘失败的几个常见原因

加入过大数据培训的人肯定都晓得在大数据中数据挖掘是重要的一环也是必学课程。在大数据培训学习过程中咱们会在数据挖掘局部遇到许多问题,导致数据挖掘失败。导致数据挖掘失败的起因有很多,咱们只有稍加留神就可能及时止损,多加总结就可能更好的进行数据挖掘工作。然而导致数据挖掘失败的起因还有一个,这个是极其隐秘的,那就是推广,很多人在推广过程中开掘数据失去了失败的后果,那么到底是怎么回事呢? 首先咱们给大家说第一个起因,那就是数据缺失总是存在的,这是为什么呢?这是因为数据挖掘中的数据筹备工作都是须要很长时间的。 数据挖掘失败的第二个起因,那就是假数据真剖析,咱们都晓得,在剖析数据之前是须要解析数据的,所谓的解释数据,都是假数据,尽管数据是咱们认真获取的,但因为受限于业务能力,决定了你只能应用假数据,后果可想而知。 数据挖掘失败的第三个起因,那就是数据获取太难了,就目前而言,很多的大量的促销政策时时轰炸眼球,大家看得是冷落,但对于数据挖掘人员来讲,却是业务了解和数据筹备的噩梦了,这是因为业务的了解很艰难,数据齐全被业务扭曲,如果要预测精确,不仅本身业务促销的因素要思考进去,还要思考竞争对手策反政策、地区影响等等,你训练时看到的是一个简略的离网后果数据,但诱导因素异样简单,这类因素相干的数据基本取不到或者难以量化。 第四哥起因不足对于常理的感觉,在社交网络中有一个案例,那就是很多场景中两个对话的来往圈是有肯定的重合度的,这样可能辨认两个手机号码是否是同一个人的,这个办法看起来很简略,然而却并没有什么用。 第五个起因不足迭代的能力,在传统企业中,如果数据挖掘的成果不尽人意,那么肯定和企业的组织、机制、流程等相干,不论是什么业务,很多数据挖掘模型就是因为线下流程的起因而被放弃了 第六个数据挖掘失败的起因推广,很多人示意丈二的和尚摸不到头脑,其实就是很多传统企业不同地区上的业务差别,不仅仅造成治理难度加大、体验不统一、零碎过于简单、经营老本昂扬,也让模型的建设和推广异样艰难。

November 5, 2021 · 1 min · jiezi

关于大数据:HashMap-和-Hashtable-区别

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的别离。次要的区别有:线程安全性,同步(synchronization),以及速度。 HashMap简直能够等价于Hashtable,除了HashMap是非synchronized的,并能够承受null(HashMap能够承受为null的键值(key)和值(value),而Hashtable则不行)。 HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程平安的,多个线程能够共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的代替,比HashTable的扩展性更好。大数据培训 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程扭转了HashMap的构造(减少或者移除元素),将会抛出ConcurrentModificationException,但迭代器自身的remove()办法移除元素则不会抛出ConcurrentModificationException异样。但这并不是一个肯定产生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。 因为Hashtable是线程平安的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不须要同步,只须要繁多线程,那么应用HashMap性能要好过Hashtable。 HashMap不能保障随着工夫的推移Map中的元素秩序是不变的。 要留神的一些重要术语: sychronized意味着在一次仅有一个线程可能更改Hashtable。就是说任何线程要更新Hashtable时要首先取得同步锁,其它线程要等到同步锁被开释之后能力再次取得同步锁更新Hashtable。 Fail-safe和iterator迭代器相干。如果某个汇合对象创立了Iterator或者ListIterator,而后其它的线程试图“构造上”更改汇合对象,将会抛出ConcurrentModificationException异样。但其它线程能够通过set()办法更改汇合对象是容许的,因为这并没有从“构造上”更改汇合。然而如果曾经从构造上进行了更改,再调用set()办法,将会抛出IllegalArgumentException异样。 构造上的更改指的是删除或者插入一个元素,这样会影响到map的构造。 咱们是否让HashMap同步? HashMap能够通过上面的语句进行同步: Map m = Collections.synchronizeMap(hashMap); 论断Hashtable和HashMap有几个次要的不同:线程平安以及速度。仅在你须要齐全的线程平安的时候应用Hashtable,而如果你应用Java 5或以上的话,请应用ConcurrentHashMap吧。

November 4, 2021 · 1 min · jiezi

关于大数据:大数据开发基础之HDFS参数调优步骤分享

1.NameNode数据目录 dfs.name.dir, dfs.namenode.name.dir 指定一个本地文件系统门路,决定NN在何处寄存fsimage和editlog文件。能够通过逗号分隔指定多个门路. 目前咱们的产线环境只配大数据培训置了一个目录,并存放在了做了RAID1或RAID5的磁盘上。 2.DataNode数据目录 dfs.data.dir, dfs.datanode.data.dir 指定DN寄存块数据的本地盘门路,能够通过逗号分隔指定多个门路。在生产环境可能会在一个DN上挂多块盘。 3.数据块的正本数 dfs.replication 数据块的正本数,默认值为3 4.数据块大小 dfs.block.size HDFS数据块的大小,默认为128M,目前咱们产线环境配置的是1G   5.HDFS做平衡时应用的最大带宽 dfs.datanode.balance.bandwidthPerSec HDFS做平衡时应用的最大带宽,默认为1048576,即1MB/s,对大多数千兆甚至万兆带宽的集群来说过小。不过该值能够在启动balancer脚本时再设置,能够不批改集群层面默认值。目前目前咱们产线环境设置的是50M/s~100M/s 6.磁盘可损坏数 dfs.datanode.failed.volumes.tolerated DN多少块盘损坏后进行服务,默认为0,即一旦任何磁盘故障DN即敞开。对盘较多的集群(例如每DN12块盘),磁盘故障是常态,通常能够将该值设置为1或2,防止频繁有DN下线。 7.数据传输连接数 dfs.datanode.max.xcievers DataNode能够同时解决的数据传输连接数,即指定在DataNode内外传输数据应用的最大线程数。官网将该参数的命名改为dfs.datanode.max.transfer.threads,默认值为4096,推荐值为8192,咱们产线环境也是8192 8.NameNode解决RPC调用的线程数 dfs.namenode.handler.count NameNode中用于解决RPC调用的线程数,默认为10。对于较大的集群和配置较好的服务器,可适当减少这个数值来晋升NameNode RPC服务的并发度,该参数的倡议值:集群的自然对数 * 20 python -c 'import math ; print int(math.log(N) * 20)' 咱们800+节点产线环境配置的是200~500之间 9.NameNode解决datanode 上报数据块和心跳的线程数 dfs.namenode.service.handler.count 用于解决datanode 上报数据块和心跳的线程数量,与dfs.namenode.handler.count算法统一 10.DataNode解决RPC调用的线程数 dfs.datanode.handler.count DataNode中用于解决RPC调用的线程数,默认为3。可适当减少这个数值来晋升DataNode RPC服务的并发度,线程数的进步将减少DataNode的内存需要,因而,不宜适度调整这个数值。咱们产线环境设置的是10 11.DataNode最大传输线程数 dfs.datanode.max.xcievers 最大传输线程数 指定在 DataNode 内外传输数据应用的最大线程数。 这个值是指定 datanode 可同時解决的最大文件数量,举荐将这个值调大,默认是256,最大值能够配置为65535,咱们产线环境配置的是8192。 12.读写数据时的缓存大小 io.file.buffer.size –设定在读写数据时的缓存大小,应该为硬件分页大小的2倍 咱们产线环境设置的为65536 ( 64K) 13.冗余数据块删除 在日常保护hadoop集群的过程中发现这样一种状况: 某个节点因为网络故障或者DataNode过程死亡,被NameNode断定为死亡,HDFS马上主动开始数据块的容错拷贝;当该节点从新增加到集群中时,因为该节点上的数据其实并没有损坏,所以造成了HDFS上某些block的备份数超过了设定的备份数。通过观察发现,这些多余的数据块通过很长的一段时间才会被齐全删除掉,那么这个工夫取决于什么呢? 该工夫的长短跟数据块报告的间隔时间无关。Datanode会定期将以后该结点上所有的BLOCK信息报告给NameNode,参数dfs.blockreport.intervalMsec就是管制这个报告距离的参数。 ...

November 4, 2021 · 1 min · jiezi

关于大数据:网易智企斩获2021全球新经济卓越成就奖两项大奖

近日,由艾媒征询团体(iiMedia Research)举办的“2021 寰球将来科技大会暨年度寰球新经济卓越成就奖颁奖典礼”在广州隆重召开。现场正式揭晓“2021 寰球新经济卓越成就奖”获奖榜单,网易旗下一站式企业服务提供商网易智企斩获两个奖项,其中,网易智企取得「2021 最具投资价值企业」,网易智企旗下交融通信云服务专家网易云信取得「2021 最佳交融通信翻新利用平台」。 “2021 寰球新经济卓越成就奖”聚焦新科技、新生产、新资本。基于投资价值、技术与创新能力、市场占有率、行业口碑等维度,艾媒征询通过艾媒大数据决策和智能剖析零碎,联合海量网民投票及权威专家智囊团综合评审,开掘体现突出的产品、品牌、企业、投资机构。 通过公众投票、专家复评,再到最终评定,本次网易智企斩获的两个奖项证实了市场对其的高度认可,也是网易智企以及旗下网易云信品牌价值和技术实力的最佳体现。 网易智企:「2021 最具投资价值企业」 不积跬步,无以至千里。网易智企被评比为「2021 最具投资价值企业」并非凭借一朝之力。乘赛道之风,积产品之势, 布前瞻之局,务基本之实,这才是网易智企荣获该奖项的起因。 一、行业前景,赛道后劲。企业服务赛道异样火爆已是业内公认,在中国鼎力进行产业降级的宏观背景下,作为产业互联网落地的重要撑持,企业服务曾经进入倒退的黄金时代。 时机与挑战并存的 2021 年,网易智企保持以翻新致匠心,核心技术一直降级、产品矩阵不断丰富、发挥优势深耕行业、丰盛生态拓展资源,这样的网易智企在本就炽热的企服赛道跑出翻新倒退的“加速度”。 二、产品劣势,工夫验证。网易智企旗下三大业务板块——网易云信、网易易盾、网易云商,是依靠网易 24 年技术积淀打造进去的产品,并通过网易外部多款亿级日活产品验证后,才推向市场,经得起工夫的测验。   以网易云信为例,作为业内最早能够承载亿级日活的即时通讯平台,无论是日活、笼罩终端数、音讯散发量,网易云信均位列国内同类企业第一,此外在音视频畛域稳居行业第一梯队,本次评比中更是取得「2021 最佳交融通信翻新利用平台」。截至 10 月,网易云信已帮忙 120 万企业开发者发送 16000 亿条信息,笼罩智能终端 SDK 数累计超过 186 亿。 再比方网易易盾,涵盖内容平安、业务平安、挪动平安三大畛域,作为国内当先的数字内容风控服务商,网易易盾历史数据领跑行业。仅 2020 年全年,⽹易易盾就检测数据 4116 亿,辨认有害信息 425 亿,新提炼有害信息特色 12 亿,反作弊累计检测量百亿次,反作弊歹意行为辨认准确率在 99% 以上。 而网易云商,作为网易智企旗下的一站式商业增长服务平台,以智能为外围,依靠于网易积淀 20 余年的 AI、大数据等技术,以及对于电商、新批发、汽车、家装等行业的教训积攒,让营销变得更加数智化,用数据驱动营销策略和动作的一直优化迭代,最终实现降本增效。 三、预感将来,提前布局。企业服务的极致肯定是便捷、一站式、以人为本,而这须要行业痛点的深刻了解以及产品间的深度交融。 网易智企很早就开始布局,「平安通」便是布局的产物之一,其交融了网易云信和网易易盾核心技术能力,能够实现 2 个 API 一体化疾速接入,1 个后盾、 1 个零碎即可一站解决内容传输、平安检测两大问题,宽泛实用于 IM、RTC、直播点播等场景。在提高效率的同时,极大升高因须要内容平安检测而引入的通信费用。 网易云信:「2021 最佳交融通信翻新利用平台」 作为网易智企旗下交融通信云服务专家,网易云信早在 2015 年便开始布局交融通信畛域。 广义的交融,能够了解为各种通信技术的交融,比方 IM、RTC、5G 音讯平台、短信、音视频通话等的交融;狭义的交融,则应该包含所有能够交融的技术和场景。在网易云信身上,交融早已不局限于前者。 网易云信在 IM+RTC 的根底上,曾经做了很多交融的摸索,包含: ...

November 3, 2021 · 1 min · jiezi

关于大数据:多线程环境下的读写分离思想

一、场景 当咱们在多线程的环境下操作一个汇合,比方 ArrayList或者Hashmap,这些汇合默认状况下必定是线程不平安的,如果说多个线程同时去读和写这些汇合就会有线程平安问题。 好,问题来了,咱们应该怎么让一个汇合变成线程平安的呢? 二、synchronized 或者lock锁 有一个非常简单的方法,对这些汇合的拜访都加上线程同步的管制,或者说是加锁。 这里能够去另一篇文章看一下Synchronized和lock锁的原理简述synchronized和lock锁 最简略的做法就是加一个Synchronized或者Lock锁。 咱们假如就是用 ReadWriteLock 读写锁的形式来管制对这些汇合的拜访。 这样多个读申请能够同时执行从这些汇合里读取数据,然而读申请和写申请之间互斥,写申请和写申请也是互斥的。 public Object  read() {    lock.readLock().lock();    // 对汇合的读操作    lock.readLock().unlock(); } public void write() {    lock.writeLock().lock();    // 对汇合的写操作    lock.writeLock().unlock(); } 大家想想,相似下面的代码有什么问题呢? 最大的问题,其实就在于写锁和读锁的互斥。假如写操作频率很低,读操作频率很高,是写少读多的场景。 那么偶然执行一个写操作的时候,是不是会加上写锁,此时大量的读操作过去是不是就会被阻塞住,无奈执行?大数据培训 这个就是读写锁可能遇到的最大的问题。 三、从kafka源码获取灵感 kafka实现了一个 CopyOnWriteMap解决了下面的一系列问题,这个 CopyOnWriteMap采纳的是CopyOnWrite思维,它是一种相似于读写拆散的思维。 咱们来看一下这个 CopyOnWriteMap 的源码实现: // 典型的volatile润饰一般Map   private volatile Map map;   @Override   public synchronized V put(K k, V v) {       // 更新的时候先创立正本,更新正本,而后对volatile变量赋值写回去       Map copy = new HashMap(this.map); ...

November 3, 2021 · 1 min · jiezi

关于大数据:大数据开发之数据仓库架构分析

概述架构是数据仓库建设的总体规划,从整体视角形容了解决方案的高层模型,形容了各个子系统的性能以及关系,形容了数据从源零碎到决策大数据培训零碎的数据流程。业务需要答复了要做什么,架构就是答复怎么做的问题。 架构的价值 数据仓库架构 数据仓库的外围性能从源零碎抽取数据,通过荡涤、转换、标准化,将数据加载到BI平台,进而满足业务用户的数据分析和决策反对。数据仓库架构蕴含三个局部:数据架构、应用程序架构、底层设施。 底层设施 底层设施为架构提供了根底,底层设施包含硬件、数据库平台、网络和桌面零碎。 硬件 硬件次要指服务器硬件,次要有数据库服务器、ETL服务器、调度服务器、报表服务器、BI门户服务器、接口服务器。 数据库平台 数据库平台分为二大类:联机事务处理OLTP(on-line transaction processing)、联机剖析解决OLAP(On-Line Analytical Processing),OLAP是为数据分析而设计的数据库管理系统。次要有Oracel,MySQL,Teradata, Greenplum,Hive,Kudu。 桌面零碎 数据仓库不同的利用对桌面零碎也有不同的要求,开发工具次要有Window、Mac面零碎,部署服务器次要有Unix桌面零碎,零碎BI应用程序次要有Window、Mac、挪动设施桌面零碎。 网络 网络是底层设施的根底,特地是大数据时代对网络的要求越来越高。 BI应用程序架构 数据仓库是数据处理的后盾,业务用户并不关怀后盾怎么解决。BI利用是数据出现的前台,是业务用户进行查问的入口。BI应用程序的体验也是掂量数据仓库是否胜利的次要因素。 BI剖析周期 业务剖析从监督流动开始辨认某个问题或机会,进而采取行动,最终回到监督该流动产生的后果上来,达到数据驱动业务增长的目标。剖析周期把这个过程分为五个不同的阶段。 BI利用分类 接口查问 数据以接口的模式提供给上下游零碎,供高低业务零碎进行查问。次要有推和拉二种模式。 即席查问 业务用户依据本人的需要,自定义查问申请,后盾主动组织SQL语句拜访维度模型。 规范报表 依据业务用户的需要,进行定制报表。 仪表盘 它是向企业展现度量信息和要害业务指标现状的数据可视化工具。 数据挖掘 为数据挖掘工具提供规范根底数据。 经营查问 为了缩小业务零碎的大数据量查问压力,数据仓库为业务零碎提供实时的查问。 数据存储 数据架构 数据架构次要形容数据从源零碎抽取数据,而后通过荡涤、规范化、提交造成规范模型,最终提交给业务用户,以及对数据的治理。 源零碎 数据仓库个别会面临多个、异构数据源的问题,次要分为结构化,半结构化以及非结构化数据。为了便于管理须要对源零碎建设元数据信息。 抽取 因为源零碎的多样性,源抽取阶段个别抉择应用工具。在抽取之前还要做以下工作: 数据分析是对数据的技术性剖析,对数据的内容、一致性和构造进行形容。对源零碎的数据品质进行评估。 数据分析和变动数据捕捉策略:为了缩小对源零碎的影响,个别只抽取变动的数据,也须要辨认物理删除的数据。CDC策略次要有: 增加审计列在源零碎追加日期字段,当数据发生变化的时候,零碎会自动更新该值。如果由后盾人员手工批改数据,可能就产生脱漏。 数据比拟比拟源零碎和数据仓库的数据,只抽取变动的数据。这种办法须要全量的数据,比拟消耗资源。能够视数据量的大小而定。 读取日志读取数据库操作日志信息,同步到数据仓库中。个别日志的有效期比拟短,一旦产生要重跑的状况,可能以前的日志曾经被清空了。 音讯队列把事务信息放到音讯队列里,以流的模式同步到数据仓库。这种形式即能够加重源零碎的压力,又能做到实时同步。 数据转换数据从源零碎抽取过去之后,就要进入数据转换阶段。这一阶段是数据仓库开发外围阶段。次要有以下步骤: 荡涤 数据荡涤是制订转换规则,筛选数据并纠正数据的过程。荡涤的目标是改良源零碎的数据品质,然而不要在数据仓库做过多的荡涤,源零碎的数据品质应该在源头解决。荡涤的次要内容包含:  规范化 规范化就是整合各个源零碎的数据,把数据对立命名,对立取值,建设企业规范版本数据。次要内容包含: 提交 提交就要依据维度模型生成维度表和事实表。提交次要内容包含: 抉择适合的迟缓变动维类型为维表生成代理键治理不同粒度的档次维治理专项维生成维度桥接表生成代理键管道抉择适合的事实表类型解决提早达到的事实生成维度表生成事实表汇集 汇集是指依据事务事实表进行更高粒度的聚合以及生成绝对应的维度表。次要内容包含: 数据存储 数据存储是指在在数据的生命周期内对数据的治理,次要内容包含:

November 3, 2021 · 1 min · jiezi

关于大数据:极光笔记丨数据质量建设实践

作者:极光数据架构师—旷东林 01 摘要本文提出了一种大数据质量体系建设的办法,能对数据处理过程中的ETL工作进行数据品质监控,并依据监控后果进行必要的告警或工作停止。监控工作的开启能够增量进行,对存在的ETL工作不须要做任何批改,监控工作的开启或敞开也不影响原有的ETL工作的依赖关系。 02 背景随着极光各个业务线的业绩倒退越来越依赖数据中心所提供的数据分析能力。 数据中心数据平台上运行的ETL工作也越来越多,解决逻辑也越来越发简单ETL工作的依赖链也越来越长,这些ETL工作往往还是由不同团队的不同业务人员开发的,业务人员的开发水准参差不齐,不同团队之间的沟通也可能不畅,造成ETL工作的数据品质问题频发,更重大的是,出了品质问题后,因为工作的依赖链很长,造成排查数据品质问题困难重重,需上下游一层一层的排查,需不同团队的开发人员协调排查,极大的升高了数据产出效率。 另外,因为没有对立的数据品质监管措施,往往是业务发现数据报表有问题后反馈给开发人员,开发人员才被动的去查找问题,修复谬误,不足发现问题的主动性。 最初,因为没有对立的数据品质监管措施,往往只会在数据品质问题曾经扩散开来当前才会被感知到,造成大量计算资源的节约和修补过程的耗时。 为了彻底扭转这种场面,一个弱小的数据品质监控零碎是十分必要的。本文就联合极光的理论状况设计了一套数据品质监控零碎,比拟完满的解决了上述的问题。 03 设计方案极光的数据品质监控平台十分依赖于ETL工作的调度平台提供的底层性能,其整体架构如图3-1所示 图3-1数据品质监控我的项目后盾架构 数据品质服务后盾负责的事务次要由: 1、负责接管前端的配置信息并存入后盾数据库; 2、承受质量检查过程中上报的指标采集,指标评估,工作告警制动等的质量检查过程的跟踪日志; 3、从调度零碎获取调度工作列表及其与质量检查无关的工作配置信息; 图中的调度节点实质上就是调度系统启动的一个调度过程,在失常的调度过程中,调度过程依据配置的工作类型运行相应代码,比方,如果运行的工作是一个hive脚本,则调度过程会通过hive的客户端提交hive脚本给hive服务端来执行该脚本,这里为运行hive脚本所须要的hive客户端代码被对立形象成一个SideCarProxy组件,提供对立的接口,不同类型的ETL工作通过不同的SideCarProxy实现来提交和运行不同类型的ETL工作,比方Spark工作的SideCarProxy实现就会提供提交spark工作的性能,Spark类型的ETL工作只需负责具体业务逻辑的实现。 为了反对ETL工作开启数据质量检查性能,咱们扩大了SideCarProxy的性能,在放弃与原来接口兼容的根底上扩大了三种接口,别离是数据质量指标采集接口,数据质量指标评估接口,数据质量检查动作接口和数据品质告警配置接口。这些质量检查接口依据其触发查看的工夫点不同能够进一步分为前置查看,中置检查和后置查看。 前置查看是在ETL工作运行前触发的质量检查工作,个别用于查看ETL工作的输出数据是否满足要求;中置查看时在ETL工作运行期间监控工作运行状况的一种查看机制,经常用于工作启动工夫,运行时长,实现工夫等指标的查看;后置查看是在ETL工作运行实现后触发的质量检查工作,个别用于查看ETL工作的输入数据是否满足要求。 3.1 数据质量指标采集接口 数据品质的查看依赖数据质量检查指标的定义,这种指标的定义齐全由业务依据本身的须要定义。为了提供零碎的应用便利性,零碎内置了一些罕用的数据质量检查指标,比方工作的启动时延,运行时长,实现时延。对于业务特定的指标,零碎反对通过sparksql的形式来自定义业务特有的数据品质采集指标,如截图3-2所示图3-2 质量检查的预约义指标和自定义指标 3.2 数据质量指标 利用数据质量指标采集接口,能够实现从数据的时效性,完整性,一致性,统计特色等各个角度来实现数据品质的监控,上面通过示例的形式来阐明怎么实现这些指标的监控。 3.2.1 时效性指标监控 时效性指标目前次要是通过工作的启动时延和完结时延来实现,启动时延监控ETL工作配置的启动工夫与工作理论的启动工夫之间的提早;完结时延监控ETL工作配置的启动工夫与工作理论的实现工夫之间提早;这两个指标监控零碎曾经原生反对,开发人员只需开启这两个监控项即可 3.2.2完整性指标监控 完整性指标个别监控指标表的数据是否残缺,最简略的检测形式就是统计指标表指定分区的记录数,这种检测目前能够通过零碎的自定义指标接口来实现,其实现的SQL逻辑如下表所示 表3-1 完整性指标采集的SQL实现 SQL中的变量会主动被任务调度时所援用的具体变量值替换,每次ETL工作运行时该指标都会被检测一次,其检测值在通过评估规定的评估后依据告警规定实现告警动作。后续布局把一些大家罕用的完整性指标实现为零碎原生反对,进步大家应用的便利性。 3.2.3 一致性指标监控 一致性指标的监控和完整性指标的实现形式完全相同,目前的实现还须要用户编写SQL脚本来实现,后续也布局把罕用的一致性指标实现为零碎原生反对的形式。 3.2.4数据统计特色监控 这类指标是齐全依赖ETL工作自身的业务逻辑的,实质上是一类数据的业务品质的检测,目前该类指标的监控都须要业务本人通过SQL的形式来表白指标采集逻辑,零碎只会提供这些指标的保留和治理性能。上面以监控工作的数据歪斜水平为例来阐明这类监控指标的实现,假设数据歪斜以数据分布偏离均匀分布的水平来掂量,则其歪斜指标能够定义为(公式来源于信息论的穿插熵) 表3-2 数据统计特色指标采集的SQL实现 获取这个歪斜率后依据评估规定中配置的阈值即可检测数据歪斜的水平是否在正当的范畴内,并做相应的告警。 3.3 数据质量指标评估接口 数据质量指标评估接口用于评估采集到的数据指标是否合乎数据品质要求,其接口次要承受两个参数,别离是评估规定和阈值范畴。评估规定决定了采集到的指标值通过怎么的计算能力转换成评估值,阈值范畴决定了评估值的正当范畴,评估值一旦超出阈值范畴,就视为数据品质不合格。 依据业务的须要,能够抉择不同的评估规定,为了进步零碎的应用便利性,零碎内置了透传,同比,环比三个评估规定,业务也能够依据业务的须要通过sparksql自定义评估规定。 图3-3 质量检查的评估规定与告警设置 3.4数据质量检查动作接口 数据质量检查动作接口配置数据质量检查不合格时所采取的措施,目前反对疏忽,告警和阻塞三种动作。忽悠示意不做任何操作,查看工作和ETL工作失常运行;告警示意依据配置的告警模板通过钉钉,短信或电话的形式收回告警音讯,但查看工作和ETL工作都失常持续运行不受影响;阻塞示意依据配置的告警模板通过钉钉,短信或电话的形式收回告警音讯,同时该ETL工作及其质量检查工作都终止,ETL工作视为执行失败,依赖该工作的后续工作不能继续执行,此时,须要人工干预修复数据并通过数据质量检查后该工作才视为执行胜利。 3.5数据品质告警配置接口 数据品质告警配置接口次要配置告警的接管人,承受渠道和其余一些与告警无关的一些高级设置 04 总结数据品质监控我的项目为业务数据品质的监控提供了一个对立的平台,使得业务数据的品质保障工作从被动告诉晋升到了被动发现的水准,并为业务自身参加数据品质保障工作提供的参加伎俩。 同时,为了进一步提高数据品质的保障工作,数据品质监控我的项目也在一直给加强和欠缺,后续布局改善的几个方面次要有: 1、继续提供更多的预约义采集指标,预约义评估指标 2、反对更多的自定义指标的实现形式,比方反对通过python实现自定义指标 3、通过利用ETL工作的依赖血缘关系,能进一步评估数据品质问题的影响范畴,依据影响范畴给与不同的告警等级,依据影响的业务线提前告诉相干业务人员和开发人员做好相干的协调工作。

November 2, 2021 · 1 min · jiezi

关于大数据:大数据开发之Hive应用分析

Hive架构1.用户接口:ClientCLI(hive shell) JDBC(java拜访hive) WEBUI(浏览器拜访hive)2.元数据(Metastore)-数据库元数据包含:表名称、表所属的数据库、表的拥有者、列/分区字段名、表的类型(内部/外部)、表的数据所在的目录默认存储在自带的derby的数据库中,推大数据培训荐应用Mysql来存储元数据3.hadoophive应用HDFS进行数据的存储,应用MR进行数据的计算4.驱动器:driver蕴含:解析器 -> 优化器 -> 编译器 -> 执行器Hive的长处和应用场景1.简略易用(操作接口采纳类SQL语法,提供疾速开发的能力)2.防止咱们去写MR,缩小开发人员的学习老本3.对立的元数据管理,可与impala、spark等共享数据4.易扩大5.数据的离线解决:比方日志剖析,海量结构化数据离线剖析6.Hive的执行提早比拟高,因而Hive罕用于数据离线剖析,适宜实时性要求不高的场景7.Hive劣势在于解决大数据,对于解决小数据没有劣势,因为hive的执行提早性很高。Hive罕用的命令1.show databases; //查看数据库2.create database db_hive; //创立数据库3.drop database db_hive; //删除数据库(数据库内无表)4.use db_hive; //应用数据库5.创立表:CREATE TABLE u_data ( userid INT, movieid INT, rating STRING, unixtime STRING)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','STORED AS TEXTFILE; //textfile文本,以“,”为分隔符 6.load data local inpath '/opt/datas/ratings.txt' into table u_data; //加载本地数据到表中7.select * from u_data; //查问表8.select userid from u_data; //字段查问9.select count(1) u_count from u_data; //统计行数,进行mr计算10.desc u_data; //形容表信息11.desc extended u_data; //形容表具体信息(无序)12.desc formatted u_data; //形容具体信息(有序)13.show functions; //查看hive自带所有函数14.desc function upper; //查看upper函数的阐明15.desc function extended uppper; //查看upper函数的具体阐明16.select userid,upper(username) uppper_name from student; //利用upper函数进行大写转换Hive罕用的配置属性1.Hive数据仓库地位配置:hive-default.xml <property> ...

November 2, 2021 · 2 min · jiezi

关于大数据:大数据开发之Hadoop生态6-大核心组件

Hadoop 第一代分布式存储计算框架Hadoop是一个分布式系统基础架构,由Apache基金会开发,它容许用户在不理解分布式底层细节的状况下,开发分布式程序,充分利用集群的威力高速运算和存储。Hadoop蕴含丰盛的生态组件,有咱们耳熟能详的分布式文件系统HDFS,分布式计算框架MapReduce,以及散布式调度零碎YARN。HDFS是一个高容错、高吞吐的分布式存储系统,能够被宽泛部署在高价的硬件设施之上。根本架构:有几个概念值得记住:• 数据块(Block) 大文件被切分成多个block存储,默认大小为128M。为了保证数据可靠性,每个block分布式存储在多个datanode节点上,默认3正本。• NameNode NameNode是HDFS的主节点,次要作用是维大数据培训护文件系统的目录构造,管理文件与block之间关系,block与datanode之间关系。• DataNode DataNode是HDFS的数据节点,次要作用是存储与治理数据块,并将信息上报给NameNode。MapReduce是Hadoop体系中的并行计算框架, 也是一种编程模型,分成Map和Reduce两个阶段,在Map阶段对数据进行提取,失去无效的键值对,而后在Reduce阶段进行计算,失去最终的后果。流程图如:YARN是一个通用资源管理零碎,可为下层利用提供对立的资源管理和调度,它的引入在集群利用率、资源对立治理和数据共享等方面具备重大意义。这里不做具体介绍。Hive 基于Hadoop的数据仓库Hive是构建在Hadoop之上的数据仓库工具,由facebook开源,最后用于解决海量结构化的日志数据统计问题。Hive 定义了一品种 SQL 查询语言 HQL,提供SQL查问性能,能够将SQL语句转换为MapReduce工作运行。Hive是一个SQL on Hadoop组件,次要特点是高吞吐、高延时,学习成本低(SQL),通常用于海量结构化数据离线剖析;Hive反对TextFile、RCFile、ORC、Parquet等多种文件格式,Gzip、LZO、Snappy等多种压缩格局;反对用户自定义函数。数据模型如下:Hive是大家比拟熟知的开源组件,少数状况下咱们只有解决如何更好、稳固、高效的应用问题即可。波及Hive MetaStore相干的属于高阶应用。HBase 支流的分布式NoSQL数据库HBase(Hadoop database)是一个分布式、可扩大、面向列的NoSQL数据库,实质上是一个Key-Value零碎,底层数据存储在文件系统HDFS上,原生反对 MapReduce计算框架,具备高吞吐、低延时的读写特点。HBase周边生态成熟,具备很多丰盛的个性,比方强一致性读写、主动分区、主动故障转移、面向列等。HBase次要用于海量数据永久性存储与超大规模并发拜访场景,目前利用十分宽泛。生态架构如:HBase相干的概念次要有:• HMaster HBase主节点,负责节点的治理。• RegionServer HBase从节点,数据节点;负责数据的读写。• Region HBase表的分区,程度方向分布式存储的单元。• Namespace• Table• Rowkey• ColumnFamily• ColumnQualifier Spark 一站式的分布式计算引擎Spark是一个疾速通用的、一站式的分布式计算引擎,它是开源的类Hadoop MapReduce的通用并行框架,领有Hadoop MapReduce所具备的长处,但又不同于MapReduce,其中间输入后果能够保留在内存中,从而不再须要频繁读写HDFS,因而Spark能更好地实用于数据挖掘与机器学习等须要迭代的MapReduce算法。Spark提供了大量的库,次要包含Spark Core、Spark SQL 、Spark Streaming 、MLlib、GraphX等。开发者能够在同一个应用程序中无缝组合应用这些库。框架图如:总结Spark的技术劣势,次要有以下几点:• 弱小的RDD模型• 先进的DAG架构• 高效的Cache机制• 丰盛的算子操作类型• 多语言反对• 对立残缺的解决方案 Kafka 分布式音讯引擎及流解决平台Kafka是一个分布式音讯引擎与流解决平台,常常用做企业的音讯总线、实时数据管道,甚至还可把它看作存储系统。晚期Kafka 的定位是一个高吞吐的分布式音讯零碎,目前则演变成了一个成熟的分布式音讯引擎,以及流解决平台。高吞吐、低延时是Kafka 显著的特点,Kafka可能达到百万级的音讯吞吐量,提早可达毫秒级。Kafka是典型的生产者-消费者模型,如下:Kafka生产端发送音讯到集群Broker节点上,具体是发到某一个topic的partition中,音讯在同一partition中保障程序;生产端拉取音讯进行生产解决,通常是sink到其余引擎如另一个kafka、存储系统、NoSQL数据库等。波及次要概念有:• Producer 生产者,即音讯产生和发送的一方。• Consumer 消费者,即拉取音讯进行解决的一方。• Broker Kafka实例或角色,一个Kafka集群由多个broker形成,通常一台机器部署一个Kafka实例,一个实例挂了不影响其余实例。• Topic 即主题,服务端音讯的逻辑存储单元。一个topic通常蕴含若干个Partition即分区。• Partition Topic的分区,分布式存储在各个broker中, 实现公布与订阅的负载平衡。• Message 音讯,或称日志音讯,是Kafka服务端理论存储的数据。Elasticsearch 支流的分布式搜索引擎Elasticsearch,简称ES,是当下支流的分布式全文搜寻,它容许用户疾速的进行存储、搜寻和剖析海量数据,底层是开源库Lucene,开箱即用。ES通常为具备简单的搜寻要求或多维度查问的应用程序提供底层数据存储、搜寻能力,不仅仅是全文搜寻。根本架构图:总结次要有以下关键词或特点:• 全文或结构化搜寻 ES是一个搜索引擎,可用于全文搜寻或结构化搜寻。• 分布式 如上图示,ES数据在程度方向是以分片(shard)以及正本分片(replica)的模式分布式存储在不同节点。• Restful API ...

November 1, 2021 · 1 min · jiezi

关于大数据:Hadoop面试题总结MapReduce

1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化?1)序列化和反序列化(1)序列化就是把内存中的对象,转换成字节序列(或其余数据传输协定)以便于存储(长久化)和网络传输。(2)反序列化就是将收到字节序列(或其余数据传输协定)或者是硬盘的长久化数据,转换成内存中的对象。(3)Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额定的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,hadoop本人开发了一套序列化机制(Writable),精简、高效。2)自定义bean对象要想序列化传输步骤及注意事项:(1)必须实现Writable接口(2)反序列化时,须要反射调用空参构造函数,所以必须有空参结构(3)重写序列化办法(4)重写反序列化办法(5)留神反序列化的程序和序列化的程序完全一致(6)要想把结果显示在文件中,须要重写toString(),且用"\t"离开,不便后续用(7)如果须要将自定义的bean放在key中传输,则还须要实现comparable接口,因为mapreduce框中的shuffle过程肯定会对key进行排序 2、FileInputFormat切片机制(☆☆☆☆☆)job提交流程源码详解waitForCompletion()submit();// 1、建设连贯connect();// 1)创立提交job的代理new Cluster(getConfiguration());// (1)判断是本地yarn还是近程initialize(jobTrackAddr, conf);// 2、提交jobsubmitter.submitJobInternal(Job.this, cluster)// 1)创立给集群提交数据的Stag门路Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf);// 2)获取jobid ,并创立job门路JobID jobId = submitClient.getNewJobID();// 3)拷贝jar包到集群copyAndConfigureFiles(job, submitJobDir);rUploader.uploadFiles(job, jobSubmitDir);// 4)计算切片,生成切片布局文件writeSplits(job, submitJobDir);maps = writeNewSplits(job, jobSubmitDir);input.getSplits(job);// 5)向Stag门路写xml配置文件writeConf(conf, submitJobFile);conf.writeXml(out);// 6)提交job,返回提交状态status = submitClient.submitJob(jobId, submitJobDir.toString(), job.getCredentials()); 3、在一个运行的Hadoop 工作中,什么是InputSplit?(☆☆☆☆☆)FileInputFormat源码解析(input.getSplits(job))(1)找到你数据存储的目录。(2)开始遍历解决(布局切片)目录下的每一个文件。(3)遍历第一个文件ss.txt。a)获取文件大小fs.sizeOf(ss.txt);。b)计算切片大小computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M。c)默认状况下,切片大小=blocksize。d)开始切,造成第1个切片:ss.txt—0:128M 第2个切片ss.txt—128:256M 第3个切片ss.txt—256M:300M(每次切片时,都要判断切完剩下的局部是否大于块的1.1倍,不大于1.1倍就划分一块切片)。e)将切片信息写到一个切片布局文件中。f)整个切片的外围过程在getSplit()办法中实现。g)数据切片只是在逻辑上对输出数据进行分片,并不会再磁盘上将其切分成分片进行存储。InputSplit只记录了分片的元数据信息,比方起始地位、长度以及所在的节点列表等。h)留神:block是HDFS上物理上存储的存储的数据,切片是对数据逻辑上的划分。(4)提交切片布局文件到yarn上,yarn上的MrAppMaster就能够依据切片布局文件计算开启maptask个数。 4、如何断定一个job的map和reduce的数量?1)map数量splitSize=max{minSize,min{maxSize,blockSize}}map数量由解决的数据分成的block数量决定default_num = total_size / split_size;2)reduce数量reduce的数量job.setNumReduceTasks(x);x 为reduce的数量。不设置的话默认为 1。 5、 Maptask的个数由什么决定?一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。 6、MapTask和ReduceTask工作机制(☆☆☆☆☆)(也可答复MapReduce工作原理)MapTask工作机制 (1)Read阶段:Map Task通过用户编写的RecordReader,从输出InputSplit中解析出一个个key/value。(2)Map阶段:该节点次要是将解析出的key/value交给用户编写map()函数解决,并产生一系列新的key/value。大数据培训(3)Collect收集阶段:在用户编写map()函数中,当数据处理实现后,个别会调用OutputCollector.collect()输入后果。在该函数外部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。须要留神的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。(5)Combine阶段:当所有数据处理实现后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。 ReduceTask工作机制 (1)Copy阶段:ReduceTask从各个MapTask上近程拷贝一片数据,并针对某一片数据,如果其大小超过肯定阈值,则写到磁盘上,否则间接放到内存中。(2)Merge阶段:在近程拷贝数据的同时,ReduceTask启动了两个后盾线程对内存和磁盘上的文件进行合并,以避免内存应用过多或磁盘上文件过多。(3)Sort阶段:依照MapReduce语义,用户编写reduce()函数输出数据是按key进行汇集的一组数据。为了将key雷同的数据聚在一起,Hadoop采纳了基于排序的策略。 因为各个MapTask曾经实现对本人的处理结果进行了部分排序,因而,ReduceTask只需对所有数据进行一次归并排序即可。(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。 7、形容mapReduce有几种排序及排序产生的阶段(☆☆☆☆☆)1)排序的分类:(1)局部排序:MapReduce依据输出记录的键对数据集排序。保障输入的每个文件外部排序。(2)全排序:如何用Hadoop产生一个全局排序的文件?最简略的办法是应用一个分区。但该办法在解决大型文件时效率极低,因为一台机器必须解决所有输入文件,从而齐全丢失了MapReduce所提供的并行架构。代替计划:首先创立一系列排好序的文件;其次,串联这些文件;最初,生成一个全局排序的文件。次要思路是应用一个分区来形容输入的全局排序。例如:能够为待剖析文件创建3个分区,在第一分区中,记录的单词首字母a-g,第二分区记录单词首字母h-n, 第三分区记录单词首字母o-z。(3)辅助排序:(GroupingComparator分组)Mapreduce框架在记录达到reducer之前按键对记录排序,但键所对应的值并没有被排序。甚至在不同的执行轮次中,这些值的排序也不固定,因为它们来自不同的map工作且这些map工作在不同轮次中实现工夫各不相同。一般来说,大多数MapReduce程序会防止让reduce函数依赖于值的排序。然而,有时也须要通过特定的办法对键进行排序和分组等以实现对值的排序。(4)二次排序:在自定义排序过程中,如果compareTo中的判断条件为两个即为二次排序。2)自定义排序WritableComparablebean对象实现WritableComparable接口重写compareTo办法,就能够实现排序@Overridepublic int compareTo(FlowBean o) {// 倒序排列,从大到小return this.sumFlow > o.getSumFlow() ? -1 : 1;}3)排序产生的阶段:(1)一个是在map side产生在spill后partition前。(2)一个是在reduce side产生在copy后 reduce前。 ...

November 1, 2021 · 1 min · jiezi

关于大数据:使用-Beta-Finance-分步指南

贷款人将可能为 Beta Finance 上存在的任何货币市场归还资产,以从贷款利率中取得额定收益。利息是从领取借款利率的借款人和卖空者那里领取给贷方的,用于借入资产以取得杠杆或卖空资产用于交易和 DeFi 策略。每个代币都有一个借贷池,因而能够保障贷方始终为其存入的代币在 Beta Finance 上取得最大可能的收益。 在 Beta Finance 上借出加密资产有两个简略的步骤。 抉择您想要的代币货币市场,而后单击“贷款”按钮。用户还能够通过合约地址搜寻特定的代币。 输入您心愿存入用于借贷的根底代币数量,并从您的存入中接管bToken。借贷借款人能够应用ETH、USDT、USDC 和 DAI 作为抵押品来启动 Beta Finance 的借款头寸。启动借入头寸时,贷款价值 (LTV) 比率必须低于借入代币资产层级危险参数中定义的平安阈值。 要在 Beta Finance 上发动借贷头寸,用户只需执行 3 个简略步骤: 抉择您想要的代币货币市场,而后单击“借入”按钮。用户还能够通过合约地址搜寻特定的代币。 从下拉列表中抉择您心愿应用的受反对抵押品,而后输入您心愿用于头寸的金额。除了指标之外,dApp 还提供了不便的按钮,可依据您以后抵押品持有量的百分比和借入量的抵押品百分比填充字段。单击借用按钮以启动头寸。卖空卖空者能够应用ETH、USDT、USDC 和 DAI 作为抵押品在 Beta Finance 上建设空头头寸。Beta Finance 上的卖空利用 Beta 货币市场上的借入资金,并立刻将借入的代币发售给所应用的抵押品,因而遵循与启动借入头寸雷同的抵押品和 LTV 要求。大数据培训 对于 Beta Finance 上的卖空者,能够遵循 3 个简略的步骤来建设头寸: 抉择您想要的代币货币市场,而后单击“做空”按钮。用户还能够通过合约地址搜寻特定的代币。 输出要应用的抵押品数量和要做空的代币数量。Beta 版会间接在界面中为您提供 LTV、滑点和价格影响等指标。Beta 版还将计算默认替换的最佳 DEX(Sushiswap 或 Uniswap)。单击“short”。治理职位通过导航到导航栏顶部的“我的职位”选项卡,用户将可能看到一个仪表板,使他们可能轻松治理本人的职位。通过仪表板,贷方将可能更新他们的贷款或提取他们的借出资产。借款人和卖空者将可能通过点击“补充”向他们的头寸增加额定的抵押品,并通过点击“偿还”来敞开或缩小他们的头寸。 加油在 Beta Finance 上从新填充意味着为以后的借入或空头头寸增加额定的抵押品。用户能够将更多现有的抵押品增加到头寸中,以升高贷款价值比 (LTV) 以防止清理。 要向现有头寸增加额定的抵押品,请执行以下 2 个简略步骤: 抉择您要增加更多抵押品的地位,而后单击“补充”。 输入您要增加的抵押品数量,而后单击“补充”。增加抵押品后 LTV 变动的指标可间接在 UI 中取得。偿还Beta Finance 将使用户可能应用抵押品或借入/卖空代币偿还债务。应用借/空代币偿还时,用户须要指定要偿还的借/空代币数量。应用抵押资产还款时,Beta 会主动从抵押品中扣除全副债权,并在 DEX 上执行掉期,以代表用户取得借/空资产进行还款。 ...

October 29, 2021 · 1 min · jiezi

关于大数据:大数据开发之HDFS的API操作过程

创立maven工程并导入jar包 <repositories> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url></repository></repositories><dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.6.0-mr1-cdh5.14.0</version></dependency><dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.6.0-cdh5.14.0</version></dependency><dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.6.0-cdh5.14.0</version></dependency><dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>2.6.0-cdh5.14.0</version></dependency><!-- https://mvnrepository.com/artifact/junit/junit --><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency><dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>RELEASE</version></dependency></dependencies><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <!-- <verbal>true</verbal>--> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <minimizeJar>true</minimizeJar> </configuration> </execution> </executions> </plugin></plugins></build> 应用文件系统形式拜访数据 在 java 中操作 HDFS,次要波及以下 Class: Configuration:该类的对象封装了客户端或者服务器的配置; FileSystem:该类的对象是一个文件系统对象,能够用该对象的一些办法来对文件进行操作,通过 FileSystem 的静态方法 get 取得该对象。 FileSystem fs = FileSystem.get(conf) ...

October 28, 2021 · 2 min · jiezi

关于大数据:这本少见的大数据采集与处理书到底讲了啥

计算技术的提高,以及挪动互联网、物联网、5G挪动通信技术的倒退,引发了数据规模的爆发式增长。大数据蕴含微小价值,引起了社会各界的高度关注。大概从2009年开始,“大数据”成为互联网信息技术行业的风行词汇。在经验了几年的批评、质疑、探讨、炒作之后,大数据终于迎来了属于它的时代。 大数据时代将在泛滥畛域中掀起改革的巨浪。在以云计算为代表的技术创新大幕的烘托下,这些本来很难收集和应用的数据开始容易被利用起来了,通过各行各业的不断创新,大数据会逐渐为人类发明更多的价值。大数据的能量是不可估量的,比方在2020年,大数据分析技术在新冠肺炎疫情预测、密切接触者追踪方面都产生了至关重要的作用,大大晋升了疫情防控和停工复产的效率。然而,考察显示:未被应用的信息比例高达99%,造成这种后果的次要起因是无奈采集高价值的信息。如何从大数据中采集有用的信息并正当地存储起来是大数据倒退的最关键因素之一,也能够说数据采集与解决是大数据产业的基石。 目前,大数据方面的著述、系列教材很多,但专门阐述大数据采集与解决方面的书籍不多。在此背景下,思考到大数据利用与行业及企业的联合严密,以及在大数据技术学习和教学中,应更偏差新技术的利用,对工程实际能力要求更高,河南工业大学软件学院副院长张雪萍传授组织多家单位大数据利用的一线研发工程师,总结多年研发教训,编写《大数据采集与解决》一书。 本书内容贯通大数据采集与解决的全过程,采纳“实践根底+工具+案例实战” 的编排架构,系统化解说了大数据采集、大数据预处理、大数据存储与计算、大数据安全等重要环节的相干实践与技术,包含Hadoop生态系统,Scribe、Chukwa、Kafka、Flume等大数据采集工具,HDFS、NoSQL、ElasticSearch 3种大数据存储技术,Spark String、Storm、Flink3种流计算解决框架等;聚焦电商、金融、电信、煤炭、交通、教育等行业热点问题,实例化的解说了大数据采集与解决的实践与技术在行业实际中的具体利用,展现了残缺的数据采集、荡涤、解决的数据分析案例,以期给读者展现残缺的数据采集与解决实际操作流程。

October 27, 2021 · 1 min · jiezi