MRS是否支持同時運行多個Flume任務?
Flume客戶端可以包含多個獨立的數據流,即在一個配置文件properties.properties中配置多個Source、Channel、Sink。這些組件可以鏈接以形成多個流。
例如在一個配置中配置兩個數據流,示例如下:
server.sources = source1 source2
server.sinks = sink1 sink2
server.channels = channel1 channel2
#dataflow1
server.sources.source1.channels = channel1
server.sinks.sink1.channel = channel1
#dataflow2
server.sources.source2.channels = channel2
server.sinks.sink2.channel = channel2
如何修改FlumeClient的日志為標準輸出日志?
1.登錄Flume客戶端安裝節點。
2.進入Flume客戶端安裝目錄,假設Flume客戶端安裝路徑為“/opt/FlumeClient”,可以執行以下命令。
cd /opt/FlumeClient/fusioninsight-flume-1.9.0/bin
3.執行 ./flume-manage.sh stop force 命令,停止FlumeClient。
4.執行vi ../conf/log4j.properties命令,打開log4j.properties文件,修改“flume.root.logger”的取值為“${flume.log.level},console”。
5.執行 ./flume-manage.sh start force 命令,重啟FlumeClient。
6.修改完成后,請檢查docker配置信息是否正確。
Hadoop組件jar包位置和環境變量的位置在哪里?
- hadoopstreaming.jar位置在 /opt/share/hadoop-streaming- * 目錄下。其中*由Hadoop版本決定。
- jdk環境變量:/opt/client/JDK/component_env
- Hadoop組件的環境變量位置:/opt/client/HDFS/component_env
- Hadoop客戶端路徑:/opt/client/HDFS/hadoop
HBase支持的壓縮算法有哪些?
HBase目前支持的壓縮算法有snappy、lz4和gz。
MRS是否支持通過Hive的HBase外表將數據寫入到HBase?
不支持。
Hive on HBase只支持查詢,不支持更改數據。
如何查看HBase日志?
1.使用root用戶登錄集群的Master節點。
2.執行su - omm命令,切換到omm用戶。
3.執行 cd /var/log/Bigdata/hbase/ 命令,進入到“/var/log/Bigdata/hbase/”目錄,即可查看HBase日志信息。
HBase表如何設置和修改數據保留期?
- 創建表時指定:
創建t_task_log表,列族f, TTL設置86400秒過期。
create 't_task_log',{NAME => 'f', TTL=>'86400'}
- 在已有表的基礎上指定:
alter "t_task_log",NAME=>'data',TTL=>'86400' #設置TTL值,作用于列族data
如何修改HDFS的副本數?
搜索并修改“dfs.replication”的值,合理修改這個數值,該參數取值范圍為1~16,重啟HDFS實例。
如何修改HDFS主備倒換類?
當MRS 3.x版本集群使用HDFS連接NameNode報類org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider無法找到時,是由于MRS 3.x版本集群HDFS的主備倒換類默認為該類,可通過如下方式解決。
- 方式一:添加hadoop-plugins-xxx.jar到程序的classpath或者lib目錄中。
hadoop-plugins-xxx.jar包一般在HDFS客戶端目錄下:$HADOOP_HOME/share/hadoop/common/lib/hadoop-plugins-8.0.2-302023.jar
- 方式二:將HDFS的如下配置項修改為開源類:
dfs.client.failover.proxy.provider.hacluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
DynamoDB的number在Hive表中用什么類型比較好?
Hive支持smallint。
推薦使用smallint類型。
HiveDriver是否支持對接dbcp2?
Hive driver不支持對接dbcp2數據庫連接池。dbcp2數據庫連接池調用isValid方法檢查連接是否可用,而Hive對于這個方法的實現就是直接報錯。
用戶A如何查看用戶B創建的Hive表?
MRS 3.x之前版本
1.登錄MRS Manager,選擇“系統設置 > 權限配置 > 角色管理”。
2.單擊“添加角色”,輸入“角色名稱”和“描述”。
3.在“權限”的表格中選擇“Hive > Hive Read Write Privileges”。
4.在數據庫列表中單擊用戶B創建的表所在的數據庫名稱,顯示用戶B創建的表。
5.在用戶B創建的表的“權限”列,勾選“Select”。
6.單擊“確定”,返回“角色”。
7.選擇“系統設置 > 用戶管理”,在用戶A所在的行,單擊“修改”,為用戶A綁定新創建的角色,單擊“確定”,等待5分鐘左右即可訪問到用戶B創建的表。
MRS 3.x及之后版本
1.登錄FusionInsight Manager,選擇“集群 > 服務 > Hive > 更多”,查看“啟用Ranger鑒權”是否置灰。
?是,執行9。
?否,執行2-8。
2.登錄FusionInsight Manager,選擇“系統 > 權限 > 角色”。
3.單擊“添加角色”,輸入“角色名稱”和“描述”。
4.在“配置資源權限”的表格中選擇“待操作集群的名稱 > Hive > Hive讀寫權限”。
5.在數據庫列表中單擊用戶B創建的表所在的數據庫名稱,顯示用戶B創建的表。
6.在用戶B創建的表的“權限”列,勾選“查詢”。
7.單擊“確定”,返回“角色”。
8.單擊“用戶”,在用戶A所在行,單擊“修改”,為用戶A綁定新創建的角色,單擊“確定”,等待5分鐘左右即可訪問到用戶B創建的表。
9.添加Hive的Ranger訪問權限策略:
a.使用Hive管理員用戶登錄FusionInsight Manager,選擇“集群 > 服務 > Ranger”,單擊“Ranger WebUI”右側的鏈接進入Ranger管理界面。
b.在首頁中單擊“HADOOP SQL”區域的組件插件名稱,例如“Hive”。
c.在“Access”頁簽單擊“Add New Policy”,添加Hive權限控制策略。
d.在“Create Policy”頁面填寫如下內容:
-Policy Name:策略名稱,例如:table_test_hive。
-database:填寫或選擇用戶B創建的表所在的數據庫,例如:default。
-table:填寫或選擇用戶B創建的表,例如:test。
-column:填寫并選擇對應的列,例如:*。
-在“Allow Conditions”區域,單擊“Select User”下選擇框選擇用戶A,單擊“Add Permissions”,勾選“select”。
-單擊“Add”。
10.添加HDFS的Ranger訪問權限策略:
a.使用rangeradmin用戶登錄FusionInsight Manager,選擇“集群 > 服務 > Ranger”,單擊“Ranger WebUI”右側的鏈接進入Ranger管理界面。
b.在首頁中單擊“HDFS”區域的組件插件名稱,例如“hacluster”。
c.單擊“Add New Policy”,添加HDFS權限控制策略。
d.在“Create Policy”頁面填寫如下內容:
-Policy Name:策略名稱,例如:tablehdfs_test。
-Resource Path:配置用戶B創建的表所在的HDFS路徑,例如:/user/hive/warehouse/ 數據庫名稱 /表名
-在“Allow Conditions”區域,單擊“Select User”下選擇框選擇用戶A,單擊“Add Permissions”,勾選“Read”和“Execute”。
-單擊“Add”。
11.在策略列表可查看策略的基本信息。等待策略生效后,用戶A即可查看用戶B創建的表。
Hive查詢數據是否支持導出?
Hive查詢數據支持導出,請參考如下語句進行導出:
insert overwrite local directory "/tmp/out/" row format delimited fields terminated by "\t" select * from table;
Hive使用beeline-e執行多條語句報錯如何處理?
MRS 3.x版本Hive使用beeline執行 beeline -e "use default;show tables;" 命令報錯:
Error while compiling statement: FAILED: ParseException line 1:11 missing EOF at ';' near 'default' (state=42000,code=40000)
處理方法:
- 方法一:使用beeline --entirelineascommand=false -e "use default;show tables; "命令。
- 方法二:
a. 在Hive客戶端如“/opt/Bigdata/client/Hive”目錄下修改component_env文件,修改
export CLIENT_HIVE_ENTIRELINEASCOMMAND=true為export CLIENT_HIVE_ENTIRELINEASCOMMAND=false。
修改component_env文件


