Hadoop

Spark:shuffle原理

孤者浪人 提交于 2020-08-19 16:22:37
shuffle 和 stage shuffle 是划分 DAG 中 stage 的标识,同时影响 Spark 执行速度的关键步骤.   RDD 的 Transformation 函数中,又分为窄依赖(narrow dependency)和宽依赖(wide dependency)的操作.窄依赖跟宽依赖的区别是是否发生 shuffle(洗牌) 操作.宽依赖会发生 shuffle 操作. 窄依赖是子 RDD的各个分片(partition)不依赖于其他分片,能够独立计算得到结果,宽依赖指子 RDD 的各个分片会依赖于父RDD 的多个分片,所以会造成父 RDD 的各个分片在集群中重新分片, 看如下两个示例:   第一个 Map 操作将 RDD 里的各个元素进行映射, RDD 的各个数据元素之间不存在依赖,可以在集群的各个内存中独立计算,也就是并行化,第二个 groupby 之后的 Map 操作,为了计算相同 key 下的元素个数,需要把相同 key 的元素聚集到同一个 partition 下,所以造成了数据在内存中的重新分布,即 shuffle 操作.shuffle 操作是 spark 中最耗时的操作,应尽量避免不必要的 shuffle.   宽依赖主要有两个过程: shuffle write 和 shuffle fetch. 类似 Hadoop 的 Map 和 Reduce 阶段

【少走弯路】 之 zookeeper安装异常记录汇总

大城市里の小女人 提交于 2020-08-19 12:58:06
玩个zookeeper把所有的坑全部踩了一遍 从Windows到Linux,从配置文件到脚本,从环境变量到日志 BUG之王当之无愧 但是不能白白浪费经历的坑,分享一下给大家填坑 ZooKeeper介绍   ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 ZooKeeper包含一个简单的原语集, 提供Java和C的接口。 官网: https://zookeeper.apache.org 进入下载入口: 选择任意下载地址: 下载版本 踩坑 版本建议下载3.5以下的,较为稳定,如果你下载了最新版的,准备跟着我踩坑 下载后直接解压即可 进入到apache-zookeeper-3.5.6\conf文件夹,找到zoo_sample.cfg,复制一份到当前文件夹,重命名为zoo.cfg 为什么修改呢?在zkEnv.cmd中是默认叫zoo的 至于里面的配置信息,可以根据个人需求修改 附加 zoo.cfg参数说明 tickTime:这个时间是作为 Zookeeper

沃尔玛的产品知识图谱

我的梦境 提交于 2020-08-19 04:21:06
作者|Karthik Deivasigamani 编译|VK 来源|Medium 介绍 电子商务目录是通过从卖家、供应商/品牌获取数据而创建的。合作伙伴(销售商、供应商、品牌)提供的数据往往不完整,有时会遗漏我们客户正在寻找的关键信息。尽管合作伙伴遵循一个规范(一种发送产品数据的约定格式),但在标题、描述和图像中隐藏着大量数据。除了我们的合作伙伴提供的数据外,互联网上还有许多非结构化数据,如产品手册、产品评论、博客、社交媒体网站等。 沃尔玛正致力于构建一个零售图谱(Retail Graph),捕捉有关产品及其相关实体的知识,以帮助我们的客户更好地发现产品。它是一个产品知识图谱,可以在零售环境中回答有关产品和相关知识的问题,可用于语义搜索、推荐系统等。本文进一步阐述了什么是零售图谱、如何构建零售图谱、围绕图模型的技术选择、数据库和一些用例。 沃尔玛的零售图谱是什么 零售图谱捕获了零售世界中存在的产品和实体之间的连接。实体是存在的物体、事物、概念或抽象,例如客厅、野生动物摄影、颜色、农舍风格。我们关注的实体大致有两种:抽象的和具体的。前者帮助我们回答诸如“夏日游泳池派对用品”、“农家客厅家具”、“野生动物摄影镜头”之类的问题,而后者帮助我们回答诸如“蓝色牛仔裤裤子”、“木制餐桌”之类的问题。该图谱还将产品之间的关系捕获到两个类别,替代品和补充品(附件、兼容产品等)。它还试图将抽象概念

Java字节码角度分析构造方法 ——提升硬实力6

