• 沒有找到結果。

Yarn常用参数_MapReduce服务 MRS_组件操作指南_使用Yarn_华为云

N/A
N/A
Protected

Academic year: 2022

Share "Yarn常用参数_MapReduce服务 MRS_组件操作指南_使用Yarn_华为云"

Copied!
1297
0
0

加載中.... (立即查看全文)

全文

(1)

组件操作指南

文档版本 01

发布日期 2021-12-28

(2)

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 使用 Alluxio...1

1.1 配置底层存储系统... 1

1.2 通过数据应用访问 Alluxio...2

1.3 Alluxio 常用操作... 6

2 使用 CarbonData(MRS 3.x 之前版本)... 9

2.1 CarbonData 入门... 9

2.2 CarbonData 表简介...11

2.3 创建 CarbonData 表...12

2.4 删除 CarbonData 表...14

3 使用 CarbonData(MRS 3.x 及之后版本)... 15

3.1 概述... 15

3.1.1 CarbonData 简介...15

3.1.2 CarbonData 主要规格... 18

3.2 配置参考... 19

3.3 CarbonData 操作指导... 31

3.3.1 CarbonData 快速入门... 31

3.3.2 管理 CarbonData Table...34

3.3.2.1 CarbonData Table 简介... 34

3.3.2.2 新建 CarbonData Table... 35

3.3.2.3 删除 CarbonData Table... 37

3.3.2.4 修改 CarbonData Table... 38

3.3.3 管理 CarbonData Table 数据... 38

3.3.3.1 加载数据... 38

3.3.3.2 删除 Segments...39

3.3.3.3 合并 Segments...40

3.3.4 迁移 CarbonData 数据... 43

3.3.5 迁移 Spark1.5 的 Carbondata 数据到 Spark2x 的 Carbondata 中... 44

3.4 CarbonData 性能调优... 46

3.4.1 调优指导... 46

3.4.2 创建 CarbonData Table 的建议...48

3.4.3 性能调优的相关配置... 50

3.5 CarbonData 访问控制... 52

(4)

3.6 CarbonData 语法参考... 54

3.6.1 DDL...54

3.6.1.1 CREATE TABLE... 54

3.6.1.2 CREATE TABLE As SELECT... 57

3.6.1.3 DROP TABLE... 58

3.6.1.4 SHOW TABLES...58

3.6.1.5 ALTER TABLE COMPACTION... 59

3.6.1.6 TABLE RENAME...61

3.6.1.7 ADD COLUMNS... 61

3.6.1.8 DROP COLUMNS...62

3.6.1.9 CHANGE DATA TYPE...63

3.6.1.10 REFRESH TABLE... 64

3.6.1.11 REGISTER INDEX TABLE...65

3.6.1.12 REFRESH INDEX... 66

3.6.2 DML... 67

3.6.2.1 LOAD DATA... 67

3.6.2.2 UPDATE CARBON TABLE... 71

3.6.2.3 DELETE RECORDS from CARBON TABLE... 72

3.6.2.4 INSERT INTO CARBON TABLE... 73

3.6.2.5 DELETE SEGMENT by ID... 74

3.6.2.6 DELETE SEGMENT by DATE... 75

3.6.2.7 SHOW SEGMENTS... 76

3.6.2.8 CREATE SECONDARY INDEX... 77

3.6.2.9 SHOW SECONDARY INDEXES...78

3.6.2.10 DROP SECONDARY INDEX... 79

3.6.2.11 CLEAN FILES... 79

3.6.2.12 SET/RESET... 80

3.6.3 操作并发... 83

3.6.4 API...86

3.6.5 空间索引... 88

3.7 CarbonData 故障处理... 100

3.7.1 当在 Filter 中使用 Big Double 类型数值时,过滤结果与 Hive 不一致... 100

3.7.2 查询性能下降...101

3.8 CarbonData FAQ...101

3.8.1 为什么对 decimal 数据类型进行带过滤条件的查询时会出现异常输出?... 102

3.8.2 如何避免对历史数据进行 minor compaction?... 102

3.8.3 如何在 CarbonData 数据加载时修改默认的组名?... 103

3.8.4 为什么 INSERT INTO CARBON TABLE 失败?... 103

3.8.5 为什么含转义字符的输入数据记录到 Bad Records 中的值与原始数据不同?... 104

3.8.6 为什么 Bad Records 导致数据加载性能降低?...104

3.8.7 当初始 Executor 为 0 时,为什么 INSERT INTO/LOAD DATA 任务分配不正确,打开的 task 少于可用的 Executor?... 104

3.8.8 为什么并行度大于待处理的 block 数目时,CarbonData 仍需要额外的 executor?...105

(5)

3.8.9 为什么在 off heap 时数据加载失败?... 105

3.8.10 为什么创建 Hive 表失败?... 106

3.8.11 为什么在 V100R002C50RC1 版本中创建的 CarbonData 表不具有 Hive 特权为非所有者提供的特权? ... 106

3.8.12 如何在不同的 namespaces 上逻辑地分割数据... 107

3.8.13 为什么 drop 数据库抛出 Missing Privileges 异常?... 108

3.8.14 为什么在 Spark Shell 中不能执行更新命令?... 108

3.8.15 如何在 CarbonData 中配置非安全内存?... 109

3.8.16 设置了 HDFS 存储目录的磁盘空间配额,CarbonData 为什么会发生异常?... 109

3.8.17 为什么数据查询/加载失败,且抛出“org.apache.carbondata.core.memory.MemoryException: Not enough memory”异常?... 110

4 使用 ClickHouse...111

4.1 从零开始使用 ClickHouse... 111

4.2 ClickHouse 表引擎介绍...114

4.3 ClickHouse 表创建... 120

4.4 ClickHouse 常用 SQL 语法... 125

4.4.1 CREATE DATABASE 创建数据库... 125

4.4.2 CREATE TABLE 创建表...125

4.4.3 INSERT INTO 插入表数据... 126

4.4.4 SELECT 查询表数据...127

4.4.5 ALTER TABLE 修改表结构... 128

4.4.6 DESC 查询表结构... 129

4.4.7 DROP 删除表... 129

4.4.8 SHOW 显示数据库和表信息... 129

4.5 ClickHouse 数据迁移... 130

4.5.1 ClickHouse 访问 RDS MySql 服务...130

4.5.2 ClickHouse 导入 DWS 服务数据... 132

4.5.3 将 Kafka 数据同步至 ClickHouse... 135

4.5.4 使用 ClickHouse 数据迁移工具... 138

4.6 用户管理及认证... 141

4.6.1 ClickHouse 用户及权限管理...141

4.6.2 ClickHouse 使用 OpenLDAP 认证... 146

4.7 ClickHouse 集群管理... 149

4.7.1 ClickHouse 集群配置说明... 149

4.7.2 ClickHouse 增加磁盘容量... 152

4.7.3 ClickHouse 新增磁盘...155

4.8 通过数据文件备份恢复 ClickHouse 数据... 160

4.9 ClickHouse 日志介绍... 161

5 使用 DBService...165

5.1 DBService 日志介绍... 165

6 使用 Flink... 168

6.1 从零开始使用 Flink...168

(6)

6.2 查看 Flink 作业信息... 175

6.3 配置管理 Flink... 177

6.3.1 配置参数路径...177

6.3.2 JobManager & TaskManager... 177

6.3.3 Blob... 185

6.3.4 Distributed Coordination (via Akka)... 186

6.3.5 SSL... 191

6.3.6 Network communication (via Netty)...193

6.3.7 JobManager Web Frontend... 194

6.3.8 File Systems...198

6.3.9 State Backend...199

6.3.10 Kerberos-based Security... 201

6.3.11 HA... 202

6.3.12 Environment... 204

6.3.13 Yarn... 205

6.3.14 Pipeline... 206

6.4 安全配置... 207

6.4.1 安全特性描述...207

6.4.2 配置对接 Kafka... 208

6.4.3 配置 Pipeline... 209

6.5 安全加固... 210

6.5.1 认证和加密... 210

6.5.2 ACL 控制... 218

6.5.3 web 安全... 218

6.6 安全声明... 221

6.7 使用 Flink WebUI... 221

6.7.1 概述... 221

6.7.1.1 Flink WebUI 应用简介...221

6.7.1.2 Flink WebUI 应用流程...224

6.7.2 FlinkServer 权限管理...226

6.7.2.1 概述...226

6.7.2.2 基于用户和角色的鉴权... 226

6.7.3 访问 Flink WebUI... 227

6.7.4 在 Flink WebUI 创建应用...228

6.7.5 在 Flink WebUI 创建集群连接... 229

6.7.6 在 Flink WebUI 创建数据连接... 232

6.7.7 使用 Flink WebUI 的流表管理... 236

6.7.8 使用 Flink WebUI 的作业管理... 239

6.8 Flink 日志介绍... 245

6.9 Flink 性能调优... 247

6.9.1 DataStream 调优... 247

6.9.1.1 配置内存... 247

(7)

6.9.1.2 设置并行度...248

6.9.1.3 配置进程参数... 249

6.9.1.4 设计分区方法... 249

6.9.1.5 配置 netty 网络通信... 250

6.9.1.6 经验总结... 251

6.10 Flink 常见 Shell 命令... 251

6.11 参考... 256

6.11.1 签发证书样例... 256

7 使用 Flume...261

7.1 从零开始使用 Flume... 261

7.2 使用简介... 267

7.3 安装 Flume 客户端... 269

7.3.1 安装 MRS 3.x 之前版本 Flume 客户端... 269

7.3.2 安装 MRS 3.x 及之后版本 Flume 客户端... 272