b. 執行如下命令驗證配置。
source /opt/Bigdata/client/bigdata_env
beeline -e "use default;show tables;"
添加Hive服務后,提交hivesql/hivescript作業失敗如何處理?
該問題是由于提交作業的用戶所在用戶組綁定的MRS CommonOperations策略權限在同步到Manager中后沒有Hive相關權限,處理方法如下:
1.添加Hive服務完成。
2.登錄IAM服務控制臺,創建一個用戶組,該用戶組所綁定策略和提交作業用戶所在用戶組權限相同。
3.將提交作業的用戶添加到新用戶組中。
4.刷新MRS控制臺集群詳情頁面,“IAM用戶同步”會顯示“未同步”。
5.單擊“IAM用戶同步”右側的“同步”。同步狀態在MRS控制臺頁面選擇“操作日志”查看當前用戶是否被修改。
- 是,則可以重新提交Hive作業。
- 否,則檢視上述步驟是否全部已執行完成。
-是,請聯系運維人員處理
-否,請等待執行完成后再提交Hive作業。
Hue下載的Excel無法打開如何處理?
說明本案例適用于MRS 3.x之前版本。
1.以root用戶登錄任意一個Master節點,切換到omm用戶。
su - omm
2.使用如下命令查看當前節點是否為OMS主節點。
sh ${BIGDATA_HOME}/om-0.0.1/sbin/status-oms.sh
回顯active即為主節點,否則請登錄另一個Master節點。
oms主節點