て烟熏妆下的殇ゞ 提交于 2020-08-19 03:03:31
在前面的文章中,有详细地介绍java字节码相关的知识,有兴趣的可以提前了解一下。 1. Java字节码的一段旅行经历——提升硬实力1 2. Java字节码角度分析a++ ——提升硬实力2 3. Java字节码角度分析条件判断指令 ——提升硬实力3 4. Java字节码角度分析循环控制 ——提升硬实力4 5. Java字节码角度分析判断结果 ——提升硬实力5 下面我们将以字节码的视角来分析构造方法 CInit // 从字节码角度来分析:构造方法 public class T09_ByteAnalyseCInit { static int i = 10; static { i = 20; } static { i = 30; } } T09_ByteAnalyseCInit 字节码:使用javap -v T09_ByteAnalyseCInit.class,将java程序对应的字节码如下,并做了执行的注释。 编译器会按从上至下的顺序,收集所有static静态代码块和静态成员赋值的代码,合并为一个特殊的方法<cinit>()V: 0: bipush 10 // 将一个byte型常量值推送至栈顶 2: putstatic #2 // Field i:I // 为指定的类的静态域赋值 5: bipush 20 // 将一个byte型常量值推送至栈顶 7: putstatic #2 //

并发和并行的概念

孤街浪徒 提交于 2020-08-19 02:57:16
1.CPU的发展趋势: 核心数目依旧会越来越多,根据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的PC桌面在2018年可能回到24核心。 2.并发和并行的区别: 所有的并发处理都有排队等候,唤醒和执行这三个步骤,所以并发是宏观的观念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,先后进入队列排队等候执行。 并发与并行是两个既相似但是却不相同的概念: 并发性:又称共行性,是指处理多个同时性活动的能力,。 并行:指同时发生两个并发事件,具有并发的含义。并发不一定并行,也可以说并发事件之间不一定要同一时刻发生。 并发的实质是一个物理CPU(也可以是多个物理CPU)在若干个程序之间多路复用,并发性是对有限物理资源强制行使 多用户共享以提高效率。 并行指两个或两个以上事件或活动在同一时刻发生,在多道程序环境下,并行使多个程序同一时刻可在不同CPU上同时执行。 并发是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为CPU要在多个程序之间切换)运行多个程序。 并行是每一个CPU运行一个程序。 并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发是逻辑上的同时发生(simultaneous)

BeetlSQL3.0 难搞

[亡魂溺海] 提交于 2020-08-18 21:24:59
最近想支持一下nosql,难搞,每个nosql server,都很难一天掌握安装和基础用法,所以先决定选用clickhouse ,apache drill (操作文件),Cassandra,这三个下手 hadoop系列也挺好的,但确实没时间搞了,想在9月份之前把beetlsql3搞出来,感觉臣妾做不到哇。 发一个网友修改的springboot-plus项目截图,挺好看,希望他能坚持完善plus项目,希望9月能继续把plus完善一下,比如支持多库。 至于微服务支持,我还是觉得大部分后台管理系统,不需要微服务 来源: oschina 链接: https://my.oschina.net/xiandafu/blog/4298195

Java字节码角度分析方法调用 ——提升硬实力7

落爺英雄遲暮 提交于 2020-08-18 21:08:48
在前面的文章中,有详细地介绍java字节码相关的知识,有兴趣的可以提前了解一下。 1. Java字节码的一段旅行经历——提升硬实力1 2. Java字节码角度分析a++ ——提升硬实力2 3. Java字节码角度分析条件判断指令 ——提升硬实力3 4. Java字节码角度分析循环控制 ——提升硬实力4 5. Java字节码角度分析判断结果 ——提升硬实力5 6. Java字节码角度分析构造方法 ——提升硬实力6 下面我们将以字节码的视角来方法调用,java代码如下: // 从字节码角度来分析:方法调用 public class T11_ByteAnalyseMethod { // 构造方法 public T11_ByteAnalyseMethod() {} // 私有成员方法 test1 private void test1() {} // 私有最终方法 test2 private final void test2() {} // 公开成员方法 test3 public void test3() {} // 公开静态方法 test4 public static void test4() {} public static void main(String[] args) { T11_ByteAnalyseMethod d = new T11_ByteAnalyseMethod();