7.4 查看 Flume 客户端日志... 274

7.5 停止或卸载 Flume 客户端... 275

7.6 使用 Flume 客户端加密工具...276

7.7 Flume 业务配置指南... 276

7.8 Flume 配置参数说明... 299

7.9 在配置文件 properties.properties 中使用环境变量... 324

7.10 非加密传输... 325

7.10.1 配置非加密传输... 325

7.10.2 典型场景:从本地采集静态日志保存到 Kafka... 329

7.10.3 典型场景:从本地采集静态日志保存到 HDFS... 335

7.10.4 典型场景:从本地采集动态日志保存到 HDFS... 343

7.10.5 典型场景:从 Kafka 采集日志保存到 HDFS... 350

7.10.6 典型场景:从 Kafka 客户端采集日志经 Flume 客户端保存到 HDFS...357

7.10.7 典型场景:从本地采集静态日志保存到 HBase... 362

7.11 加密传输... 368

7.11.1 配置加密传输... 369

7.11.2 典型场景:从本地采集静态日志保存到 HDFS... 378

7.12 查看 Flume 客户端监控信息... 390

7.13 Flume 对接安全 Kafka 指导... 391

7.14 Flume 对接安全 Hive 指导... 391

7.15 Flume 业务模型配置指导...394

7.15.1 概述...394

7.15.2 业务模型配置指导...395

7.16 Flume 日志介绍... 400

7.17 Flume 客户端 Cgroup 使用指导...402

7.18 Flume 第三方插件二次开发指导...403

7.19 配置 Flume 定制脚本... 404

7.20 Flume 常见问题... 406

(8)

8 使用 HBase...408

8.1 从零开始使用 HBase...408

8.2 使用 HBase 客户端... 413

8.3 创建 HBase 角色... 415

8.4 配置 HBase 备份... 418

8.5 配置 HBase 参数... 427

8.6 启用集群间拷贝功能... 428

8.7 使用 ReplicationSyncUp 工具... 430

8.8 GeoMesa 命令行简介... 431

8.9 使用 HIndex... 433

8.9.1 HIndex 介绍... 433

8.9.2 批量加载索引数据... 442

8.9.3 使用索引生成工具... 445

8.9.4 索引数据迁移...447

8.10 配置 HBase 容灾...449

8.11 配置 HBase 数据压缩和编码... 456

8.12 HBase 容灾业务切换... 458

8.13 HBase 容灾主备集群倒换... 460

8.14 社区 BulkLoad Tool... 461

8.15 自研增强 BulkLoad Tool... 461

8.15.1 按自定义方式导入数据... 461

8.15.1.1 批量导入数据... 461

8.15.1.2 组合 rowkey... 464

8.15.1.3 自定义 rowkey 实现... 465

8.15.1.4 组合字段... 466

8.15.1.5 指定字段数据类型... 466

8.15.1.6 定义不适用的数据行... 467

8.15.2 按自定义方式导入带有索引的数据... 468

8.15.2.1 批量导入数据时创建二级索引... 468

8.15.2.2 组合 rowkey... 471

8.15.2.3 自定义 rowkey 实现... 472

8.15.2.4 组合字段... 472

8.15.2.5 指定字段数据类型... 473

8.15.2.6 定义不适用的数据行... 473

8.15.3 批量更新... 475

8.15.4 批量删除... 475

8.15.5 获取行统计数... 476

8.16 配置 MOB... 477

8.17 配置安全的 HBase Replication... 478

8.18 配置 Region Transition 恢复线程... 479

8.19 使用二级索引...480

8.20 HBase 日志介绍... 481

(9)

8.21 HBase 性能调优... 485

8.21.1 提升 BulkLoad 效率... 485

8.21.2 提升连续 put 场景性能...486

8.21.3 Put 和 Scan 性能综合调优... 486

8.21.4 提升实时写数据效率... 489

8.21.5 提升实时读数据效率... 497

8.21.6 JVM 参数优化...504

8.22 HBase 常见问题... 504

8.22.1 客户端连接服务端时,长时间无法连接成功...504

8.22.2 结束 BulkLoad 客户端程序,导致作业执行失败... 506

8.22.3 在 HBase 连续对同一个表名做删除创建操作时,可能出现创建表异常...506

8.22.4 HBase 占用网络端口,连接数过大会导致其他服务不稳定... 507

8.22.5 HBase bulkload 任务(单个表有 26T 数据)有 210000 个 map 和 10000 个 reduce,任务失败... 507

8.22.6 如何修复长时间处于 RIT 状态的 Region... 508

8.22.7 HMaster 等待 namespace 表上线时超时退出... 508

8.22.8 客户端查询 HBase 出现 SocketTimeoutException 异常... 509

8.22.9 使用 scan 命令仍然可以查询到已修改和已删除的数据... 510

8.22.10 在启动 HBase shell 时,为什么会抛出“java.lang.UnsatisfiedLinkError: Permission denied”异常 ... 511

8.22.11 在 HMaster Web UI 中显示处于“Dead Region Servers”状态的 RegionServer 什么时候会被清除掉 ... 511

8.22.12 使用 HBase bulkload 导入数据成功,执行相同的查询时却可能返回不同的结果...512

8.22.13 如何处理由于 Region 处于 FAILED_OPEN 状态而造成的建表失败异常...512

8.22.14 如何清理由于建表失败残留在 ZooKeeper 中/hbase/table-lock 目录下的表名... 513

8.22.15 为什么给 HDFS 上的 HBase 使用的目录设置 quota 会造成 HBase 故障...513

8.22.16 为什么在使用 OfflineMetaRepair 工具重新构建元数据后,HMaster 启动的时候会等待 namespace 表分配超时,最后启动失败... 514

8.22.17 为什么 splitWAL 期间 HMaster 日志中频繁打印出 FileNotFoundException 及 no lease 信息... 515

8.22.18 当使用与 Region Server 相同的 Linux 用户但不同的 kerberos 用户时,为什么 ImportTsv 工具执行失 败报“Permission denied”的异常... 516

8.22.19 租户访问 Phoenix 提示权限不足...517

8.22.20 租户使用 HBase bulkload 功能提示权限不足...517

8.22.21 如何解决 HBase 恢复数据任务失败后错误详情中提示:Rollback recovery failed 的回滚失败问题..518

8.22.22 如何修复 Region Overlap... 519

8.22.23 HBase RegionServer GC 参数 Xms,Xmx 配置 31G,导致 RegionServer 启动失败...519

8.22.24 使用集群内节点执行批量导入,为什么 LoadIncrementalHFiles 工具执行失败报“Permission denied”的异常... 520

8.22.25 Phoenix sqlline 脚本使用,报 import argparse 错误...521

8.22.26 Phoenix BulkLoad Tool 限制... 521

8.22.27 CTBase 对接 Ranger 权限插件,提示权限不足... 522

9 使用 HDFS... 524

9.1 从零开始使用 Hadoop... 524

9.2 配置内存管理... 527

(10)

9.3 创建 HDFS 角色...528

9.4 使用 HDFS 客户端... 531

9.5 使用 distcp 命令... 532

9.6 HDFS 文件系统目录简介... 536

9.7 更改 DataNode 的存储目录... 543

9.8 配置 HDFS 目录权限... 546

9.9 配置 NFS... 547

9.10 规划 HDFS 容量... 548

9.11 设置 HBase 和 HDFS 的 ulimit... 551

9.12 配置 DataNode 容量均衡... 552

9.13 配置 DataNode 节点间容量异构时的副本放置策略...557

9.14 配置 HDFS 单目录文件数量... 558

9.15 配置回收站机制... 558

9.16 配置文件和目录的权限... 559

9.17 配置 token 的最大存活时间和时间间隔...560

9.18 配置磁盘坏卷...560

9.19 使用安全加密通道... 561

9.20 在网络不稳定的情况下,降低客户端运行异常概率... 562

9.21 配置 NameNode blacklist... 563

9.22 优化 HDFS NameNode RPC 的服务质量... 565

9.23 优化 HDFS DataNode RPC 的服务质量...567

9.24 配置 LZC 压缩... 568

9.25 配置 DataNode 预留磁盘百分比... 569

9.26 配置 HDFS NodeLabel... 570

9.27 配置 HDFS Mover... 575

9.28 使用 HDFS AZ Mover... 576

9.29 配置 HDFS DiskBalancer... 577

9.30 配置 HDFS EC 存储... 580

9.31 配置从 NameNode 支持读... 587

9.32 使用 HDFS 文件并发操作命令... 588

9.33 HDFS 日志介绍... 590

9.34 HDFS 性能调优... 594

9.34.1 提升写性能...594

9.34.2 使用客户端元数据缓存提高读取性能... 595

9.34.3 使用当前活动缓存提升客户端与 NameNode 的连接性能... 596

9.35 HDFS 常见问题... 597

9.35.1 NameNode 启动慢...598

9.35.2 DataNode 状态正常,但无法正常上报数据块... 598

9.35.3 HDFS Web UI 无法正常刷新损坏数据的信息...599

9.35.4 distcp 命令在安全集群上失败并抛出异常...600

9.35.5 当 dfs.datanode.data.dir 中定义的磁盘数量等于 dfs.datanode.failed.volumes.tolerated 的值时, DataNode 启动失败... 600

9.35.6 当多个 data.dir 被配置在一个磁盘分区内,DataNode 的容量计算将会出错...600

(11)

9.35.7 当 Standby NameNode 存储元数据(命名空间)时,出现断电的情况,Standby NameNode 启动失败

... 601

9.35.8 在存储小文件过程中,系统断电,缓存中的数据丢失... 602