3.進入“{BIGDATA_HOME}/Apache-httpd-*/conf”目錄。
cd ${BIGDATA_HOME}/Apache-httpd-*/conf
4.打開httpd.conf文件。
vim httpd.conf
5.在文件中搜索21201,并刪除文件中的如下內容。proxy_ip和proxy_port對應實際環境中的值。
ProxyHTMLEnable On
SetEnv PROXY_PREFIX=//[proxy_ip]:[proxy_port]
ProxyHTMLURLMap (https?:\/\/[^:]*:[0-9]*.*) ${PROXY_PREFIX}/proxyRedirect=$1 RV
待刪除內容


6.退出并保存修改。
7.再次打開httpd.conf文件,搜索 proxy_hue_port ,并刪除如下內容。
ProxyHTMLEnable On
SetEnv PROXY_PREFIX=//[proxy_ip]:[proxy_port]
ProxyHTMLURLMap (https?:\/\/[^:]*:[0-9]*.*) ${PROXY_PREFIX}/proxyRedirect=$1 RV
待刪除內容


8.退出并保存修改。
9.執行如下命令重啟httpd。
sh ${BIGDATA_HOME}/Apache-httpd-*/setup/restarthttpd.sh
10.檢查備Master節點上的httpd.conf文件是否已修改,若已修改則處理完成,若未修改,參考上述步驟進行修改備Master節點的httpd.conf文件,無需重啟httpd。
11.重新下載Excel即可打開。
Hue連接hiveserver,不釋放session,報錯over max user connections如何處理?
適用版本:MRS 3.1.0及之前的MRS 3.x版本。
1.修改兩個Hue節點的以下文件:
/opt/Bigdata/FusionInsight_Porter_8. /install/FusionInsight-Hue- /hue/apps/beeswax/src/beeswax/models.py
2.修改文件中的396和404行的值
q = self.filter(owner=user, application=application).exclude(guid='').exclude(secret='')
改為
q = self.filter(owner=user, application=application).exclude(guid=None).exclude(secret=None)