完整的虚拟机安装步骤

限于喜欢 提交于 2020-08-18 20:41:19
完整的新建虚拟机的步骤 大家好,我是大黄。今天我们来说一说新建虚拟机的步骤以及配置。 什么是虚拟机? 虚拟机(Virtual Machine),在计算机科学中的体系结构裏,是指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。 以上是来自 360百科 对于虚拟机的“正经”解释。通俗的来说,“虚拟机”这玩意儿就是被一个软件构造出来的“虚拟环境”,在这个“环境”里,我们可以像在平常我们使用的计算机(我们把它叫做“物理机”)一样操作,相当于“机中机”,听起来很怪异,但是不妨碍我们使用它。在“虚拟机”中我们可以“为所欲为”(仅限于自己研究学习的时候)而不担心它会损伤我们的宝贝电脑。 新建虚拟机 新建虚拟机之前,你得先安装好: 安装好后我们就可以开始着手新建我们的虚拟机了。 1.点开-》文件-》新建虚拟机。 2.你可以选择“典型安装”或者“自定义安装”,为了体现安装的成就感我们这边就选择“自定义”,就是这么任性!然后就是下一步。 3.选择虚拟机硬件的兼容性,因为我安装的是VMware Station Pro15版本,所以我就选择Workstation 15.x,这边可以默认。然后下一步。 4.新建向导。这边需要一个光盘镜像文件。(镜像文件是安装操作系统必备

Elasticsearch集群角色如何定义?

限于喜欢 提交于 2020-08-18 20:33:39
角色划分 在Elasticsearch中,有很多角色,常用的角色有如下: Master Node :主节点 Master eligible nodes :合格节点 Data Node :数据节点 Coordinating Node :协调节点 Ingest Node :ingest节点 三种角色由elasticsearch.yml配置文件中的node.master、node.data等来控制 Master Node :主节点,该节点不和应用创建连接,每个节点都保存了集群状态,master节点不占用磁盘IO和CPU,内存使用量一般。 Master eligible nodes :合格节点,每个节点部署后不修改配置信息,默认就是一个 eligible 节点,该节点可以参加选主流程,成为Mastere节点。该节点也保存了集群节点的状态。eligible节点比Master节点更节省资源,因为它还未成为 Master 节点,只是有资格成功Master节点。 Data Node :数据节点,该节点和索引应用创建连接、接收索引请求,该节点真正存储数据,ES集群的性能取决于该节点的个数(每个节点最优配置的情况下),data节点会占用大量的CPU、IO和内存。 Coordinating Node :协调节点,该节点和检索应用创建连接、接受检索请求,但其本身不负责存储数据,可当负责均衡节点

Volcano:带你体验容器与批量计算的碰撞的火花

穿精又带淫゛_ 提交于 2020-08-18 16:50:20
摘要: 今年(2020)7月初,Volcano 发布了1.0版本。1.0做为里程碑版本,在Volcano整个规划中起到了承上启下的作用。此次发布的1.0版本支持了GPU共享,作业动态扩缩容,批任务抢占等功能,并主要加强了稳定性;同时,在1.0发布后 Volcano也在线下讨论了分布式调度系统的未来发展的趋势等。 历史 在分析趋势之前,我们先看一下分布式调度系统的历史。早期分布式调度系统以批处理系统为主,例如九几年的LSF/SGE/PBS等,这些批处理系统大规划的使用在HPC领域,而且对作业级的调度进行大量的研究工作;后续由批处理系统延伸出多集群、多组织资源共享的需求,便成了网络计算。 网络计算与云计算最大的不同是:网络计算强调多组织的资源共享,而云计算强调云厂商的集中式支持;这也是云计算成为主流的主要原因:多组织之间共享需要完备的协议和足够的安全支持,而云服务仅需要对用户提供相应服务和安全,并不需要在多个云厂商之间进行共享;随着开源社区的发展,再将应用接口逐步统一,e.g. Kubernetes。Hadoop出现后,不仅推动了分布式调度系统中对数据的处理,同时也推动了开源软件的生态。2012和2014是两个重要的节点,Hadoop将资源管理层与领域框架层分开,随后的领域框架也有机会构建自己的生态,e.g. Spark;同时,将资源管理层与领域框架分开也被广泛认可。