9.35.9 FileInputFormat split 的时候出现数组越界... 603

9.35.10 当分级存储策略为 LAZY_PERSIST 时,为什么文件的副本的存储类型都是 DISK...603

9.35.11 NameNode 节点长时间满负载,HDFS 客户端无响应... 604

9.35.12 DataNode 禁止手动删除或修改数据存储目录...605

9.35.13 成功回滚后,为什么 NameNode UI 上显示有一些块缺失... 605

9.35.14 为什么在往 HDFS 写数据时报"java.net.SocketException: No buffer space available"异常...606

9.35.15 为什么主 NameNode 重启后系统出现双备现象... 607

9.35.16 HDFS 执行 Balance 时被异常停止,再次执行 Balance 会失败... 609

9.35.17 IE 浏览器访问 HDFS 原生 UI 界面失败,显示无法显示此页...609

9.35.18 EditLog 不连续导致 NameNode 启动失败... 610

10 使用 Hive...612

10.1 从零开始使用 Hive... 612

10.2 配置 Hive 常用参数...617

10.3 Hive SQL...618

10.4 权限管理... 620

10.4.1 Hive 权限介绍... 620

10.4.2 创建 Hive 角色... 623

10.4.3 配置 Hive 表、列或数据库的权限... 628

10.4.4 配置 Hive 业务使用其他组件的权限... 632

10.5 使用 Hive 客户端... 635

10.6 使用 HDFS Colocation 存储 Hive 表...638

10.7 使用 Hive 列加密功能... 640

10.8 自定义行分隔符... 641

10.9 配置跨集群互信下 Hive on HBase... 641

10.10 删除 Hive on HBase 表中的单行记录... 643

10.11 配置基于 HTTPS/HTTP 协议的 REST 接口...643

10.12 配置是否禁用 Transform 功能...646

10.13 Hive 支持创建单表动态视图授权访问控制... 647

10.14 配置创建临时函数是否需要 ADMIN 权限...647

10.15 使用 Hive 读取关系型数据库数据... 648

10.16 Hive 支持的传统关系型数据库语法... 649

10.17 创建 Hive 用户自定义函数... 651

10.18 beeline 可靠性增强特性介绍... 653

10.19 具备表 select 权限可用 show create table 查看表结构...654

10.20 Hive 写目录旧数据进回收站... 655

10.21 Hive 能给一个不存在的目录插入数据...655

10.22 限定仅 admin 用户能创建库和在 default 库建表...656

10.23 限定创建 Hive 内部表不能指定 location...657

10.24 允许在只读权限的目录建外表... 658

(12)

10.25 Hive 支持授权超过 32 个角色... 659

10.26 Hive 任务支持限定最大 map 数... 660

10.27 HiveServer 租约隔离使用... 661

10.28 Hive 支持事务... 663

10.29 切换 Hive 执行引擎为 Tez... 667

10.30 Hive 对接外置自建关系型数据库... 670

10.31 Hive 物化视图... 672

10.32 Hive 对接外部 LDAP... 675

10.33 Hive 日志介绍... 678

10.34 Hive 性能调优... 681

10.34.1 建立表分区... 681

10.34.2 Join 优化... 682

10.34.3 Group By 优化... 684

10.34.4 数据存储优化... 684

10.34.5 SQL 优化... 685

10.34.6 使用 Hive CBO 优化查询... 686

10.35 Hive 常见问题... 688

10.35.1 如何在多个 HiveServer 之间同步删除 UDF... 688

10.35.2 已备份的 Hive 表无法执行 drop 操作... 689

10.35.3 如何在 Hive 自定义函数中操作本地文件...689

10.35.4 如何强制停止 Hive 执行的 MapReduce 任务...690

10.35.5 Hive 复杂类型字段名称中包含特殊字符导致建表失败...690

10.35.6 如何对 Hive 表大小数据进行监控...690

10.35.7 如何对重点目录进行保护,防止“insert overwrite”语句误操作导致数据丢失...691

10.35.8 未安装 HBase 时 Hive on Spark 任务卡顿处理... 692

10.35.9 FusionInsight Hive 使用 WHERE 条件查询超过 3.2 万分区的表报错... 692

10.35.10 使用 IBM 的 jdk 访问 Beeline 客户端出现连接 hiveserver 失败... 693

10.35.11 关于 Hive 表的 location 支持跨 OBS 和 HDFS 路径的说明... 693

10.35.12 通过 Tez 引擎执行 union 相关语句写入的数据,切换 MR 引擎后查询不出来。... 693

10.35.13 Hive 不支持对同一张表或分区进行并发写数据... 694

10.35.14 Hive 不支持向量化查询... 694

10.35.15 Hive 表 HDFS 数据目录被误删,但是元数据仍然存在,导致执行任务报错处理...694

10.35.16 Hive 配置类问题... 694

11 使用 Hudi... 696

11.1 快速入门... 696

11.2 基本操作... 699

11.2.1 Hudi 表结构... 699

11.2.2 写操作指导...700

11.2.2.1 批量写入... 700

11.2.2.2 流式写入... 703

11.2.2.3 将 Hudi 表数据同步到 Hive... 704

11.2.3 读操作指导...706

(13)

11.2.3.1 cow 表视图读取... 707

11.2.3.2 mor 表视图读取... 707

11.2.4 数据管理维护... 708

11.2.4.1 Metadata Table... 708

11.2.4.2 Clustering... 709

11.2.4.3 Cleaning...711

11.2.4.4 Compaction... 711

11.2.4.5 Savepoint...713

11.2.4.6 单表并发写... 713

11.2.5 Hudi 客户端使用... 714

11.2.5.1 使用 Hudi-Cli.sh 操作 Hudi 表... 714

11.2.6 配置参考... 716

11.2.6.1 写入操作配置... 717

11.2.6.2 同步 hive 表配置... 718

11.2.6.3 index 相关配置... 719

11.2.6.4 存储配置... 721

11.2.6.5 compaction&cleaning 配置... 722

11.2.6.6 MetaData Table 配置... 724

11.2.6.7 单表并发写配置... 725

11.3 Hudi 性能调优... 726

11.3.1 性能调优方式... 726

11.3.2 推荐资源配置... 726

11.4 Hudi 常见问题... 726

11.4.1 数据写入... 726

11.4.1.1 写入更新数据时报错 Parquet/Avro schema... 726

11.4.1.2 写入更新数据时报错 UnsupportedOperationException... 727

11.4.1.3 写入更新数据时报错 SchemaCompatabilityException...727

11.4.1.4 Hudi 在 upsert 时占用了临时文件夹中大量空间...727

11.4.2 数据采集... 727

11.4.2.1 使用 kafka 采集数据时报错 IllegalArgumentException... 728

11.4.2.2 采集数据时报错 HoodieException... 728

11.4.2.3 采集数据时报错 HoodieKeyException... 728

11.4.3 Hive 同步...728

11.4.3.1 Hive 同步数据报错 SQLException... 729

11.4.3.2 Hive 同步数据报错 HoodieHiveSyncException... 729

11.4.3.3 Hive 同步数据报错 SemanticException...729

12 使用 Hue(MRS 3.x 之前版本)... 730

12.1 从零开始使用 Hue... 730

12.2 访问 Hue 的 WebUI... 731

12.3 Hue 常用参数... 732

12.4 在 Hue WebUI 使用 HiveQL 编辑器... 733

12.5 在 Hue WebUI 使用元数据浏览器...735

(14)

12.6 在 Hue WebUI 使用文件浏览器... 738

12.7 在 Hue WebUI 使用作业浏览器... 741

13 使用 Hue(MRS 3.x 及之后版本)... 743

13.1 从零开始使用 Hue... 743

13.2 访问 Hue 的 WebUI... 744

13.3 Hue 常用参数... 745

13.4 在 Hue WebUI 使用 HiveQL 编辑器... 746

13.5 在 Hue WebUI 使用 SparkSql 编辑器... 748

13.6 在 Hue WebUI 使用元数据浏览器...750

13.7 在 Hue WebUI 使用文件浏览器... 751

13.8 在 Hue WebUI 使用作业浏览器... 754

13.9 在 Hue WebUI 使用 HBase... 755

13.10 典型场景... 756

13.10.1 HDFS on Hue... 756

13.10.2 配置 HDFS 冷热数据迁移... 760

13.10.3 Hive on Hue... 767

13.10.4 Oozie on Hue...769

13.11 Hue 日志介绍...770

13.12 Hue 常见问题...772

13.12.1 如何解决使用 IE 浏览器在 Hue 中执行 HQL 失败的问题...773

13.12.2 在使用 Hive 时,输入 use database 语句失效了...773

13.12.3 如何处理使用 Hue WebUI 访问 HDFS 文件失败的问题...773

13.12.4 Hue 页面上传大文件失败如何处理... 773

13.12.5 集群未安装 Hive 服务时 Hue 原生页面无法正常显示... 774

13.12.6 Hue WebUI 中 Oozie 编辑器的时区设置问题...775

14 使用 Impala... 777

14.1 从零开始使用 Impala... 777

14.2 访问 Impala 的 WebUI... 779

14.3 使用 Impala 操作 Kudu... 782

14.4 Impala 对接外部 LDAP... 783

15 使用 Kafka... 785

15.1 从零开始使用 Kafka... 785

15.2 管理 Kafka 主题... 787

15.3 查看 Kafka 主题... 790

15.4 管理 Kafka 用户权限... 791

15.5 管理 Kafka 主题中的消息...794

15.6 基于 binlog 的 MySQL 数据同步到 MRS 集群中... 795

15.7 创建 Kafka 角色... 800

15.8 Kafka 常用参数... 801