如何重置Kafka數據?
刪除Kafka topic信息即重置Kafka數據,具體命令請參考:
- 刪除topic:
kafka-topics.sh --delete --zookeeper ZooKeeper集群業務IP:2181/kafka --topic topicname - 查詢所有topic:
kafka-topics.sh --zookeeper ZooKeeper集群業務IP:2181/kafka --list
執行刪除命令后topic數據為空則此topic會立刻被刪除,如果有數據則會標記刪除,后續Kafka會自行進行實際刪除。
Kafka目前支持的訪問協議類型有哪些?
當前支持4種協議類型的訪問:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
消費Kafka Topic時報錯“Not Authorized to access group XXX”如何處理?
該問題是由于集群的Ranger鑒權和集群自帶的ACL鑒權沖突導致。Kafka集群使用自帶的ACL進行權限訪問控制,且集群的Kafka服務也開啟Ranger鑒權控制時,該組件所有鑒權將由Ranger統一管理,原鑒權插件設置的權限將會失效,導致ACL權限授權未生效。可通過關閉Kafka的Ranger鑒權并重啟Kafka服務來處理該問題。操作步驟如下:
1.登錄FusionInsight Manager頁面,選擇“集群 > Kafka”。
2.在服務“概覽”頁面右上角單擊“更多”,選擇“停用Ranger鑒權”。在彈出的對話框中輸入密碼,單擊“確定”,操作成功后單擊“完成”。
3.在服務“概覽”頁面右上角單擊“更多”,選擇“重啟服務”,重啟Kafka服務。
Kudu支持的壓縮算法有哪些?
Kudu目前支持的壓縮算法有 snappy 、lz4和 zlib ,默認是 lz4 。
如何查看Kudu日志?
1.登錄集群的Master節點。
2.執行su - omm命令,切換到omm用戶。
3.執行 cd /var/log/Bigdata/kudu/ 命令,進入到“/var/log/Bigdata/kudu/”目錄,即可查看Kudu日志信息。
新建集群Kudu服務異常如何處理?
查看Kudu服務異常日志
1.登錄MRS管理控制臺。
2.單擊集群名稱進入集群詳情頁面。
3.選擇“組件管理 > Kudu > 實例”,找到異常實例所屬的IP。
若集群詳情頁面沒有“組件管理”頁簽,請先完成IAM用戶同步(在集群詳情頁的“概覽”頁簽,單擊“IAM用戶同步”右側的“同步”進行IAM用戶同步)。
4.登錄異常實例IP所在節點,查看Kudu日志。
cd /var/log/Bigdata/Kudu
[root@node-master1AERu kudu]# ls
healthchecklog runninglog startlog
其中healthchecklog目錄保存Kudu健康檢查日志,startlog保存啟動日志,runninglog保存Kudu進程運行日志。
[root@node-master1AERu logs]# pwd
/var/log/Bigdata/kudu/runninglog/master/logs
[root@node-master1AERu logs]# ls -al
kudu-master.ERROR kudu-master.INFO kudu-master.WARNING
運行日志分ERROR、INFO、WARNING三類, 每類會單獨打印到相應的文件中,通過cat命令即可查看。
已知Kudu服務異常處理
日志/var/log/Bigdata/kudu/runninglog/master/logs/kudu-master.INFO出現異常打印:
"Unable to init master catalog manager: not found: Unable to initialize catalog manager: Failed to initialize sys tables async: Unable to load consensus metadata for tablet 0000000000000000000000: xxx"
如果該異常是Kudu服務初次安裝時出現,可能是KuduMaster沒能同時啟動,造成數據不一樣導致啟動失敗。可以通過如下步驟清空數據目錄,重啟Kudu服務解決。若非初次安裝,清空數據目錄會造成數據丟失,請先進行數據遷移再進行數據目錄清空操作慎重操作。
1.查找數據目錄fs_data_dir, fs_wal_dir, fs_meta_dir。
find /opt -name master.gflagfile
cat /opt/Bigdata/FusionInsight_Kudu_*/*_KuduMaster/etc/master.gflagfile | grep fs_
2.在集群詳情頁面選擇“組件管理 > Kudu”,單擊“停止服務”。
3.在所有KuduMaster、KuduTserver的節點清空Kudu 數據目錄,如下命令以兩個數據盤為例,具體命令請以實際情況為準。
rm -Rvf /srv/Bigdata/data1/kudu, rm -Rvf /srv/Bigdata/data2/kudu
4.在集群詳情頁面選擇“組件管理 > Kudu”,選擇“更多 > 重啟服務”。
5.查看Kudu服務狀態和日志。
OpenTSDB是否支持Python的接口?
OpenTSDB基于HTTP提供了訪問其的RESTful接口,而RESTful接口本身具有語言無關性的特點,凡是支持HTTP請求的語言都可以對接OpenTSDB,所以OpenTSDB支持Python的接口。
Presto如何配置其他數據源?
本指導以mysql為例。
- MRS 1.x及MRS 3.x版本。
1.登錄MRS管理控制臺。
2.單擊集群名稱進入集群詳情頁面。
3.選擇“組件管理 > Presto”。設置“參數類別”為“全部配置”,進入Presto配置界面修改參數配置。
4.搜索“connector-customize”配置。
5.按照配置項說明填寫對應參數。
名稱:mysql.connector.name
值:mysql
6.填寫connector-customize參數名稱和參數值。
| 名稱 | 值 | 參數說明 |
|---|---|---|
| mysql.connection-url | jdbc:mysql://xxx.xxx.xxx.xxx:3306 | 數據庫連接池 |
| mysql.connection-user | xxxx | 數據庫登錄用戶名 |
| mysql.connection-password | xxxx | 數據庫密碼 |
7.重啟Presto服務。
8.啟用Kerberos認證的集群,執行以下命令連接本集群的Presto Server。
presto_cli.sh --krb5-config-path {krb5.conf文件路徑} --krb5-principal {用戶principal} --krb5-keytab-path {user.keytab文件路徑} --user {presto用戶名}
i.登錄Presto后執行show catalogs命令,確認可以查詢Presto的數據源列表mysql。


執行show schemas from mysql命令即可查詢mysql數據庫。
- MRS 2.x版本。
1.創建mysql.properties配置文件,內容如下:
connector.name=mysql
connection-url=jdbc:mysql://mysqlIp:3306
connection-user=用戶名
connection-password=密碼

說明l? mysqlIp為mysql實例ip,需要和mrs網絡互通 。
l? 用戶名和密碼為登錄mysql的用戶名和密碼。
2.分別上傳配置文件到master節點(Coordinator實例所在節點)的/opt/Bigdata/MRS_Current/1_14_Coordinator/etc/catalog/和core節點的/opt/Bigdata/MRS_Current/1_14_Worker/etc/catalog/目錄下(路徑以集群實際路徑為準),文件屬組改為omm:wheel。
3.重啟Presto服務。
MRS如何連接spark-shell?
1.用root用戶登錄集群Master節點。
2.配置環境變量。
source 客戶端安裝目錄/bigdata_env
3.如果當前集群已啟用Kerberos認證,執行以下命令認證當前用戶。如果當前集群未啟用Kerberos認證,則無需執行此命令。
kinit MRS集群業務用戶
例如:
?“機機”用戶請執行:kinit -kt user.keytab sparkuser
?“人機”用戶請執行:kinit sparkuser
4.執行如下命令連接Spark組件的客戶端。
spark-shell
MRS如何連接spark-beeline?
1.用root用戶登錄集群Master節點。
2.配置環境變量。
source 客戶端安裝目錄/bigdata_env
3.如果當前集群已啟用Kerberos認證,執行以下命令認證當前用戶。如果當前集群未啟用Kerberos認證,則無需執行此命令。
kinit MRS集群業務用戶
例如:
?“機機”用戶請執行:kinit -kt user.keytab sparkuser
?“人機”用戶請執行:kinit sparkuser
4.執行如下命令連接Spark組件的客戶端。
spark-beeline
5.在spark-beeline中執行命令,例如在obs://mrs-word001/table/目錄中創建表test。
create table test(id int) location 'obs://mrs-word001/table/';
6.執行如下命令查詢所有表,返回結果中存在表test,即表示訪問OBS成功。
show tables;
Spark驗證返回已創建的表名


7.使用“Ctrl + C”退出spark beeline。
SparkJob對應的運行日志保存在哪里?
- spark job沒有完成的任務日志保存在Core節點的/srv/BigData/hadoop/data1/nm/containerlogs/。
- spark job完成的任務日志保存在HDFS的/tmp/logs/ 用戶名 /logs。
MRS的Storm集群提交任務時如何指定日志路徑?
客戶可以根據自己的需求,修改MRS的流式Core節點上的/opt/Bigdata/MRS_XXX /1_XX _Supervisor/etc/worker.xml文件,將標簽filename的值設定為客戶需要的路徑,然后在Manager頁面重啟對應實例。
建議客戶盡量不要修改MRS默認的日志配置,可能會造成日志系統異常。
如何檢查Yarn的ResourceManager配置是否正常?
本案例適用于MRS 3.x之前版本。
登錄MRS Manager頁面,選擇“服務管理 > Yarn > 實例”。
1.分別單擊兩個ResourceManager名稱,選擇“更多 > 同步配置”,并選擇不勾選“重啟配置過期的服務或實例。”。
2.單擊“是”進行配置同步。
3.以root用戶分別登錄Master節點。
4.執行 cd /opt/Bigdata/MRS_Current/ _ _ResourceManager/etc_UPDATED/ 命令進入etc_UPDATED目錄。
5.執行grep '.queues' capacity-scheduler.xml -A2找到配置的所有隊列,并檢查隊列和Manager頁面上看到的隊列是否一一對應。
root-default在Manager頁面隱藏,在頁面看不到屬于正常現象。


6.執行grep '.capacity' capacity-scheduler.xml -A2找出各隊列配置的值,檢查每個隊列配置的值是否和Manager上看到的一致。并檢查所有隊列配置的值的總和是否是100。
- 是,則說明配置正常。
- 否,則說明配置異常,請執行后續步驟修復。
7.登錄MRS Manager頁面,選擇“主機管理”。
8.查找主Master節點,主機名稱前帶實心五角星的Master節點即為主Master節點。
9.以root用戶登錄主Master節點。
10.執行su - omm切換到omm用戶。
11.執行sh /opt/Bigdata/om-0.0.1/sbin/restart-controller.sh重啟Controller。
請在Manager頁面沒有其他操作后重啟Controller,重啟Controller對大數據組件業務無影響。
12.重新執行步驟1~步驟7同步ResourceManager的配置并檢查配置是否正常。
配置同步完成后Manager頁面可能顯示配置過期,該顯示不影響業務,是由于組件沒有加載最新的配置,待后續組件重啟的時會自動加載。
如何修改Clickhouse服務的allow_drop_detached配置項?
用root用戶登錄Clickhouse客戶端所在節點。
1.進入客戶端目錄,配置環境變量。
cd /opt/客戶端安裝目錄
source bigdata_env
2.如果當前集群已啟用Kerberos認證,執行以下命令認證當前用戶。如果當前集群未啟用Kerberos認證,則無需執行此命令。
kinit MRS集群用戶

說明該用戶必須具有Clickhouse管理員權限。
3.執行命令clickhouse client --host 192.168.42.90 --secure -m ,其中192.168.42.90為ClickHouseServer實例節點IP,執行結果如下:
[root@server-2110082001-0017 hadoopclient]# clickhouse client --host 192.168.42.90 --secure -m
ClickHouse client version 21.3.4.25.
Connecting to 192.168.42.90:21427.
Connected to ClickHouse server version 21.3.4 revision 54447.
4.執行命令修改allow_drop_detached的值。
例如:設置allow_drop_detached=1
set allow_drop_detached=1;
5.執行如下命令查看allow_drop_detached的值:
SELECT * FROM system.settings WHERE name = 'allow_drop_detached';


6.執行命令 q; 退出clickhouse client。
執行Spark任務報內存不足告警如何處理?
問題現象
執行Spark任務就會報內存不足告警,告警id:18022,可用內存會陡降到0。
處理步驟
在SQL腳本前設置executor參數,限制executor的核數和內存。
例如設置如下:
set hive.execution.engine=spark;
set spark.executor.cores=2;
set spark.executor.memory=4G;
set spark.executor.instances=10;
參數值大小請根據實際業務情況調整。
ClickHouse系統表日志過大,如何添加定期刪除策略?
問題現象
客戶使用ClickHouse,系統表產生的日志過大,一次性刪除會耗費較長時間,客戶可以添加定期刪除策略,即添加TTL。
處理步驟
在ClickHouse客戶端給TTL的系統表執行如下語句:
alter table system.表名 modify TTL event_date + INTERVAL 保留天數 day;
注意該語句只是配置運行SQL節點的系統表的TTL,若所有節點都需要配置,則需要到每個節點上都執行該語句,但不建議使用on cluster語句,避免ClickHouse一直運行下去。
上述語句建議在低峰期運行,由于數據量較大,這個操作可能會比較慢。
SparkSQL訪問Hive分區表啟動Job前耗時較長如何處理?
問題背景
使用SparkSql訪問Hive的一個數據存放于OBS的一個分區表,但是運行速度卻很慢,并且會大量調用OBS的查詢接口。
SQL樣例:
select a,b,c from test where b=xxx
原因分析
按照設定,任務應該只掃描b=xxx的分區,但是查看任務日志可以發現,實際上任務卻掃描了所有的分區再來計算b=xxx的數據,因此任務計算的很慢。并且因為需要掃描所有文件,會有大量的OBS請求發送。
MRS默認開啟基于分區統計信息的執行計劃優化,相當于自動執行Analyze Table(默認開啟的設置方法為spark.sql.statistics.fallBackToHdfs=true,可通過配置為false關閉)。開啟后,SQL執行過程中會掃描表的分區統計信息,并作為執行計劃中的代價估算,例如對于代價評估中識別的小表,會廣播小表放在內存中廣播到各個節點上,進行join操作,大大節省shuffle時間。 此開關對于Join場景有較大的性能優化,但是會帶來OBS調用量的增加。
處理步驟
在SparkSQL中設置以下參數后再運行:
set spark.sql.statistics.fallBackToHdfs=false;
或者在啟動之前使用--conf設置這個值為false:
--conf spark.sql.statistics.fallBackToHdfs=false
spark.yarn.executor.memoryOverhead設置不生效如何處理?
問題現象
Spark任務需要調整executor的overhead內存,設置了參數spark.yarn.executor.memoryOverhead=4096,但實際計算的時候依舊按照默認值1024申請資源。
原因分析
從Spark 2.3版本開始,推薦使用新參數spark.executor.memoryOverhead設置executor的overhead內存大小,如果任務兩個參數都設置,則spark.yarn.executor.memoryOverhead的值不生效,以spark.executor.memoryOverhead的值為最終值。
同樣的參數還有driver的overhead內存設置:spark.driver.memoryOverhead
解決步驟
使用新版本參數設置executor的overhead內存:
spark.executor.memoryOverhead=4096
連接ClickHouse服務端異常報錯“code: 516”如何處理?
問題現象
使用clickhouse client命令連接ClickHouse服務端,報錯:
ClickHouse exception, code: 516, host: 192.168.0.198, port: 8443; Code: 516, e.displayText() = DB::Exception: clickDevelopuser: Authentication failed: password is incorrect or there is no user with such name
原因分析
執行連接ClickHouse服務端命令時,用戶名或者密碼錯誤。
解決步驟
在執行連接ClickHouse服務端命令時,請輸入正確的用戶名或者密碼。