- 博客(45)
- 收藏
- 关注
原创 Spark-SparkSubmit详细过程
1、编写Spark程序2、编写启动脚本使用spark-submit命令提交任务3、调用org.apache.spark.deploy.SparkSubmit中main方法4、判断提交参数中的模式,根据不同的模式设置不同的mainClass如果采用Standalone模式那么主类为:ClientApp5、执行ClientApp中的start方法6、构建RpcEnv环境并设置ClientEndpoint7、构建DriverDescription并向Master发起启动Driver的请求。
2024-08-19 14:50:43
471
原创 Spark-补充知识-Netty
Netty是一个NIO client-server(客户端服务器)框架Netty是“quick and easy(高性能和简单易用)”的,且性能和可维护性都很强整个Netty的API都是异步的,对网络应用来说,IO一般是性 能的瓶颈,使用异步IO可以较大程度上提高程序性能,//使用基于选择器的方法的 Channel 实现的抽象基类。//调用了Channel.read()或ChannelHandlerContext.read()if (!return;//比较下是否是读操作。
2024-08-13 12:50:16
677
原创 计算机基础-IO
我们先看下计算机的组成部分:从图中我们很清楚的看到即为,也就是计算机主机和外部设备进行。这种交换可能是磁盘IO也有可能是网络IO。
2024-07-27 08:13:33
1009
原创 Spark-RDD和共享变量
每个Spark应用程序都由一个组成,该驱动程序运行我们编写的main函数,并在集群上执行各种操作。Spark提供的主要抽象是一个弹性分布式数据集,它是一个跨集群节点分区的元素集合,可以并行操作。RDD是通过从Hadoop文件系统(或任何其他Hadoop支持的文件系统)中的文件或中现有的Scala集合开始并转换它来创建的。用户还可以要求Spark在内存中持久化,允许它在并行操作中有效地重用。最后,RDD会自动从节点故障中恢复。Spark中的第二个抽象是可以在并行操作中使用的。
2024-07-10 12:58:03
1225
原创 初识Spark
Apache的顶级项目,用于大规模数据处理的统一分析引擎。支持语言:Java、Scala、Python和R (源码为Scala)高级工具:1、SparkSQL用于SQL和结构化数据处理2、提供Pandas API 可提供在 Apache Spark 上运行的、与 Pandas 等效的 API,从而填补这Pandas 不会横向扩展到大数据的空白3、MLlib用于机器学习4、GraphX用于图形处理, 和结构化流 用于增量计算和流处理。
2024-07-03 17:44:45
894
原创 Hive-存储-文件格式
数据存储是Hive的基础,选择合适的底层数据存储格式,可以在不改变Hql的前提下得到大的性能提升。类似mysql选择适合场景的存储引擎。Hive支持的存储格式有其中,ORCFile和Apache Parquet,以其高效的数据存储和数据处理性能得以在实际的生产环境中大量运用。创建表时可以使用说明Serializer/Deserializer 序列化和反序列化的类型。
2024-06-27 14:22:30
1265
原创 HiveQL性能调优-概览
1、HiveQL 在执行时会转化为各种计算引擎的能够运行的算子,这里以mr引擎为切入点,要想让HiveQL 的效率更高,就要理解HiveQL 是如何转化为MapReduce任务的2、hive是基于hadoop的,分布式引擎采用mr、spark、tze,调度使用的yarn,分布式存储使用的hdfs,而一般大数据的性能瓶颈往往在带宽消耗和磁盘IO,cpu往往不是瓶颈。因此hive优化的焦点是如何降低作业的IO和带宽消耗。
2024-05-30 10:31:03
874
原创 Hadoop2.7-Hive3.1-Spark3.2-离线环境搭建(已适配)
更不为提到却很重要的一个信息是:当tcp_tw_recycle开启时(tcp_timestamps同时开启,快速回收socket的效果达到),对于位于NAT设备后面的Client来说,是一场灾难——会导到NAT设备后面的Client连接Server不稳定(有的Client能连接server,有的Client不能连接server)。#修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用。
2024-05-11 16:19:05
1043
原创 Hadoop-Hive-Spark-离线环境搭建
更不为提到却很重要的一个信息是:当tcp_tw_recycle开启时(tcp_timestamps同时开启,快速回收socket的效果达到),对于位于NAT设备后面的Client来说,是一场灾难——会导到NAT设备后面的Client连接Server不稳定(有的Client能连接server,有的Client不能连接server)。#修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用。
2024-04-22 15:26:51
819
1
原创 HiveQL-DML总览
Hive在将数据加载到表中时不进行任何转换。加载操作目前是纯拷贝/移动操作,将数据文件移动到与配置单元表相对应的位置。语法:示例:建表制作数据 vi test_user_msg.txtHive3.0之前的加载操作是纯粹的复制/移动操作,将数据文件移动到与配置单元表相对应的位置。可以是以下三种情况(filepath可以指一个文件也可以指一个目录,Hive3.0以后可以包含子目录)1、相对路径,例如temp/test_user_msg.txt2、绝对路径,如/root/temp。
2024-04-19 12:13:58
956
1
原创 Hive-事务
ACID代表数据库事务的四个特征:1、原子性(一个操作要么完全成功,要么失败,它不会留下部分数据)、2、一致性(一旦应用程序执行了一个操作,该操作的结果在随后的每个操作中都是可见的)、3、隔离性(一个用户的不完整操作不会对其他用户造成意外的副作用)4、持久性(一旦操作完成,即使面对机器或系统故障,它也会保留下来)。这些特性长期以来一直被期望作为数据库系统事务功能的一部分。Hive 0.13,在分区级别提供了原子性、一致性和持久性,现在可以在行级别提供完整的ACID语义。
2024-04-03 10:07:31
1063
原创 Hive-HiveServer2
HiveServer2(HS2)是一种使客户端能够针对Hive执行查询的服务。HiveServer2是已弃用的HiveServer1的继任者。HS2支持多客户端并发和身份验证。它旨在为JDBC和ODBC等开放式API客户端提供更好的支持。HS2是作为复合服务运行的单个进程,其中包括基于Thrift的Hive服务(TCP或HTTP)和用于web UI的Jetty web服务器。它使用一个线程池和查询队列来管理同时执行的查询请求,并支持查询优化器,可以对查询执行计划进行优化,提高查询性能。
2024-04-02 08:47:59
1007
原创 Hive-技术补充-ANTLR的真实语法世界
上一篇博客,我们了解了如何使用ANTLR语法来表达词法结构和语法结构,下面我们循循渐进的处理身边用过的一些文件或语言:CSV、JSON、DOT、Cymbol、R 有这样一份csv文件vi data.csv可以看到标题行和内容行并无区别,我们需要写一个单独规则来匹配标题vi CSV.g4为了不混淆,我们引入一个名为hdr的新规则下面我们来测试下antlr4 CSV.g4javac CSV*.javagrun CSV file -tokens data.csvgrun
2024-03-28 14:53:10
1359
原创 Hive-技术补充-ANTLR语法编写
我们学习一门语言,或外语或编程语言,是不是都是要先学语法,想想这些语言有哪些相同点1、中文、英语、日语......是不是都有 主谓宾 的规则2、c、java、python、js......是不是都有 数据类型 、循环 等语法或数据结构虽然人们在过去的几十年里发明了多种编程语言,但基本的语言模式并不多。因为他们在设计时都会情不自禁的与自己脑海中的自然语言关联,并用数学符号表达了出来。因此如果你掌握了一门语言后再去学其他语言就会变的容易。
2024-03-26 08:49:42
1468
原创 Hive-技术补充-ANTLR实现一个小项目
阅读完<>和<>后我们对ANTLR已经有了一个初步认识,下面我们就来做一个简单的小项目来感受下它的整个过程。小项目目标是把上面的代码转换成下面的Unicode字符Unicode是一种用于字符编码的国际标准,它定义了世界上所有字符的唯一编号。字符集中的每一个字符分配一个唯一的数字,Unicode使用4个16进制数字来表示一个16位的字符。
2024-03-20 10:14:04
1196
原创 Hive-技术补充-ANTLR词法语法分析
要清晰的理解一条Hql是如何编译成MapReduce任务的,就必须要学习ANTLR。下面是ANTLR的官方网址,下面让我们一起来跟着官网学习吧。
2024-03-19 09:07:37
1107
原创 Hive-技术补充-初识ANTLR
要清晰的理解一条Hql是如何编译成MapReduce任务的,就必须要学习ANTLR。下面是ANTLR的官方网址,下面让我们一起来跟着官网学习吧,在学习的过程中我参考了《antlr4权威指南》,你也可以读下这本书,一定会对你有所帮助。
2024-03-15 08:50:10
1189
原创 Hive-源码分析一条hql的执行过程
1、用户在hive客户端输入hql2、进行中断操作,终止正在运行的mr作业3、解析用户在hive客户端输入的hql(将hql按照字符一个一个处理,遇到 ";" 就会将前面的处理成一个hql 放入列表中)4、循环执行hql列表中的每一条hql5、从sql语句中剥离注释,并去掉头尾空白符 并按照 '\\s+' 分割成hql数组6、判断hql 是 正常的sql(只分析这个) 还是 source 、quit 、 exit 还是!
2024-03-12 07:32:35
1603
原创 Hive-源码带你看hive命令背后都做了什么
由于篇幅太长担心占用你的时间,先把总结写到前面。1、命令行输入 hive 命令 ,包括以下多种情况:a、hive -e "hql字符串"b、hive -f hql文件c、hive -he、hive --orcfiledump orc文件HDFS路径f、hive --rcfilecat rc文件HDFS路径g、等等2、初始化,包括a、配置相关路径b、hive启动脚本使用的jvm堆大小c、配置Hadoop、Spark、HBase等相关路径和环境变量d、添加distcp。
2024-03-08 10:38:52
1537
原创 初识Hive
考虑到大多数基于查询的API共享类似的执行路径,通过API提交的任何操作都可能具有与通过Hive CLI提交的等效HQL类似的结果。基于操作的API用于构建需要以重复的、声明性的方式进行交互的进程,并提供更大程度的编译时检查。每个表可以有一个或多个分区键,用于确定数据的存储方式,例如,具有日期分区列dt的表T具有存储在HDFS中的<Table location>/dt=<date>目录中的特定日期的数据文件。分区允许系统根据查询谓词修剪要检查的数据,例如,对T中满足谓词T的行感兴趣的查询。
2024-03-05 01:21:58
1335
原创 CDH6.3.1离线安装
CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算,以及基于Web的用户界面和重要的企业功能。是唯一一个提供统一批处理、 交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
2024-02-29 15:20:50
1355
原创 Hadoop-Yarn-NodeManager是如何监控容器的
1、启动容器触发ContainerEventType.CONTAINER_LAUNCHED事件2、ContainerImpl会处理1中事件,启动容器的同时触发容器监控事件ContainersMonitorEventType.START_MONITORING_CONTAINER3、该事件由ContainersMonitorImpl调用onStartMonitoringContainer()处理2中事件。
2024-02-27 00:14:34
1291
原创 Hadoop-Yarn-调度器总结
CapacityScheduler旨在允许共享一个大型集群,同时为每个组织提供容量保证。核心思想是Hadoop集群中的可用资源在多个组织之间共享,这些组织根据其计算需求共同为集群提供资金。还有一个额外的好处,即一个组织可以访问其他组织未使用的任何多余容量。这以成本效益高的方式为各组织提供了弹性。跨组织共享集群需要对多租户提供强有力的支持,因为每个组织都必须有保证的容量和安全保护,以确保共享集群不受单个恶意应用程序或用户或其集合的影响。
2024-02-20 00:05:11
1729
1
原创 Hadoop-Yarn-NodeManager如何计算Linux系统上的资源信息
Hadoop-Yarn-NodeManager都做了什么>中讲节点资源监控服务(NodeResourceMonitorImpl)时只是提了下SysInfoLinux,下面我们展开讲下SysInfoLinux是用于计算Linux系统上的资源信息的插件。
2024-02-18 15:06:51
1419
1
原创 Hadoop-Yarn-NodeManager都做了什么
下面是hadoop官方源码下载地址,我下载的是hadoop-3.2.4,那就一起来看下吧。
2024-02-17 23:49:07
1477
2
原创 Hadoop-Yarn-ResourceManagerHA
在Hadoop2.4之前,ResourceManager是YARN集群中的单点故障ResourceManager HA是通过 Active/Standby 体系结构实现的,在任何时候其中一个RM都是活动的,并且一个或多个RM处于备用模式,等待在活动发生任何事情时接管。1、判断配置文件中是否配置了HA开启2、如果开启了HA,开始配置并设置启动必要参数3、根据配置文件添加选举人4、获取ZooKeeper Curator管理器,创建并启动5、连接到ZooKeeper集合6、获取客户端框架并启动。
2024-02-11 23:59:09
2085
5
原创 Hadoop-Yarn-启动篇
1、用户执行./start-yarn.sh2、start-yarn.sh中依次启动resourceManager、nodemanager、proxyserver3、根据yarn命令和hadoop-functions.sh找到三个角色的启动类,并且在本地或者远程(通过ssh的方式)启动各自的java进程4、resourceManager、nodemanager、proxyserver初始化各自的服务列表。
2024-02-06 00:00:57
2148
1
原创 Hadoop-MapReduce-源码跟读-ReduceTask阶段篇
1、初始化:比如构建作业和尝试任务的上下文、更新任务状态,构建输出提交器等2、Shuffle:根据本地模式和集群模式生成不同的线程(Fetcher)组来收集map端的输出3、Sort:对Shuffle的结果进行排序合并4、SecondarySort:对相同key的value进行二次排序5、构建自定义reducer、RecordWriter、reduce的上下文6、运行用户自定义的Reduce7、无序输出结果,一个reduce输出一份结果。
2024-01-31 18:35:28
1616
2
原创 Hadoop-MapReduce-源码跟读-MapTask阶段篇
1、YarnChild启动,加载Job相关的配置信息,设置Job工作目录等2、YarnChild调起MapTask3、MapTask初始化,比如构建上下文、设置Job输出提交者、设置任务的输出等4、制作自定义Mapper、InputFormat、RecordReader、RecordWriter(这里会初始化一个环形缓冲区并启动一个线程准备排序、合并、溢写)
2024-01-30 18:06:26
1385
1
原创 Hadoop-MapReduce-YarnChild启动篇
1、MRAppMaster启动2、初始化并启动job3、处理各种job状态4、启动Task5、处理各种Task事件6、启动尝试任务7、处理各种尝试任务事件8、在尝试任务的TaskAttemptEventType.TA_SCHEDULE事件处理时申请容器9、调用java命令配置主类YarnChild启动容器运行MapTask或者ReduceTask。
2024-01-29 23:55:29
1403
1
原创 Hadoop-MapReduce-MRAppMaster启动篇
1、构建启动MR AM所需的所有信息(LocalResource、ContainerLaunchContext、启动命令、ApplicationSubmissionContext等)2、构建SubmitApplicationRequest(客户端需要通过SubmitApplicationRequest提供运行ApplicationMaster所需的队列、资源等详细信息,相当于ContainerLaunchContext,用于启动ApplicationMaster等)3、
2024-01-26 23:41:17
2027
1
原创 Hadoop-MapReduce-源码跟读-客户端篇
1、构建Configuration,并加载hadoop默认的配置文件core-default.xml、core-site.xml2、解析命令行参数,配置用户配置的环境变量3、设置Job信息,比如:主类、Mapper类、Reduce类、Combiner类、输出格式、输入输出文件等4、异步提交Job,实时监控作业并打印Job状态5、根据用户身份和权限构建Cluster,并向集群提交Job6、检查Job的输入和输出规格。
2024-01-23 23:42:28
906
3
原创 Hadoop-HDFS写流程(从命令行到完成)
DataStreamer线程从dataQueue中拾取数据包,将其发送到管道中的第一个数据节点,并将其从dataQueue移动到ackQueue。当一个块的所有数据包都被发送出去,并且每个数据包的acks都被接收到时,DataStreamer就会关闭当前块。创建后,该文件可见,可供其他客户端读取。9、界面无报错,通过命令(hadoop fs -du -h /user/hhs/test_dir)查看结果 (如果可能也会报错,DataStreamer会进行维护将原始管道中消除坏的数据节点来设置新的管道)
2024-01-16 01:03:21
1611
1
原创 Hadoop-HDFS读流程(从输入命令到回显)
因此需要知道这个文件对应的了多少块(包括副本)都在什么哪些节点上以及节点的哪些目录中(那就需要请求NameNode),通过机架感知找到离Client节点最近的文件对应的每个块,然后依次发起读请求(请求DataNode),最后合成结果文件即可。FSNamesystem处已经写了块信息列表是按照和客户端的距离排好序的,这里剔除了坏块DataNode信息和需要忽略的DataNode,然后取列表中的最后一个DataNode来做为最终的DataNode,如果找不到就报告块丢失)
2024-01-11 17:30:29
1432
原创 Hadoop-YARN概览
Yet Another Resource Negotiator,另一种资源协调者,简称YARN。基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护进程。其想法是拥有一个全局ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。可以支持单个作业,也可以支持多个作业的DAG。被称为另一种资源协调者,那就证明有一种比YARN更早的资源协调者,它就是JobTracker,JobTracker同时具备资源管理和作业调度功能,是强耦合关系。因此出现了YARN来代替它。
2024-01-09 11:13:08
1184
原创 Hadoop-MapReduce使用说明
MapReduce是一个开源的分布式软件框架,可以让你很容易的编写程序(继承Mapper和Reducer,重写map和reduce方法)去处理大数据。你只需要简单设置下参数提交下,框架会为你的程序安排任务,监视它们并重新执行失败的任务。下面让我们跟着官网来学习下吧。
2024-01-08 23:50:27
1210
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人