15.9 Kafka 安全使用说明... 804

15.10 Kafka 业务规格说明... 807

(15)

15.11 使用 Kafka 客户端... 808

15.12 配置 Kafka 高可用和高可靠参数... 809

15.13 更改 Broker 的存储目录... 812

15.14 查看 Consumer Group 消费情况...813

15.15 Kafka 均衡工具使用说明... 815

15.16 Kafka 扩容节点后数据均衡... 817

15.17 Kafka Token 认证机制工具使用说明...820

15.18 Kafka 日志介绍...821

15.19 性能调优... 823

15.19.1 Kafka 性能调优... 823

15.20 Kafka 常见问题...824

15.20.1 如何解决 Kafka topic 无法删除的问题...824

15.21 Kafka 特性说明... 825

16 使用 KafkaManager... 828

16.1 KafkaManager 介绍... 828

16.2 访问 KafkaManager 的 WebUI... 828

16.3 管理 Kafka 集群... 829

16.4 Kafka 集群监控管理... 832

17 使用 Kudu... 840

17.1 从零开始使用 Kudu... 840

17.2 访问 Kudu 的 WebUI... 841

18 使用 Loader... 844

18.1 从零开始使用 Loader... 844

18.2 Loader 使用简介...845

18.3 Loader 连接配置说明... 846

18.4 管理 Loader 连接(MRS 3.x 之前版本)...848

18.5 Loader 作业源连接配置说明... 850

18.6 Loader 作业目的连接配置说明...852

18.7 管理 Loader 作业...855

18.8 准备 MySQL 数据库连接的驱动... 858

18.9 Loader 日志介绍...859

18.10 样例:通过 Loader 将数据从 OBS 导入 HDFS... 862

18.11 Loader 常见问题... 863

18.11.1 IE 10&IE 11 浏览器无法保存数据... 863

18.11.2 将 Oracle 数据库中的数据导入 HDFS 时各连接器的区别...864

19 使用 Mapreduce... 866

19.1 配置日志归档和清理机制... 866

19.2 降低客户端应用的失败率... 868

19.3 将 MR 任务从 Windows 上提交到 Linux 上运行... 868

19.4 配置使用分布式缓存...869

19.5 配置 MapReduce shuffle address...871

(16)

19.6 配置集群管理员列表...872

19.7 MapReduce 日志介绍... 872

19.8 MapReduce 性能调优... 875

19.8.1 多 CPU 内核下的调优配置...875

19.8.2 确定 Job 基线... 878

19.8.3 Shuffle 调优...880

19.8.4 大任务的 AM 调优... 883

19.8.5 推测执行... 883

19.8.6 通过“Slow Start”调优... 884

19.8.7 MR job commit 阶段优化... 884

19.9 MapReduce 常见问题... 885

19.9.1 ResourceManager 进行主备切换后,任务中断后运行时间过长... 885

19.9.2 MapReduce 任务长时间无进展... 885

19.9.3 运行任务时,客户端不可用... 886

19.9.4 在缓存中找不到 HDFS_DELEGATION_TOKEN... 886

19.9.5 如何在提交 MapReduce 任务时设置任务优先级...887

19.9.6 MapReduce 任务运行失败,ApplicationMaster 出现物理内存溢出异常... 887

19.9.7 MapReduce JobHistoryServer 服务地址变更后,为什么运行完的 MapReduce 作业信息无法通过 ResourceManager Web UI 页面的 Tracking URL 打开... 888

19.9.8 多个 NameService 环境下,运行 MapReduce 任务失败... 889

19.9.9 基于分区的任务黑名单... 889

20 使用 Oozie... 891

20.1 从零开始使用 Oozie... 891

20.2 使用 Oozie 客户端... 892

20.3 使用 Oozie 客户端提交作业... 894

20.3.1 提交 Hive 任务... 894

20.3.2 提交 Spark2x 任务... 896

20.3.3 提交 Loader 任务... 897

20.3.4 提交 DistCp 任务... 899

20.3.5 提交其它任务... 901

20.4 使用 Hue 提交 Oozie 作业... 904

20.4.1 创建工作流...904

20.4.2 提交 Workflow 工作流作业... 905

20.4.2.1 提交 Hive2 作业... 905

20.4.2.2 提交 Spark2x 作业...907

20.4.2.3 提交 Java 作业... 908

20.4.2.4 提交 Loader 作业... 908

20.4.2.5 提交 Mapreduce 作业... 909

20.4.2.6 提交 Sub workflow 作业... 910

20.4.2.7 提交 Shell 作业... 911

20.4.2.8 提交 HDFS 作业... 912

20.4.2.9 提交 Streaming 作业... 912

(17)

20.4.2.10 提交 Distcp 作业...913

20.4.2.11 互信操作示例... 914

20.4.2.12 提交 SSH 作业... 915

20.4.2.13 提交 Hive 脚本... 916

20.4.3 提交 Coordinator 定时调度作业... 917

20.4.4 提交 Bundle 批处理作业... 918

20.4.5 作业结果查询... 919

20.5 Oozie 日志介绍... 919

20.6 Oozie 常见问题... 921

20.6.1 Oozie 定时任务没有准时运行... 921

20.6.2 HDFS 上更新了 oozie 的 share lib 目录但没有生效...922

21 使用 OpenTSDB... 923

21.1 使用 MRS 客户端操作 OpenTSDB 指标数据... 923

21.2 使用 curl 命令操作 OpenTSDB... 925

22 使用 Presto... 927

22.1 访问 Presto 的 WebUI... 927

22.2 使用客户端执行查询语句... 929

22.3 在 DLF 中使用 Presto 转储... 931

22.4 配置 Presto 组件权限... 932

23 使用 Ranger(MRS 1.9.2)...934

23.1 创建 Ranger 集群... 934

23.2 访问 Ranger WebUI 及同步 Unix 用户到 Ranger WebUI... 935

23.3 在 Ranger 中配置 Hive 的访问权限...937

23.4 在 Ranger 中配置 HBase 的访问权限... 942

24 使用 Ranger(MRS 3.x)... 947

24.1 登录 Ranger 管理界面... 947

24.2 启用 Ranger 鉴权... 949

24.3 配置组件权限策略... 949

24.4 查看 Ranger 审计信息... 951

24.5 配置 Ranger 安全区... 952

24.6 普通集群修改 Ranger 数据源为 Ldap... 955

24.7 查看 Ranger 权限信息... 956

24.8 添加 HDFS 的 Ranger 访问权限策略... 958

24.9 添加 HBase 的 Ranger 访问权限策略... 961

24.10 添加 Hive 的 Ranger 访问权限策略... 965

24.11 添加 Yarn 的 Ranger 访问权限策略... 974

24.12 添加 Spark2x 的 Ranger 访问权限策略... 976

24.13 添加 Kafka 的 Ranger 访问权限策略...983

24.14 添加 Storm 的 Ranger 访问权限策略... 991

24.15 Ranger 日志介绍... 994

24.16 Ranger 常见问题... 996

(18)

24.16.1 安装集群过程中,Ranger 启动失败...996

24.16.2 如何判断某个服务是否使用了 Ranger 鉴权...996

24.16.3 新创建用户修改完密码后无法登录 Ranger...997

24.16.4 Ranger 界面添加或者修改 HBase 策略时,无法使用通配符搜索已存在的 HBase 表...997

25 使用 Spark... 999

25.1 使用前须知... 999

25.2 从零开始使用 Spark... 999

25.3 从零开始使用 Spark SQL...1003

25.4 使用 Spark 客户端... 1005

25.5 访问 Spark Web UI 界面...1006

25.6 Spark 对接 OpenTSDB... 1009

25.6.1 创建表关联 OpenTSDB... 1009

25.6.2 插入数据至 OpenTSDB 表... 1010

25.6.3 查询 OpenTSDB 表... 1010

25.6.4 默认配置修改... 1011

26 使用 Spark2x...1012

26.1 使用前须知...1012

26.2 基本操作... 1012

26.2.1 快速入门... 1012

26.2.2 快速配置参数... 1015

26.2.3 常用参数... 1022

26.2.4 SparkOnHBase 概述及基本应用... 1039

26.2.5 SparkOnHBasev2 概述及基本应用... 1041

26.2.6 SparkSQL 权限管理(安全模式)... 1043

26.2.6.1 SparkSQL 权限介绍... 1043

26.2.6.2 创建 SparkSQL 角色... 1047

26.2.6.3 配置表、列和数据库的权限... 1050

26.2.6.4 配置 SparkSQL 业务使用其他组件的权限...1052

26.2.6.5 客户端和服务端配置... 1054

26.2.7 场景化参数... 1056

26.2.7.1 配置多主实例模式...1056

26.2.7.2 配置多租户模式... 1056

26.2.7.3 配置多主实例与多租户模式切换...1058

26.2.7.4 配置事件队列的大小... 1059

26.2.7.5 配置 executor 堆外内存大小...1060

26.2.7.6 增强有限内存下的稳定性...1060

26.2.7.7 配置 WebUI 上查看聚合后的 container 日志... 1062

26.2.7.8 配置 YARN-Client 和 YARN-Cluster 不同模式下的环境变量...1063

26.2.7.9 配置 SparkSQL 的分块个数...1064

26.2.7.10 配置 parquet 表的压缩格式...1065

26.2.7.11 配置 WebUI 上显示的 Lost Executor 信息的个数... 1066

26.2.7.12 动态设置日志级别... 1066

(19)

26.2.7.13 配置 Spark 是否获取 HBase Token... 1068

26.2.7.14 配置 Kafka 后进先出...1068

26.2.7.15 配置对接 Kafka 可靠性... 1070

