华为云用户手册

  • 回答 登录HMaster WebUI,在导航栏选择“Procedure & Locks”,查看是否有处于Waiting状态的process id。如果有,需要执行以下命令将procedure lock释放: hbase hbck -j 客户端安装目录/HBase/hbase/tools/hbase-hbck2-*.jar bypass -o pid 查看State是否处于Bypass状态,如果界面上的procedures一直处于RUNNABLE(Bypass)状态,需要进行主备切换。执行assigns命令使region重新上线。 hbase hbck -j 客户端安装目录/HBase/hbase/tools/hbase-hbck2-*.jar assigns -o regionName
  • 回答 BulkLoad程序在客户端启动时会生成一个partitioner文件,用于划分Map任务数据输入的范围。此文件在BulkLoad客户端退出时会被自动删除。一般来说当所有Map任务都启动运行以后,退出BulkLoad客户端也不会导致已提交的作业失败。但由于Map任务存在重试机制和推测执行机制;Reduce任务下载一个已运行完成的Map任务的数据失败次数过多时,Map任务也会被重新执行。如果此时BulkLoad客户端已经退出,则重试的Map任务会因为找不到partitioner文件而执行失败,导致作业执行失败。因此,强烈建议BulkLoad程序在数据导入期间不要结束客户端程序。
  • 配置场景 在实际应用中,需要存储大大小小的数据,比如图像数据、文档。小于10MB的数据一般都可以存储在HBase上,对于小于100KB的数据,HBase的读写性能是更优的。如果存放在HBase的数据大于100KB甚至到10MB大小时,插入同样个数的数据文件,但是总的数据量会很大,会导致频繁的compaction和split,占用很多CPU,磁盘IO频率很高,性能严重下降。 通过将MOB(Medium-sized Objects)数据(即100KB到10MB大小的数据)直接以HFile的格式存储在文件系统上(例如HDFS文件系统),通过expiredMobFileCleaner和Sweeper工具集中管理这些文件,然后把这些文件的地址信息及大小信息作为value存储在普通HBase的store上。这样就可以大大降低HBase的compaction和split频率,提升性能。 HBase当前默认开启MOB功能,相关配置项如表1所示。如果需要使用MOB功能,用户需要在创建表或者修改表属性时在指定的列族上指定使用mob方式存储数据。 本章节适用于 MRS 3.x及之后版本。
  • 操作场景 您可以按照自定义的方式,通过命令批量导入数据到HBase中。 您可以在“configuration.xml”文件中定义多个方式来批量导入数据。导入数据时可不创建索引。 列的名称不能包含特殊字符,只能由字母、数字和下划线组成。 大任务下MR任务运行失败,请参考MapReduce任务运行失败,ApplicationMaster出现物理内存溢出异常进行处理。 BulkLoad支持的数据源格式为带分隔符的文本文件。 已安装客户端。例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
  • 配置方法 用户编写自定义rowkey的实现类,需要继承接口,该接口所在的Jar包的路径为“客户端安装目录/HBase/hbase/lib/hbase-it-bulk-load-*.jar”: [com.huawei.hadoop.hbase.tools.bulkload.RowkeyHandlerInterface] 实现接口中方法: byte[] getRowkeyBytes(String[] colsValues, RegulationDomain regulation) 其中: 传入参数“colsValues”为原始数据中的一行数据集合,每个元素为一列。 传入参数“regulation”为配置导入文件信息(一般情况下并不需要使用)。 将该实现类与其依赖包同时打包成Jar文件,保存到HBase客户端所在节点的任意位置并确保执行命令的用户具有读取和执行该Jar包的权限。 在执行导入命令时,增加两个参数配置项: -Dimport.rowkey.jar="第二步中Jar包的全路径" -Dimport.rowkey.class="用户实现类的全类名"
  • 配置方法 用户编写自定义rowkey的实现类,需要继承接口,该接口所在的Jar包路径为“客户端安装目录/HBase/hbase/lib/hbase-it-bulk-load-*.jar”: [com.huawei.hadoop.hbase.tools.bulkload.RowkeyHandlerInterface], 实现接口中方法: byte[] getRowkeyBytes(String[] colsValues, RegulationDomain regulation) 其中: 传入参数“colsValues”为原始数据中的一行数据集合,每个元素为一列。 传入参数“regulation”为配置导入文件信息(一般情况下并不需要使用)。 将该实现类与其依赖包同时打包成Jar文件,保存到HBase客户端所在节点的任意位置并确保执行命令的用户具有读取和执行该Jar包的权限。 在执行导入命令时,增加两个参数配置项: -Dimport.rowkey.jar="第二步中Jar包的全路径" -Dimport.rowkey.class="用户实现类的全类名"
  • 操作步骤 根据前提条件,创建一个满足要求的弹性云服务器。 登录集群详情页面,选择“组件管理”。 若集群详情页面没有“组件管理”页签,请先完成 IAM 用户同步(在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步)。 单击“下载客户端”。 在“客户端类型”选择“完整客户端”。 在“下载路径”选择“远端主机”。 将“主机IP”设置为E CS 的IP地址,设置“主机端口”为“22”,并将“保存路径”设置为“/tmp”。 如果使用SSH登录ECS的默认端口“22”被修改,请将“主机端口”设置为新端口。 “保存路径”最多可以包含256个字符。 “登录用户”设置为“root”。 如果使用其他用户,请确保该用户对保存目录拥有读取、写入和执行权限。 在“登录方式”选择“密码”或“SSH私钥”。 密码:输入创建集群时设置的root用户密码。 SSH私钥:选择并上传创建集群时使用的密钥文件。 单击“确定”开始生成客户端文件。 若界面显示以下提示信息表示客户端包已经成功保存。 下载客户端文件到远端主机成功。 若界面显示以下提示信息,请检查用户名密码及远端主机的安全组配置,确保用户名密码正确,及远端主机的安全组已增加SSH(22)端口的入方向规则。然后从3执行重新下载客户端。 连接到服务器失败,请检查网络连接或参数设置。 图1 下载客户端 选择“Flume”服务,单击“实例”,查看任意一个Flume实例和两个MonitorServer实例的“业务IP”。 使用VNC方式,登录弹性云服务器。参见远程登录(VNC方式))。 所有镜像均支持Cloud-init特性。Cloud-init预配置的用户名“root”,密码为创建集群时设置的密码。首次登录建议修改。 在弹性云服务器,切换到root用户,并将安装包复制到目录“/opt”。 sudo su - root cp /tmp/MRS_Flume_Client.tar /opt 在“/opt”目录执行以下命令,解压压缩包获取校验文件与客户端配置包。 tar -xvf MRS_Flume_Client.tar 执行以下命令,校验文件包。 sha256sum -c MRS_Flume_ClientConfig.tar.sha256 界面显示如下信息,表明文件包校验成功: MRS_Flume_ClientConfig.tar: OK 执行以下命令,解压“MRS_Flume_ClientConfig.tar”。 tar -xvf MRS_Flume_ClientConfig.tar 执行以下命令,安装客户端运行环境到新的目录,例如“/opt/Flumeenv”。安装时自动生成目录。 sh /opt/MRS_Flume_ClientConfig/install.sh /opt/Flumeenv 查看安装输出信息,如有以下结果表示客户端运行环境安装成功: Components client installation is complete. 执行以下命令,配置环境变量。 source /opt/Flumeenv/bigdata_env 执行以下命令,解压Flume客户端。 cd /opt/MRS_Flume_ClientConfig/Flume tar -xvf FusionInsight -Flume-1.6.0.tar.gz 执行以下命令,查看当前用户密码是否过期。 chage -l root “Password expires”时间早于当前则表示过期。此时需要修改密码,或执行chage -M -1 root设置密码为未过期状态。 执行以下命令,安装Flume客户端到新目录,例如“/opt/FlumeClient”。安装时自动生成目录。 sh /opt/MRS_Flume_ClientConfig/Flume/install.sh -d /opt/FlumeClient -f MonitorServer实例的业务IP地址 -c Flume配置文件路径 -l /var/log/ -e Flume的业务IP地址 -n Flume客户端名称 各参数说明如下: “-d”:表示Flume客户端安装路径。 “-f”:可选参数,表示两个MonitorServer角色的业务IP地址,中间用英文逗号分隔,若不设置则Flume客户端将不向MonitorServer发送告警信息,同时在MRS Manager界面上看不到该客户端的相关信息。 “-c”:可选参数,表示Flume客户端在安装后默认加载的配置文件“properties.properties”。如不添加参数,默认使用客户端安装目录的“fusioninsight-flume-1.6.0/conf/properties.properties”。客户端中配置文件为空白模板,根据业务需要修改后Flume客户端将自动加载。 “-l”:可选参数,表示日志目录,默认值为“/var/log/Bigdata”。 “-e”:可选参数,表示Flume实例的业务IP地址,主要用于接收客户端上报的监控指标信息。 “-n”:可选参数,表示自定义的Flume客户端的名称。 IBM的JDK不支持“-Xloggc”,需要修改“flume/conf/flume-env.sh”,将“-Xloggc”修改为“-Xverbosegclog”,若JDK为32位,“-Xmx”不能大于3.25GB。 “flume/conf/flume-env.sh”中,“-Xmx”默认为4GB。若客户端机器内存过小,可调整为512M甚至1GB。 例如执行:sh install.sh -d /opt/FlumeClient 系统显示以下结果表示客户端运行环境安装成功: install flume client successfully.
  • 配置Pipeline 本章节适用于MRS 3.x及之后版本。 配置文件。 nettyconnector.registerserver.topic.storage:设置NettySink的IP、端口及并发度信息在第三方注册服务器上的路径(必填),例如: nettyconnector.registerserver.topic.storage: /flink/nettyconnector nettyconnector.sinkserver.port.range:设置NettySink的端口范围(必填),例如: nettyconnector.sinkserver.port.range: 28444-28843 nettyconnector.ssl.enabled:设置NettySink与NettySource之间通信是否SSL加密(默认为false),例如: nettyconnector.ssl.enabled: true 安全认证配置。 Zookeeper的SASL认证,依赖“flink-conf.yaml”中有关HA的相关配置。 SSL的keystore、truststore、keystore password、truststore password以及password等也使用“flink-conf.yaml”的相关配置,具体配置请参见加密传输。 父主题: 配置Flink安全特性
  • 示例 create table productdb.productSalesTable(id int,price int,productName string,city string) stored as carbondata; CREATE INDEX productNameIndexTable on table productdb.productSalesTable (productName,city) as 'carbondata' ; 上述示例将创建名为“productdb.productNameIndexTable”的二级表并加载所提供列的索引信息。
  • 参数描述 表1 CREATE SECONDARY INDEX参数 参数 描述 index_name 索引表的名称。表名称应由字母数字字符和下划线(_)特殊字符组成。 db_name 数据库的名称。数据库名称应由字母数字字符和下划线(_)特殊字符组成。 table_name 数据库中的表名称。表名称应由字母数字字符和下划线(_)特殊字符组成。 col_name 表中的列名称。支持多列。列名称应由字母数字字符和下划线(_)特殊字符组成。 table_blocksize 数据文件的block大小。更多详细信息,请参考•Block大小。
  • 示例 create table productdb.productSalesTable(id int,price int,productName string,city string) stored as carbondata; CREATE INDEX productNameIndexTable on table productdb.productSalesTable (productName,city) as 'carbondata' ; SHOW INDEXES ON productdb.productSalesTable;
  • 回答 在executor核数等于1的情况下,遵循以下规则对调优Spark Streaming运行参数有所帮助。 Spark任务处理速度和Kafka上partition个数有关,当partition个数小于给定executor个数时,实际使用的executor个数和partition个数相同,其余的将会被空闲。所以应该使得executor个数小于或者等于partition个数。 当Kafka上不同partition数据有倾斜时,数据较多的partition对应的executor将成为数据处理的瓶颈,所以在执行Producer程序时,数据平均发送到每个partition可以提升处理的速度。 在partition数据均匀分布的情况下,同时提高partition和executor个数,将会提升Spark处理速度(当partition个数和executor个数保持一致时,处理速度是最快的)。 在partition数据均匀分布的情况下,尽量保持partition个数是executor个数的整数倍,这样将会使资源得到合理利用。
  • 系统响应 +-----+----------+--------------------------+------------------+------------+------------+-------------+--------------+--+| ID | Status | Load Start Time | Load Time Taken | Partition | Data Size | Index Size | File Format |+-----+----------+--------------------------+------------------+------------+------------+-------------+--------------+--+| 3 | Success | 2020-09-28 22:53:26.336 | 3.726S | {} | 6.47KB | 3.30KB | columnar_v3 || 2 | Success | 2020-09-28 22:53:01.702 | 6.688S | {} | 6.47KB | 3.30KB | columnar_v3 |+-----+----------+--------------------------+------------------+------------+------------+-------------+--------------+--+
  • 示例 create table carbon01(a int,b string,c string) stored as carbondata; insert into table carbon01 select 1,'a','aa'; insert into table carbon01 select 2,'b','bb'; insert into table carbon01 select 3,'c','cc'; SHOW SEGMENTS FOR TABLE carbon01 LIMIT 2;
  • 示例 添加carbon配置参数 carbon.clean.file.force.allowed = true create table carbon01(a int,b string,c string) stored as carbondata; insert into table carbon01 select 1,'a','aa'; insert into table carbon01 select 2,'b','bb'; delete from table carbon01 where segment.id in (0); show segments for table carbon01; CLEAN FILES FOR TABLE carbon01 options('force'='true'); show segments for table carbon01; 上述命令将从物理上删除所有DELETE SEGMENT命令删除的segment和合并后的旧的segment。
  • 注意事项 以下是可以在加载数据时使用的配置选项: DELIMITER:可以在加载命令中提供分隔符和引号字符。默认值为,。 OPTIONS('DELIMITER'=',' , 'QUOTECHAR'='"') 可使用'DELIMITER'='\t'来表示用制表符tab对CSV数据进行分隔。 OPTIONS('DELIMITER'='\t') CarbonData也支持\001和\017作为分隔符。 对于CSV数据,分隔符为单引号(')时,单引号必须在双引号(" ")内。例如:'DELIMITER'= "'"。 QUOTECHAR:可以在加载命令中提供分隔符和引号字符。默认值为"。 OPTIONS('DELIMITER'=',' , 'QUOTECHAR'='"') COMMENTCHAR:可以在加载命令中提供注释字符。在加载操作期间,如果在行的开头遇到注释字符,那么该行将被视为注释,并且不会被加载。默认值为#。 OPTIONS('COMMENTCHAR'='#') FILEHEADER:如果源文件中没有表头,可在LOAD DATA命令中提供表头。 OPTIONS('FILEHEADER'='column1,column2') ESCAPECHAR:如果用户想在CSV上对Escape字符进行严格验证,可以提供Escape字符。默认值为\。 OPTIONS('ESCAPECHAR'='\') 如果在CSV数据中输入ESCAPECHAR,该ESCAPECHAR必须在双引号(" ")内。例如:"a\b"。 Bad Records处理: 为了使数据处理应用程序为用户增值,不可避免地需要对数据进行某种程度的集成。在大多数情况下,数据质量问题源于生成源数据的上游(主要)系统。 有两种完全不同的方式处理Bad Data: 按照原始数据加载所有数据,之后进行除错处理。 在进入数据源的过程中,可以清理或擦除Bad Data,或者在发现Bad Data时让数据加载失败。 有多个选项可用于在CarbonData数据加载过程中清除源数据。对于CarbonData数据中的Bad Records管理,请参见表2。 表2 Bad Records Logger 配置项 默认值 描述 BAD_RECORDS_ LOG GER_ENABLE false 若设置为true,则将创建Bad Records日志文件,其中包含Bad Records的详细信息。 BAD_RECORDS_ACTION FAIL 以下为Bad Records的四种操作类型: FORCE:通过将Bad Records存储为NULL来自动校正数据。 REDIRECT:无法加载Bad Records,并将其写入BAD_RECORD_PATH下的CSV文件中,默认不开启该类型,如需使用该类型,需要设置参数carbon.enable.badrecord.action.redirect为true。 IGNORE:既不加载Bad Records也不将其写入CSV文件。 FAIL:如果发现存在Bad Records,数据加载将会失败。 说明: 在加载数据时,如果所有记录都是Bad Records,则参数BAD_RECORDS_ACTION将不起作用,加载数据操作将会失败。 IS_EMPTY_DATA_BAD_RECORD false 如果设置为“false”,则空(""或''或,,)数据将不被视为Bad Records,如果设置为“true”,则空数据将被视为Bad Records。 BAD_RECORD_PATH - 指定存储Bad Records的HDFS路径。默认值为Null。 如果启用了Bad Records日志记录或者Bad Records操作重定向,则该路径必须由用户进行配置。 示例: LOAD DATA INPATH 'filepath.csv' INTO TABLE tablename OPTIONS('BAD_RECORDS_LOGGER_ENABLE'='true', 'BAD_RECORD_PATH'='hdfs://hacluster/tmp/carbon', 'BAD_RECORDS_ACTION'='REDIRECT', 'IS_EMPTY_DATA_BAD_RECORD'='false'); 使用“REDIRECT”选项,CarbonData会将所有的Bad Records添加到单独的CSV文件中,但是该文件内容不能用于后续的数据加载,因为其内容可能无法与源记录完全匹配。用户必须清理原始源记录以便于进一步的数据提取。该选项的目的只是让用户知道哪些记录被视为Bad Records。 MAXCOLUMNS:该可选参数指定了在一行中,由CSV解析器解析的最大列数。 OPTIONS('MAXCOLUMNS'='400') 表3 MAXCOLUMNS 可选参数名称 默认值 最大值 MAXCOLUMNS 2000 20000 表4 MAXCOLUMNS可选参数的行为图 MAXCOLUMNS值 在文件Header选项中的列数 考虑的最终值 在加载项中未指定 5 2000 在加载项中未指定 6000 6000 40 7 文件header列数与MAXCOLUMNS值,两者中的最大值 22000 40 20000 60 在加载项中未指定 CSV文件第一行的列数与MAXCOLUMNS值,两者中的最大值 对于设置MAXCOLUMNS Option的最大值,要求executor具有足够的内存,否则,数据加载会由于内存不足的错误而失败。
  • 示例 data.csv源文件数据如下所示: ID,date,country,name,phonetype,serialname,salary4,2014-01-21 00:00:00,xxx,aaa4,phone2435,ASD66902,150035,2014-01-22 00:00:00,xxx,aaa5,phone2441,ASD90633,150046,2014-03-07 00:00:00,xxx,aaa6,phone294,ASD59961,15005 CREATE TABLE carbontable(ID int, date Timestamp, country String, name String, phonetype String, serialname String,salary int) STORED AS carbondata; LOAD DATA inpath 'hdfs://hacluster/tmp/data.csv' INTO table carbontable options('DELIMITER'=',');
  • 注意事项 在执行此命令之前,应将旧表的表结构定义schema和数据复制到新数据库位置。 对于旧版本仓库,源集群和目的集群的时区应该相同。 新的数据库和旧数据库的名字应该相同。 执行命令前,旧表的表结构定义schema和数据应该复制到新的数据库位置。 如果表是聚合表,则应将所有聚合表复制到新的数据库位置。 如果旧集群使用HIVE元数据库来存储表结构,则刷新将不起作用,因为文件系统中不存在表结构定义schema文件。
  • 注意事项 表必须已经存在。 用户应属于数据加载组以执行数据加载操作。默认情况下,数据加载组被命名为“ficommon”。 CarbonData表不支持Overwrite。 源表和目标表的数据类型应该相同,否则原表中的数据将被视为Bad Records。 INSERT INTO命令不支持部分成功(partial success),如果存在Bad Records,该命令会失败。 在从源表插入数据到目标表的过程中,无法在源表中加载或更新数据。 若要在INSERT操作期间启用数据加载或更新,请将以下参数配置为“true”。 “carbon.insert.persist.enable”=“true” 默认上述参数配置为“false”。 启用该参数将降低INSERT操作的性能。
  • 示例 create database productdb; use productdb; CREATE TABLE productSalesTable(a int,b string,c string) stored as carbondata; create index productNameIndexTable on table productSalesTable(c) as 'carbondata'; insert into table productSalesTable select 1,'a','aaa'; create database productdb2; 使用hdfs命令将productdb数据库下的productSalesTable和productNameIndexTable 拷贝到productdb2。 refresh table productdb2.productSalesTable ; refresh table productdb2.productNameIndexTable ; explain select * from productdb2.productSalesTable where c = 'aaa'; //可以发现该查询命令没有使用索引表 REGISTER INDEX TABLE productNameIndexTable ON productdb2.productSalesTable; explain select * from productdb2.productSalesTable where c = 'aaa'; //可以发现该查询命令使用了索引表
  • 命令语法 ALTER TABLE [db_name.]table_name ADD COLUMNS (col_name data_type,...) TBLPROPERTIES(''COLUMNPROPERTIES.columnName.shared_column'='sharedFolder.sharedColumnName,...', 'DEFAULT.VALUE.COLUMN_NAME'='default_value');
  • 参数描述 表1 ADD COLUMNS参数描述 参数 描述 db_name 数据库名。若未指定,则选择当前数据库。 table_name 表名。 col_name data_type 带数据类型且用逗号分隔的列的名称。列名称包含字母,数字和下划线(_)。 说明: 创建CarbonData表时,不要将列名命名为tupleId,PositionId和PositionReference,因为将在UPDATE,DELETE和二级索引命令内部使用这些名称。
  • 示例 ALTER TABLE carbon ADD COLUMNS (a1 INT, b1 STRING); ALTER TABLE carbon ADD COLUMNS (a1 INT, b1 STRING) TBLPROPERTIES('COLUMNPROPERTIES.b1.shared_column'='sharedFolder.b1'); ALTER TABLE carbon ADD COLUMNS (a1 INT, b1 STRING) TBLPROPERTIES('DEFAULT.VALUE.a1'='10');
  • 示例 假设表包含4个列,分别命名为a1,b1,c1和d1。 删除单个列: ALTER TABLE carbon DROP COLUMNS (b1); ALTER TABLE test_db.carbon DROP COLUMNS (b1); 删除多个列: ALTER TABLE carbon DROP COLUMNS (b1,c1); ALTER TABLE test_db.carbon DROP COLUMNS (b1,c1);
  • 参数描述 表1 ALTER TABLE COMPACTION参数描述 Parameter Description db_name 数据库名。若未指定,则选择当前数据库。 table_name 表名。 MINOR Minor合并,详见合并Segments。 MAJOR Major合并,详见合并Segments。 SEGMENT_INDEX 这会将一个segment内的所有Carbon索引文件(.carbonindex)合并为一个Carbon索引合并文件(.carbonindexmerge)。 这增强了首次查询性能。详见表1。 CUSTOM Custom合并,详见合并Segments。
  • 示例 ALTER TABLE ProductDatabase COMPACT 'MINOR'; ALTER TABLE ProductDatabase COMPACT 'MAJOR'; ALTER TABLE ProductDatabase COMPACT 'SEGMENT_INDEX'; ALTER TABLE ProductDatabase COMPACT 'CUSTOM' WHERE SEGMENT.ID IN (0, 1);
  • 系统响应 由于为后台运行,ALTER TABLE COMPACTION命令不会显示压缩响应。 如果想要查看MINOR合并和MAJOR合并的响应结果,用户可以检查日志或运行SHOW SEGMENTS命令查看。 示例: +------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+| ID | Status | Load Start Time | Load Time Taken | Partition | Data Size | Index Size | File Format |+------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+| 3 | Success | 2020-09-28 22:53:26.336 | 3.726S | {} | 6.47KB | 3.30KB | columnar_v3 || 2 | Success | 2020-09-28 22:53:01.702 | 6.688S | {} | 6.47KB | 3.30KB | columnar_v3 || 1 | Compacted | 2020-09-28 22:51:15.242 | 5.82S | {} | 6.50KB | 3.43KB | columnar_v3 || 0.1 | Success | 2020-10-30 20:49:24.561 | 16.66S | {} | 12.87KB | 6.91KB | columnar_v3 || 0 | Compacted | 2020-09-28 22:51:02.6 | 6.819S | {} | 6.50KB | 3.43KB | columnar_v3 |+------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+ 其中, Compacted表示该数据已被合并。 0.1表示segment0与segment1合并之后的结果。 数据合并前后的其他操作没有差别。 被合并的segments(例如segment0和segment1)即成为无用的segments,会占用空间,因此建议合并之后使用CLEAN FILES命令进行彻底删除,再进行其他操作。CLEAN FILES命令的使用方法可参考CLEAN FILES。
  • 操作场景 本章节根据超过50个测试用例总结得出建议,帮助用户创建拥有更高查询性能的CarbonData表。 表1 CarbonData表中的列 Column name Data type Cardinality Attribution msname String 3千万 dimension BEGIN_TIME bigint 1万 dimension host String 1百万 dimension dime_1 String 1千 dimension dime_2 String 500 dimension dime_3 String 800 dimension counter_1 numeric(20,0) NA measure ... ... NA measure counter_100 numeric(20,0) NA measure
  • 操作步骤 使用客户端安装用户登录A集群客户端所在节点。 使用客户端用户执行以下命令,配置环境变量。 source /opt/client/bigdata_env source /opt/client/Spark2x/component_env 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。 kinit carbondatauser carbondatauser需要为原始数据的使用者,即拥有表的读写权限。 该用户需要加入hadoop,hive组,主组选择hadoop组,并关联角色System_administrator。 执行以下命令连接数据库,并查看表的数据在HDFS保存的位置: spark-beeline desc formatted 原始数据的表名称; 查看系统显示的信息中“Location”表示数据文件所在目录。 使用客户端安装用户登录B集群客户端所在节点,并执行以下命令,配置环境变量。 source /opt/client/bigdata_env source /opt/client/Spark2x/component_env 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。 kinit carbondatauser2 carbondatauser2需要为上传数据的用户。 该用户需要加入hadoop,hive组,主组选择hadoop组,并关联角色System_administrator。 执行spark-beeline命令连接数据库。 原始数据对应的数据库是否存在? 是,执行9。 否,执行命令create database 数据库名称,创建一个同名的数据库,然后执行9。 将原始数据从集群A的HDFS目录中,拷贝数据到集群B的HDFS中。 在集群B上传数据时,上传目录中需要存在与原始目录有相同的数据库以及表名目录,且上传用户需要有在此目录写入数据的权限。上传后该用户将拥有数据的读写权限。 例如,原始数据保存在“/user/carboncadauser/warehouse/db1/tb1”,则在新集群中数据可以保存在“/user/carbondatauser2/warehouse/db1/tb1”中: 下载原始数据到集群A的“/opt/backup”目录下: hdfs dfs -get /user/carboncadauser/warehouse/db1/tb1 /opt/backup 拷贝集群A的原始数据到集群B客户端节点的“/opt/backup”目录下: scp /opt/backup root@集群B客户端节点IP:/opt/backup 上传拷贝到集群B的数据到HDFS中: hdfs dfs -put /opt/backup /user/carbondatauser2/warehouse/db1/tb1 在集群B的客户端环境执行以下命令,在Hive中生成原始数据对应的表所关联的元数据: REFRESH TABLE $dbName.$tbName; $dbName和$tbName分别表示数据对应的数据库名称以及表名称。 如果原表存在索引表,执行9和10,将集群A的索引表目录迁移到集群B。 执行以下命令,为CarbonData表注册索引表(注意,如果原表没有创建索引表,则不需要执行此步骤): REGISTER INDEX TABLE $tableName ON $maintable; $tableName和$maintable分别表示索引表名称和主表名称。
  • CarbonData主要规格 表1 CarbonData主要规格 实体 测试值 测试环境 表数 10000 3个节点,每个executor 4个CPU核,20GB。Driver内存5GB,3个Executor。 总列数:107 String:75 Int:13 BigInt:7 Timestamp:6 Double:6 表的列数 2000 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。 原始CSV文件大小的最大值 200GB 17个cluster节点,每个executor 150GB,25个CPU核。Driver内存10 GB,17个Executor。 每个文件夹的CSV文件数 100个文件夹,每个文件夹10个文件,每个文件大小50MB。 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。 加载文件夹数 10000 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。
共100000条