用过oracle rac的应该都知道parallel的用途。
并行执行的确可以大的加快任务的执行速率,但不会减少其占用的资源。
在hive中也有并行执行的选项。
set hive.exec.parallel=true; //打开任务并行执行
set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。
对于同一个SQL产生的JOB,如果不存在依赖的情况下,将会并行启动JOB,
比如:
from ( select phone,to_phone, substr(to_phone,-1) as key from youni_contact4_lxw where youni_id='1' and length(to_phone) = 11 and substr(to_phone,1,2) IN ('13','14','15','18') group by phone,to_phone, substr(to_phone,-1) ) t insert overwrite table youni_contact41_lxw partition(pt='0') select phone,to_phone where key='0' insert overwrite table youni_contact41_lxw partition(pt='1') select phone,to_phone where key='1' insert overwrite table youni_contact41_lxw partition(pt='2') select phone,to_phone where key='2' insert overwrite table youni_contact41_lxw partition(pt='3') select phone,to_phone where key='3' insert overwrite table youni_contact41_lxw partition(pt='4') select phone,to_phone where key='4' insert overwrite table youni_contact41_lxw partition(pt='5') select phone,to_phone where key='5' insert overwrite table youni_contact41_lxw partition(pt='6') select phone,to_phone where key='6' insert overwrite table youni_contact41_lxw partition(pt='7') select phone,to_phone where key='7' insert overwrite table youni_contact41_lxw partition(pt='8') select phone,to_phone where key='8' insert overwrite table youni_contact41_lxw partition(pt='9') select phone,to_phone where key='9';
该SQL产生11个job,第一个job为生成临时表的job,后续job都依赖它,这时不会有并行启动,
第一个job完成后,后续的job都会并行启动。
运行时间比较:
不启用并行:35分钟
启用8个并行:10分钟
启用16个并行:6分钟
当然,得是在系统资源比较空闲的时候才有优势,否则,没资源,并行也起不来。
更多大数据Hadoop、Spark、Hive的文章,请关注 我的博客
相关推荐
- 开启`hive.exec.parallel`,允许并行执行Map任务或Reduce任务,加速查询处理。 3. **索引使用**: - 虽然Hive目前的索引支持有限,但在某些场景下依然可以利用索引来优化查询。 #### 五、平台优化 1. **硬件...
- 并行执行的开启与配置; - JVM重用的原理与设置; - Mapper/Reducer数量的合理设定; - 压缩技术与分布式缓存的应用; - 多job间共享中间结果集的技巧; - 执行计划的深入分析; - 几种Join方式(Reduce...
本文将详细探讨Hive性能优化的三个主要方面:针对MapReduce单个步骤的优化、MapReduce全局优化以及针对整个查询(多MapReduce job)的优化。 首先,我们来看Map阶段的优化。Map阶段是MapReduce流程的第一步,它的...
3. **特定聚合操作的性能问题**:例如`COUNT(DISTINCT)`这类操作,在大规模数据集上执行时可能会遇到性能瓶颈。 #### 二、有效优化手段 为了应对上述问题,可以采取以下几种优化策略: 1. **优化模型设计**:合理...
2. Hive的复杂HQL语句会转换成多个MapReduce Job,并行或串行执行,Job数比较多的作业运行效率相对比较低。 3. 聚合操作如sum、count、max、min、UDAF等不会受到数据倾斜的影响,因为MapReduce在Map阶段的预聚合操作...
2. **并行执行**:开启并行执行可以提高查询速度。 3. **小文件问题**:通过合并小文件或调整MapReduce参数来减少Map任务的数量。 4. **压缩**:启用数据压缩可以减少数据传输的时间和存储空间。 5. **索引**:尽管...
通过cron job或者at命令可以设置定时任务,结合Hadoop的hadoop fs命令,可以实现定期从本地或网络资源向HDFS批量上传数据,满足持续的数据摄入需求。 综上所述,这个主题覆盖了大数据处理的全貌,从数据存储的HDFS...
综上所述,"Node.js-Hivemind–使用AWS Lambda functions创建分布式作业Job"这个项目结合了Node.js的高效网络编程能力、AWS Lambda的无服务器计算优势以及分布式作业处理的思想,构建了一个灵活、可扩展的云原生解决...
1. **Hive架构理解**:Hive由元数据存储、驱动器、编译器、执行器等组件构成。元数据存储通常在MySQL或Derby中,记录表结构和分区信息;驱动器解析SQL并生成执行计划;编译器负责将HQL转化为MapReduce任务;执行器则...
#### 五、Job执行模式的优化 Hadoop支持三种作业执行模式:本地模式、伪分布式模式和完全分布式模式。 - **本地模式**:适用于小规模数据处理,可提高处理速度。 - **伪分布式模式**:适用于测试环境或小规模集群...
例如,`o2o_2_hive.job`是一个命令类型的任务,执行`echo "data 2 hive"`。 5. **依赖关系**: Job间的依赖关系通过`dependencies`参数来定义。例如,`o2o_2_hive`依赖于`o2o_clean_data`,而`o2o_clean_data`又...
* 任务执行时间过长:解决办法是检查日志后发现没有执行完就失败,原因出在hadoop的job的timeout过短(相对于集群的能力来说)。 7. Log项目数据量和处理 Log项目的数据量可能达到几十个T,使用Hive可以处理这些...
- **执行Job**:使用`sqoop job --exec <job-name>`执行Job。 - **删除Job**:使用`sqoop job --delete <job-name>`删除Job。 - **Metastore共享**:通过配置文件指定Metastore服务器地址,使得多个客户端可以共享同...
6. **fork节点和join节点**:用于并行执行多个任务,fork后可以有多个action,join节点等待所有fork的任务完成后继续执行。 **Oozie任务定时调度** - 可通过oozie的Cron表达式或者time单位(如days, hours, minutes...
在这个文件中,你可以设置各种参数来调整Spark的行为,例如内存分配、执行器的数量和大小、并行度等。例如,增加`spark.executor.memory`可以增大每个执行器的内存,而`spark.driver.memory`则用于设置驱动程序的...
而ActionNodes则执行具体的任务,比如HDFS操作、MapReduce作业、Pig任务、Hive查询、Sqoop导入导出、Java代码执行、SSH命令执行、发送电子邮件以及嵌套的子工作流等。 特别地,Oozie引入了Coordinator和Bundle的...
Job提交涉及客户端与JobTracker的交互,JobTracker调度TaskTracker执行任务。自定义JavaBean作为MapReduce的数据类型需实现WritableComparable接口,同时可自定义OutputFormat以适应特定的输出需求。MapReduce适用...