26.2.7.16 配置流式读取 driver 执行结果... 1071

26.2.7.17 配置过滤掉分区表中路径不存在的分区... 1072

26.2.7.18 配置 Spark2x Web UI ACL... 1073

26.2.7.19 配置矢量化读取 ORC 数据... 1074

26.2.7.20 Hive 分区修剪的谓词下推增强... 1075

26.2.7.21 支持 Hive 动态分区覆盖语义...1076

26.2.7.22 配置列统计值直方图 Histogram 用以增强 CBO 准确度... 1076

26.2.7.23 配置 JobHistory 本地磁盘缓存...1078

26.2.7.24 配置 Spark SQL 开启 Adaptive Execution 特性...1079

26.2.7.25 配置 eventlog 日志回滚...1081

26.2.8 使用 Ranger 时适配第三方 JDK...1082

26.3 Spark2x 日志介绍... 1083

26.4 获取运行中 Spark 应用的 Container 日志... 1086

26.5 小文件合并工具... 1086

26.6 CarbonData 首查优化工具... 1088

26.7 Spark2x 性能调优... 1090

26.7.1 Spark Core 调优...1090

26.7.1.1 数据序列化...1090

26.7.1.2 配置内存... 1091

26.7.1.3 设置并行度...1091

26.7.1.4 使用广播变量... 1092

26.7.1.5 Yarn 模式下动态资源调度...1092

26.7.1.6 配置进程参数... 1094

26.7.1.7 设计 DAG...1095

26.7.1.8 经验总结... 1097

26.7.2 SQL 和 DataFrame 调优...1098

26.7.2.1 Spark SQL join 优化...1099

26.7.2.2 优化数据倾斜场景下的 Spark SQL 性能...1100

26.7.2.3 优化小文件场景下的 Spark SQL 性能... 1102

26.7.2.4 INSERT...SELECT 操作调优... 1103

26.7.2.5 多并发 JDBC 客户端连接 JDBCServer... 1103

26.7.2.6 动态分区插入场景内存优化... 1104

26.7.2.7 小文件优化...1104

26.7.2.8 聚合算法优化... 1105

26.7.2.9 Datasource 表优化... 1106

26.7.2.10 合并 CBO 优化... 1107

26.7.2.11 跨源复杂数据的 SQL 查询优化... 1108

26.7.2.12 多级嵌套子查询以及混合 Join 的 SQL 调优... 1111

26.7.3 Spark Streaming 调优... 1113

(20)

26.8 Spark2x 常见问题... 1114

26.8.1 Spark Core... 1114

26.8.1.1 日志聚合下,如何查看 Spark 已完成应用日志... 1115

26.8.1.2 Driver 返回码和 RM WebUI 上应用状态显示不一致... 1115

26.8.1.3 为什么 Driver 进程不能退出... 1115

26.8.1.4 网络连接超时导致 FetchFailedException... 1116

26.8.1.5 当事件队列溢出时如何配置事件队列的大小... 1117

26.8.1.6 Spark 应用执行过程中,日志中一直打印 getApplicationReport 异常且应用较长时间不退出... 1118

26.8.1.7 Spark 执行应用时上报“Connection to ip:port has been quiet for xxx ms while there are outstanding requests”并导致应用结束... 1118

26.8.1.8 NodeManager 关闭导致 Executor(s)未移除... 1120

26.8.1.9 Password cannot be null if SASL is enabled 异常... 1120

26.8.1.10 向动态分区表中插入数据时,在重试的 task 中出现"Failed to CREATE_FILE"异常...1121

26.8.1.11 使用 Hash shuffle 出现任务失败... 1121

26.8.1.12 访问 Spark 应用的聚合日志页面报“DNS 查找失败”错误... 1122

26.8.1.13 由于 Timeout waiting for task 异常导致 Shuffle FetchFailed...1123

26.8.1.14 Executor 进程 Crash 导致 Stage 重试...1123

26.8.1.15 执行大数据量的 shuffle 过程时 Executor 注册 shuffle service 失败... 1124

26.8.1.16 在 Spark 应用执行过程中 NodeManager 出现 OOM 异常... 1125

26.8.1.17 安全集群使用 HiBench 工具运行 sparkbench 获取不到 realm...1126

26.8.2 SQL 和 DataFrame... 1127

26.8.2.1 Spark SQL 在不同 DB 都可以显示临时表... 1127

26.8.2.2 如何在 Spark 命令中指定参数值... 1128

26.8.2.3 SparkSQL 建表时的目录权限...1128

26.8.2.4 为什么不同服务之间互相删除 UDF 失败...1129

26.8.2.5 Spark SQL 无法查询到 Parquet 类型的 Hive 表的新插入数据... 1130

26.8.2.6 cache table 使用指导... 1130

26.8.2.7 Repartition 时有部分 Partition 没数据... 1131

26.8.2.8 16T 的文本数据转成 4T Parquet 数据失败...1131

26.8.2.9 当表名为 table 时,执行相关操作时出现异常...1132

26.8.2.10 执行 analyze table 语句,因资源不足出现任务卡住... 1133

26.8.2.11 为什么有时访问没有权限的 parquet 表时,在上报“Missing Privileges”错误提示之前,会运行一 个Job?...1133

26.8.2.12 执行 Hive 命令修改元数据时失败或不生效...1134

26.8.2.13 spark-sql 退出时打印 RejectedExecutionException 异常栈...1134

26.8.2.14 健康检查时,误将 JDBCServer Kill...1134

26.8.2.15 日期类型的字段作为过滤条件时匹配'2016-6-30'时没有查询结果...1135

26.8.2.16 为什么在启动 spark-beeline 的命令中指定“--hivevar”选项无效...1135

26.8.2.17 在 spark-beeline 中创建临时表/视图时,报 HDFS 目录无权限操作的错误... 1136

26.8.2.18 执行复杂 SQL 语句时报“Code of method ... grows beyond 64 KB”的错误... 1136

26.8.2.19 在 Beeline/JDBCServer 模式下连续运行 10T 的 TPCDS 测试套会出现内存不足的现象...1137

26.8.2.20 连上不同的 JDBCServer,function 不能正常使用... 1137

26.8.2.21 用 add jar 方式创建 function,执行 drop function 时出现问题... 1139

(21)

26.8.2.22 Spark2x 无法访问 Spark1.5 创建的 DataSource 表...1140

26.8.2.23 为什么 spark-beeline 运行失败报“Failed to create ThriftService instance”的错误... 1141

26.8.3 Spark Streaming... 1142

26.8.3.1 Streaming 任务打印两次相同 DAG 日志...1142

26.8.3.2 Spark Streaming 任务一直阻塞...1143

26.8.3.3 运行 Spark Streaming 任务参数调优的注意事项... 1144

26.8.3.4 为什么提交 Spark Streaming 应用超过 token 有效期,应用失败...1144

26.8.3.5 为什么 Spark Streaming 应用创建输入流,但该输入流无输出逻辑时,应用从 checkpoint 恢复启动 失败... 1145

26.8.3.6 Spark Streaming 应用运行过程中重启 Kafka,Web UI 界面部分 batch time 对应 Input Size 为 0 records... 1147

26.8.4 访问 Spark 应用获取的 restful 接口信息有误... 1148

26.8.5 为什么从 Yarn Web UI 页面无法跳转到 Spark Web UI 界面... 1149

26.8.6 HistoryServer 缓存的应用被回收,导致此类应用页面访问时出错...1150

26.8.7 加载空的 part 文件时,app 无法显示在 JobHistory 的页面上...1150

26.8.8 Spark2x 导出带有相同字段名的表,结果导出失败... 1151

26.8.9 为什么多次运行 Spark 应用程序会引发致命 JRE 错误...1151

26.8.10 IE 浏览器访问 Spark2x 原生 UI 界面失败,无法显示此页或者页面显示错误... 1151

26.8.11 Spark2x 如何访问外部集群组件... 1152

26.8.12 对同一目录创建多个外表,可能导致外表查询失败... 1154

26.8.13 访问 Spark2x JobHistory 中某个应用的原生页面时页面显示错误... 1154

26.8.14 对接 OBS 场景中,spark-beeline 登录后指定 loaction 到 OBS 建表失败...1155

26.8.15 Spark shuffle 异常处理... 1156

27 使用 Sqoop... 1157

27.1 从零开始使用 Sqoop... 1157

27.2 Sqoop1.4.7 适配 MRS 3.x 集群... 1161

27.3 Sqoop 常用命令及参数介绍... 1163

27.4 Sqoop 常见问题...1165

27.4.1 报错找不到 QueryProvider 类... 1165

27.4.2 使用 hcatalog 方式同步数据,报错 getHiveClient 方法不存在... 1166

27.4.3 连接 postgresql 或者 gaussdb 时报错...1167

27.4.4 使用 hive-table 方式同步数据到 obs 上的 hive 表报错... 1168

27.4.5 使用 hive-table 方式同步数据到 orc 表或者 parquet 表失败... 1168

27.4.6 使用 hive-table 方式同步数据报错...1169

27.4.7 使用 hcatalog 方式同步 hive parquet 表报错...1169

27.4.8 使用 Hcatalog 方式同步 Hive 和 MySQL 之间的数据,timestamp 和 data 类型字段会报错... 1170

28 使用 Storm... 1171

28.1 从零开始使用 Storm... 1171

28.2 使用 Storm 客户端... 1172

28.3 使用客户端提交 Storm 拓扑... 1173

28.4 访问 Storm 的 WebUI...1174

28.5 管理 Storm 拓扑... 1175

(22)

28.6 查看 Storm 拓扑日志... 1176 28.7 Storm 常用参数... 1177 28.8 配置 Storm 业务用户密码策略...1178 28.9 迁移 Storm 业务至 Flink... 1180 28.9.1 概述... 1180 28.9.2 完整迁移 Storm 业务...1180 28.9.3 嵌入式迁移 Storm 业务... 1182 28.9.4 迁移 Storm 对接的外部安全组件业务... 1182 28.10 Storm 日志介绍... 1183 28.11 性能调优... 1187 28.11.1 Storm 性能调优... 1187

29 使用 Tez...1190

29.1 使用前须知...1190 29.2 Tez 常用参数... 1190 29.3 访问 TezUI...1190 29.4 日志介绍... 1191 29.5 常见问题... 1193 29.5.1 TezUI 无法展示 Tez 任务执行细节... 1193 29.5.2 进入 Tez 原生界面显示异常... 1193 29.5.3 TezUI 界面无法查看 yarn 日志... 1194 29.5.4 TezUI HiveQueries 界面表格数据为空... 1195

30 使用 Yarn... 1196

30.1 Yarn 常用参数... 1196 30.2 创建 Yarn 角色... 1199 30.3 使用 Yarn 客户端...1201 30.4 配置 NodeManager 角色实例使用的资源... 1202 30.5 更改 NodeManager 的存储目录... 1203 30.6 配置 YARN 严格权限控制... 1207 30.7 配置 Container 日志聚合功能... 1208 30.8 启用 CGroups 功能... 1212 30.9 配置 AM 失败重试次数...1214 30.10 配置 AM 自动调整分配内存... 1215 30.11 配置访问通道协议... 1216 30.12 检测内存使用情况... 1217 30.13 配置自定义调度器的 WebUI... 1218 30.14 配置 YARN Restart 特性... 1218 30.15 配置 AM 作业保留... 1220 30.16 配置本地化日志级别... 1221 30.17 配置运行任务的用户... 1222 30.18 Yarn 日志介绍...1223 30.19 Yarn 性能调优...1226 30.19.1 抢占任务... 1226

(23)

30.19.2 任务优先级...1228 30.19.3 节点配置调优... 1229 30.20 Yarn 常见问题...1234 30.20.1 任务完成后 Container 挂载的文件目录未清除... 1234 30.20.2 作业执行失败时会抛出 HDFS_DELEGATION_TOKEN 到期的异常...1234 30.20.3 重启 YARN,本地日志不被删除...1234 30.20.4 为什么执行任务时 AppAttempts 重试次数超过 2 次还没有运行失败... 1235 30.20.5 为什么在 ResourceManager 重启后,应用程序会移回原来的队列... 1235 30.20.6 为什么 YARN 资源池的所有节点都被加入黑名单,而 YARN 却没有释放黑名单,导致任务一直处于运 行状态... 1236 30.20.7 ResourceManager 持续主备倒换... 1236 30.20.8 当一个 NodeManager 处于 unhealthy 的状态 10 分钟时,新应用程序失败... 1237 30.20.9 Superior 通过 REST 接口查看已结束或不存在的 applicationID,返回的页面提示 Error Occurred. 1237 30.20.10 Superior 调度模式下,单个 NodeManager 故障可能导致 MapReduce 任务失败... 1237 30.20.11 当应用程序从 lost_and_found 队列移动到其他队列时,应用程序不能继续执行...1238 30.20.12 如何限制存储在 ZKstore 中的应用程序诊断消息的大小... 1239 30.20.13 为什么将非 ViewFS 文件系统配置为 ViewFS 时 MapReduce 作业运行失败...1239 30.20.14 开启 Native Task 特性后,Reduce 任务在部分操作系统运行失败... 1240

31 使用 ZooKeeper...1241

31.1 ZooKeeper 权限设置指南... 1241

32 附录...1245

32.1 修改集群服务配置参数... 1245 32.2 访问集群 Manager... 1249 32.2.1 访问 MRS Manager(MRS 3.x 之前版本)... 1249 32.2.2 访问 FusionInsight Manager(MRS 3.x 及之后版本)... 1255 32.3 使用 MRS 客户端... 1259 32.3.1 安装客户端(3.x 及之后版本)... 1259 32.3.2 安装客户端(3.x 之前版本)... 1264 32.3.3 更新客户端(3.x 及之后版本)... 1268 32.3.4 更新客户端(3.x 之前版本)... 1270

(24)

1 使用 Alluxio

1.1 配置底层存储系统

用户想要通过统一的客户端API和全局命名空间访问包括HDFS和OBS在内的持久化存 储系统,从而实现了对计算和存储的分离时,可以在MRS Manager页面中配置Alluxio 的底层存储系统来实现。集群创建后,默认的底层存储地址是hdfs://hacluster/,即将 HDFS的根目录映射到Alluxio。

前提条件

● 已安装Alluxio服务的集群。

● 获取用户“admin”帐号密码。“admin”密码在创建MRS集群时由用户指定。

配置 HDFS 作为 Alluxio 的底层文件系统

说明

开启Kerberos认证的安全集群不支持该功能。

步骤1 请参考修改集群服务配置参数,进入Alluxio的“全部配置”页面。

步骤2 在左侧边栏中选择“Alluxio > 底层存储系统”,修改参数

“alluxio.master.mount.table.root.ufs”的值为“hdfs://hacluster/XXX/”。

例如:若想将“HDFS根目录/alluxio/”作为alluxio的根目录,则修改参数

“alluxio.master.mount.table.root.ufs”的值为“hdfs://hacluster/alluxio/”。

1-1 HDFS 作为 Alluxio 的底层文件系统

步骤3 单击“保存配置”,并在弹出窗口中勾选“重新启动受影响的服务和实例。”

(25)

步骤4 单击“确定”重启Alluxio服务。

----结束

配置 Huawei OBS 作为 Alluxio 的底层文件系统

方法一:

步骤1 给集群配置有OBS OperateAccess权限的委托,具体请参见配置存算分离集群(委托 方式)。

步骤2 请参考修改集群服务配置参数,进入Alluxio的“全部配置”页面。

步骤3 在左侧边栏中选择“Alluxio > 底层存储系统”,修改参数

“alluxio.master.mount.table.root.ufs”的值为“obs://<OBS_BUCKET>/

<OBS_DIRECTORY>/”。OBS_BUCKET为一个已有的OBS文件系统名,

OBS_DIRECTORY为该文件系统下的目录。

1-2 OBS 作为 Alluxio 的底层文件系统

步骤4 单击“保存配置”,并在弹出窗口中勾选“重新启动受影响的服务和实例。”

步骤5 单击“确定”重启Alluxio服务。

----结束 方法二:

步骤1 给集群配置有OBS OperateAccess权限的委托,具体请参见配置存算分离集群(委托 方式)。

步骤2 登录主Master节点,主节点请参考如何确认MRS Manger的主备管理节点。

步骤3 执行如下命令,配置环境变量。

source /opt/client/bigdata_env 说明

/opt/client为举例当前集群客户端的安装目录,请根据实际情况修改。

步骤4 执行如下命令将OBS容器内部的目录挂载到Alluxio的/obs目录。

alluxio fs mount /obs obs://<OBS_BUCKET>/<OBS_DIRECTORY>/

----结束

1.2 通过数据应用访问 Alluxio

访问Alluxio文件系统的端口号是19998,即地址为alluxio://<alluxio的master节点ip>:

19998/<PATH>,本节将通过示例介绍如何通过数据应用(Spark、Hive、Hadoop MapReduce和Presto)访问Alluxio。

(26)

使用 Alluxio 作为 Spark 应用程序的输入和输出

步骤1 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。

步骤2 执行如下命令,配置环境变量。

source /opt/client/bigdata_env

步骤3 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启 用Kerberos认证,则无需执行此命令。

kinit MRS集群用户 例如, kinit admin

步骤4 准备输入文件,将本地数据复制到Alluxio文件系统中。

如在本地/home目录下准备一个输入文件test_input.txt,然后执行如下命令,将 test_input.txt文件放入Alluxio中。

alluxio fs copyFromLocal /home/test_input.txt /input 步骤5 执行如下命令启动spark-shell。

spark-shell

步骤6 在spark-shell中运行如下命令。

val s = sc.textFile("alluxio://<Alluxio的节点名称>:19998/input") val double = s.map(line => line + line)

double.saveAsTextFile("alluxio://<Alluxio的节点名称>:19998/output") 说明

<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名 称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-

m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs- m0va.com:19998

步骤7 使用“Ctrl + C”退出spark-shell。

步骤8 通过alluxio命令行alluxio fs ls /查看alluxio根目录下存在一个输出目录/output,其中 包含了输入文件input的双倍内容。

----结束

Alluxio 上创建 Hive 表

步骤1 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。

步骤2 执行如下命令,配置环境变量。

source /opt/client/bigdata_env

步骤3 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启 用Kerberos认证,则无需执行此命令。

kinit MRS集群用户 例如, kinit admin

(27)

步骤4 准备输入文件,如在本地/home目录下准备一个输入文件hive_load.txt, 内容为

1, Alice, company A 2, Bob, company B

步骤5 执行如以下命令,将hive_load.txt文件放入Alluxio中。

alluxio fs copyFromLocal /home/hive_load.txt /hive_input 步骤6 执行如下命令启动hive beeline。

beeline

步骤7 在beeline中运行如下命令,根据Alluxio中的输入文件进行创表。

CREATE TABLE u_user(id INT, name STRING, company STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

LOAD DATA INPATH 'alluxio://<Alluxio的节点名称>:19998/hive_input' INTO TABLE u_user;

说明

<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名 称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-

m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs- m0va.com:19998

步骤8 执行如下命令查看创建的表。

select * from u_user;

----结束

Alluxio 上运行 Hadoop Wordcount

步骤1 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。

步骤2 执行如下命令,配置环境变量。

source /opt/client/bigdata_env

步骤3 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启 用Kerberos认证,则无需执行此命令。

kinit MRS集群用户 例如, kinit admin

步骤4 准备输入文件,将本地数据复制到Alluxio文件系统中。

如在本地/home目录下准备一个输入文件test_input.txt,然后执行如下命令,将 test_input.txt文件放入Alluxio中。

alluxio fs copyFromLocal /home/test_input.txt /input 步骤5 通过yarn jar执行wordcount作业。

yarn jar /opt/share/hadoop-mapreduce-examples-<hadoop版本号>-mrs-<mrs 集群版本号>/hadoop-mapreduce-examples-<hadoop版本号>-mrs-<mrs集群版本 号>.jar wordcount alluxio://<Alluxio的节点名称>:19998/input alluxio://<Alluxio 的节点名称>:19998/output

(28)

说明

● <hadoop版本号>请根据实际情况替换。

● <mrs集群版本号>替换为MRS的大版本号,如MRS 1.9.2版本集群此处为mrs-1.9.0。

● <Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节 点名称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs- m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs- m0va.com:19998

步骤6 通过alluxio命令行alluxio fs ls /查看alluxio根目录下存在一个输出目录/output,包含 了wordcount的结果。

----结束

使用 Presto 在 Alluxio 上查询表

步骤1 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。

步骤2 执行如下命令,配置环境变量。

source /opt/client/bigdata_env

步骤3 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启 用Kerberos认证,则无需执行此命令。

kinit MRS集群用户 例如, kinit admin

步骤4 启动hive beeline在alluxio上创建表。

beeline

CREATE TABLE u_user (id int, name string, company string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'alluxio://<Alluxio的节点名称

>:19998/u_user';

insert into u_user values(1,'Alice','Company A'),(2, 'Bob', 'Company B');

说明

<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名 称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-

m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs- m0va.com:19998

步骤5 启动Presto客户端,具体请参见使用客户端执行查询语句的步骤2~步骤8。

步骤6 在Presto客户端中执行查询语句select * from hive.default.u_user; 查询alluxio上创 建表。

(29)

1-3 Presto 查询 alluxio 上创建的表

----结束

1.3 Alluxio 常用操作

前期准备

1. 创建安装Alluxio组件的集群。

2. 以root用户登录集群的主Master节点,密码为用户创建集群时设置的root密码。

3. 执行如下命令,配置环境变量。

source /opt/client/bigdata_env

使用 Alluxio Shell

Alluxio shell包含多种与Alluxio交互的命令行操作。

● 要查看文件系统操作命令列表。

alluxio fs

● 使用ls命令列出 Alluxio 里的文件。例如列出根目录下所有文件。

alluxio fs ls /

● 使用copyFromLocal命令可以复制本地文件到 Alluxio 中。

alluxio fs copyFromLocal /home/test_input.txt /test_input.txt 命令执行后回显:

Copied file:///home/test_input.txt to /test_input.txt

● 再次使用ls命令列出Alluxio中的文件,可以看到刚刚拷贝的test_input.txt文件。

alluxio fs ls / 命令执行后回显:

12 PERSISTED 11-28-2019 17:10:17:449 100% /test_input.txt

输出显示test_input.txt 文件在 Alluxio 中,各参数含义为文件的大小、是否被持 久化、创建日期、Alluxio中这个文件的缓存占比、文件名。

● 使用cat命令打印文件的内容。

alluxio fs cat /test_input.txt 命令执行后回显:

Test Alluxio

Alluxio 中的挂载功能

Alluxio 通过统一命名空间的特性统一了对存储系统的访问。详情请参考:https://

docs.alluxio.io/os/user/2.0/cn/advanced/Namespace-Management.html 这个特性允许用户挂载不同的存储系统到Alluxio命名空间中并且通过Alluxio命名空间 无缝地跨存储系统访问文件。

(30)

1. 在 Alluxio 中创建一个目录作为挂载点。

alluxio fs mkdir /mnt

Successfully created directory /mnt

2. 挂载一个已有的OBS文件系统到Alluxio(前提:给集群配置有OBS

OperateAccess权限的委托,具体请参见配置存算分离集群(委托方式))。此处 以obs-mrstest文件系统为例,请根据实际情况替换文件系统名。

alluxio fs mount /mnt/obs obs://obs-mrstest/data

Mounted obs://obs-mrstest/data at /mnt/obs

3. 通过Alluxio命名空间列出OBS文件系统中的文件。使用ls命令列出OBS挂载目录下 的文件。

alluxio fs ls /mnt/obs

38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt

新挂载的文件和目录也可以通过Alluxio WebUI查看。

4. 挂载完成后,通过 Alluxio 统一命名空间,可以无缝地从不同存储系统中交互数 据。例如,使用ls -R命令,递归地列举出一个目录下的所有文件。

alluxio fs ls -R /

0 PERSISTED 11-28-2019 11:15:19:719 DIR /app-logs 1 PERSISTED 11-28-2019 11:18:36:885 DIR /apps

1 PERSISTED 11-28-2019 11:18:40:209 DIR /apps/templeton

239440292 PERSISTED 11-28-2019 11:18:40:209 0% /apps/templeton/hive.tar.gz ...

1 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt 2 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt/obs

38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt ...

输出显示了Alluxio文件系统根目录(默认值是HDFS的根目录,即hdfs://

hacluster/)中来源于挂载存储系统的所有文件。/app-logs和/apps目录在HDFS 文件系统中,/mnt/obs/目录在OBS 中。

Alluxio 加速数据访问

由于Alluxio利用内存存储数据,它可以加速数据的访问。例如:

1. 上传一个文件test_data.csv(文件是一份记录了食谱的样本)到obs-mrstest文件 系统的/data目录下。通过ls命令显示文件状态:

alluxio fs ls /mnt/obs/test_data.csv

294520189 PERSISTED 11-28-2019 19:38:55:000 0% /mnt/obs/test_data.csv

输出显示了该文件在Alluxio中缓存占比为0%,即不在Alluxio内存中。

2. 统计该文件中单词"milk"出现的次数,并计算耗时。

time alluxio fs cat /mnt/obs/test_data.csv | grep -c milk

52180

real 0m10.765s user 0m5.540s sys 0m0.696s

3. 第一次读取数据后会将数据放在内存中,Alluxio再次读取时可以提高访问该数据 的速度。例如:在通过cat命令获取文件后,用ls命令再查看文件的状态。

alluxio fs ls /mnt/obs/test_data.csv

294520189 PERSISTED 11-28-2019 19:38:55:000 100% /mnt/obs/test_data.csv

输出显示文件已经 100% 被加载到 Alluxio 中。

(31)

4. 再次访问该文件,统计单词“eggs”出现的次数,并计算耗时。

time alluxio fs cat /mnt/obs/test_data.csv | grep -c eggs

59510

real 0m5.777s user 0m5.992s sys 0m0.592s

对比两次耗时可以看出存储在Alluxio内存中的数据,数据访问耗时明显缩短。

(32)

2 使用 CarbonData(MRS 3.x 之前版本)

2.1 CarbonData 入门

MRS 3.x之前版本参考本章节,MRS 3.x及后续版本请参考使用CarbonData(MRS 3.x及之后版本)。

本章节介绍使用Spark CarbonData的基本流程,所有任务场景基于spark-beeline环 境。CarbonData快速入门包含以下任务:

1. 连接到Spark

在对CarbonData进行任何操作之前,需要先连接到Spark。

2. 创建CarbonData表

连接CarbonData之后,需要创建CarbonData Table,用于加载数据和执行查询操 作。

3. 加载数据到CarbonData表

用户从HDFS中的CSV文件加载数据到所创建的表中。

4. 在CarbonData中查询数据

在CarbonData表加载数据之后,用户可以执行所需的查询操作,例如groupby或 者where等。

前提条件

已安装客户端,具体参见使用MRS客户端。

操作步骤

步骤1 连接到Spark CarbonData。

1. 根据业务情况,准备好客户端,使用root用户登录安装客户端的节点。

例如在Master2节点更新客户端,则在该节点登录客户端,具体参见使用MRS客 户端。

2. 切换用户与配置环境变量。

sudo su - omm

source /opt/client/bigdata_env

(33)

3. 启用Kerberos认证的集群,执行以下命令认证用户身份。未启用Kerberos认证集 群无需执行。

kinit Spark组件用户名 说明

用户需要加入用户组hadoop、hive,主组hadoop。

4. 执行以下命令,连接到Spark运行环境:

spark-beeline

步骤2 执行命令创建CarbonData表。

CarbonData表可用于加载数据和执行查询操作,例如执行以下命令创建CarbonData 表:

CREATE TABLE x1 (imei string, deviceInformationId int, mac string, productdate timestamp, updatetime timestamp, gamePointId double, contractNumber double)

STORED BY 'org.apache.carbondata.format' TBLPROPERTIES

('DICTIONARY_EXCLUDE'='mac','DICTIONARY_INCLUDE'='deviceInformationId' );

命令执行结果如下:

+---+--+

| result | +---+--+

+---+--+

No rows selected (1.551 seconds)

步骤3 从CSV文件加载数据到CarbonData表。

根据所要求的参数运行命令从CSV文件加载数据,且仅支持CSV文件。LOAD命令中配 置的CSV列名,需要和CarbonData表列名相同,顺序也要对应。CSV文件中的数据的 列数,以及数据格式需要和CarbonData表匹配。

文件需要保存在HDFS中。用户可以将文件上传到OBS,并在MRS管理控制台“文件管 理”将文件从OBS导入HDFS,具体请参考导入导出数据。

如果集群启用了Kerberos认证,则需要在工作环境准备CSV文件,然后可以使用开源 HDFS命令,参考5将文件从工作环境导入HDFS,并设置Spark组件用户在HDFS中对文 件有读取和执行的权限。

例如,HDFS的“tmp”目录有一个文件“data.csv”,内容如下:

x123,111,dd,2017-04-20 08:51:27,2017-04-20 07:56:51,2222,33333

执行导入命令:

LOAD DATA inpath 'hdfs://hacluster/tmp/data.csv' into table x1 options('DELIMITER'=',','QUOTECHAR'='"','FILEHEADER'='imei,

deviceinformationid,mac,productdate,updatetime,gamepointid,contractnumb er');

命令执行结果如下:

+---+--+

| Result |

(34)

+---+--+

+---+--+

No rows selected (3.039 seconds)

步骤4 在CarbonData中查询数据。

● 获取记录数

为了获取在CarbonData table中的记录数,可以执行以下命令。

select count(*) from x1;

● 使用Groupby查询

为了获取不重复的“deviceinformationid”记录数,可以执行以下命令。

select deviceinformationid,count (distinct deviceinformationid) from x1 group by deviceinformationid;

● 使用条件查询

为了获取特定deviceinformationid的记录,可以执行以下命令。

select * from x1 where deviceinformationid='111';

说明

在执行数据查询操作后,如果查询结果中某一列的结果含有中文字等其他非英文字符,会导致查 询结果中的列不能对齐,这是由于不同语言的字符在显示时所占的字宽不尽相同。

步骤5 执行以下命令退出Spark运行环境。

!quit ----结束

2.2 CarbonData 表简介

简介

CarbonData表与RDBMS中的表类似,RDBMS数据存储在由行和列构成的表中。

CarbonData表存储的也是结构化的数据,具有固定列和数据类型。CarbonData中的 数据存储在表实体文件中。

支持的数据类型

CarbonData表支持以下数据类型:

● Int

● String

● BigInt

● Decimal

● Double

● TimeStamp

表2-1对所支持的数据类型和对应的范围进行了详细说明。

(35)

2-1 CarbonData 数据类型

数据类型 描述

Int 4字节有符号整数,从-2,147,483,648到2,147,483,647。

说明非字典列如果是Int类型,会在内部存储为BigInt类型。

String 最大支持字符长度为100000。

BigInt 使用64-bit存储数据,支持从-9,223,372,036,854,775,808到 9,223,372,036,854,775,807。

Decimal 默认值是(10,0),最大值是(38,38)。

说明

当进行带过滤条件的查询时,为了得到准确的结果,需要在数字后面加上 BD。例如,select * from carbon_table where num =

1234567890123456.22BD。

Double 使用64-bit存储数据,从4.9E-324到1.7976931348623157E308。

TimeStamp 默认格式为“yyyy-MM-dd HH:mm:ss”。

说明

所有Integer类型度量均以BigInt类型进行处理与显示。

2.3 创建 CarbonData 表

操作场景

使用CarbonData前需先创建表,才可从表中加载数据和查询数据。

使用自定义列创建表

可通过指定各列及其数据类型来创建表。启用Kerberos认证的分析集群创建

CarbonData表时,如果用户需要在默认数据库“default”以外的数据库创建新表,则 需要在Hive角色管理中为用户绑定的角色添加指定数据库的“Create”权限。

命令示例:

CREATE TABLE IF NOT EXISTS productdb.productSalesTable ( productNumber Int,

productName String, storeCity String, storeProvince String, revenue Int)

STORED BY 'org.apache.carbondata.format' TBLPROPERTIES (

(36)

'table_blocksize'='128',

'DICTIONARY_EXCLUDE'='productName', 'DICTIONARY_INCLUDE'='productNumber');

上述命令所创建的表的详细信息如下:

2-2 表信息定义

参数 描述

productSalesTable 待创建的表的名称。该表用于加载数据进行分析。

表名由字母、数字、下划线组成。

productdb 数据库名称。该数据库将与其中的表保持逻辑连接以便于 识别和管理。

数据库名称由字母、数字、下划线组成。

productNumber productName storeCity storeProvince revenue

表中的列,代表执行分析所需的业务实体。

列名(字段名)由字母、数字、下划线组成。

说明CarbonData暂不支持设置列是否允许为空、默认值以及主键。

table_blocksize CarbonData表使用的数据文件的block大小,默认值为 1024,取值范围为1~2048,单位为MB。

● 如果“table_blocksize”值太小,数据加载时将生成过 多的小数据文件,可能会影响HDFS的使用性能。

● 如果“table_blocksize”值太大,数据查询时索引匹配 的block数据量较大,导致读取并发度不高,从而降低 查询性能。

一般情况下,建议根据数据量级别来选择大小。例如:GB 级别用256,TB级别用512,PB级别用1024。

DICTIONARY_EXCLUD

E 设置指定列不生成字典,适用于数值复杂度高的列。系统

默认为String类型的列做字典编码,但是如果字典值过多,

会导致字典转换操作增加造成性能下降。

一般情况下,列的数值复杂度高于5万,可以被认定为高复 杂度,则需要排除掉字典编码,该参数为可选参数。

说明在非字典列中,只支持String和Timestamp数据类型。

DICTIONARY_INCLUD

E 设置指定列生成字典,适用于数值复杂度低的列,可以提

升字典列上的groupby性能,为可选参数。一般情况下,

字典列的复杂度不应该高于5万。

(37)

2.4 删除 CarbonData 表

操作场景

用户根据业务使用情况,可以删除不再使用的CarbonData表。删除表后,其所有的元 数据以及表中已加载的数据都会被删除。

操作步骤

步骤1 运行如下命令删除表。

DROP TABLE [IF EXISTS] [db_name.]table_name;

“db_name”为可选参数。如果没有指定“db_name”,那么将会删除当前数据库下 名为“table_name”的表。

例如执行命令,删除数据库“productdb”下的表“productSalesTable”:

DROP TABLE productdb.productSalesTable;

步骤2 执行以下命令查询表是否被删除:

SHOW TABLES;

----结束

數據

表 2-1 CarbonData 数据类型 数据类型 描述 Int 4字节有符号整数,从-2,147,483,648到2,147,483,647。 说明 非字典列如果是Int类型,会在内部存储为BigInt类型。 String 最大支持字符长度为100000。 BigInt 使用64-bit存储数据,支持从-9,223,372,036,854,775,808到 9,223,372,036,854,775,807。 Decimal 默认值是(10,0),最大值是(38,38)。 说明 当进行带过滤条件的查询时
表 3-3 carbon.properties 中的系统配置 参数 默认值 描述 carbon.ddl.b ase.hdfs.url hdfs:// hacluster/opt/ data 此属性用于从HDFS基本路径配置HDFS相对路径,在“fs.defaultFS”中进行配置。在 “carbon.ddl.base.hdfs.url”中配置的路径将被 追加到在“fs.defaultFS”中配置的HDFS路径 中。如果配置了这个路径,则用户不需要通过完 整路径加载数据。 例如:如果CSV文件的绝对路径是“h
表 3-5 carbon.properties 中的其它配置 参数 默认值 描述 数据加载配置 carbon.lock.t ype HDFSLOCK 该配置指定了表上并发操作过程中所要求的锁的类型。 有以下几种类型锁实现方式: ● LOCALLOCK:基于本地文件系统的文件来创 建的锁。该锁只适用于一台机器上只运行一个 Spark Driver(或者JDBCServer)的情况。 ● HDFSLOCK:基于HDFS文件系统上的文件来 创建的锁。该锁适用于集群上有多个运行的 Spark应用而且没有可用的Zoo
表 3-8 JDBCServer 服务中的配置参数 参数 配置值 描述 spark.driver. extraJavaO ptions -Xloggc:$ {SPARK_LOG_DIR }/indexserver-omm-%p-gc.log -XX: +PrintGCDetails  -XX:- OmitStackTraceI nFastThrow -XX: +PrintGCTimeSta mps -XX: +PrintGCDateSta mps  -XX:MaxDirectMe morySize=512M
+7

參考文獻

相關文件

使用者甲與使用者乙約定藉由非對稱加密(asymmetric encryption)進行溝通,假設使用者甲先以

(A)因為用 Terminal Services 可以不用安裝 ERP 的程式在 Client 端上可以減少 MIS 維護系 統的時間(B)沒有防毒軟體 (C)建置防火牆的系統 (D) APP-Server 與 DB

實務上在應用 SPSS 軟體 run 完主 成分分析後,應該進一步進行因素 轉軸,在社會科學研究中,varimax 法為最常使用的,varimax

Shift +a 新增方塊物件→使用 Scale 來調整物 件的大小→Translate 來調整方塊的位置→排 列成樓梯的形狀.. 使用 import 匯入躺椅的

例如 : http ( 網頁伺服器所用的協定 ) 定義了 client 如何向 server request 網頁及 server 如何 將網頁及其中的各種內容回傳給 client 。. 提供服務給 application layer

口罩國家隊加利公司於 8 月份進口 337

‡ RFID 運作原理是透過一片小型硬體的無線射頻辨識技 術晶片( RFID chips),利用內含的天線來傳送與接

密碼系統中,通常將想要保護的密碼訊息稱為 plain text。而將經過加密後產生的加密訊息稱為 cipher text。在這 中間的過程,會用到可以對外供應的 Public Key 以及私人保