hive-0.13.1啟動緩慢的原因
發現時間主要消耗在以下3個地方:
1. hadoopjar的時候要把相關的jar包上傳到hdfs中(這里大概消耗5s,hive0.11一樣,這個地方不太好優化)
2. 在每次hive cli啟動的時候,初始化HiveMetaStore時,在init時,會調用以下3個方法,創建default db,role ,admin。
詳細代碼:
synchronized(HMSHandler.class) {
createDefaultDB();
createDefaultRoles();
addAdminUsers();
}synchronized(HMSHandler.class) {
createDefaultDB();
createDefaultRoles();
addAdminUsers();
}
生成環境這些都是有的,不須要每次都創建。這里能夠直接凝視掉.
3. 還有5s是在載入.hiverc的文件時造成的。
在做Create function的analyze時。會通過FunctionSemanticAnalyzer類的addEntities方法操作元數據。在hive0.11中是沒有這種方法的。
關於這種方法。看說明是和function的權限有關系的,我們眼下不須要。
Add writeentities to the semantic analyzer to restrict function creation to priviligedusers.
在測試環境直接凝視掉沒有發現什么影響。
詳細實現放在后面分析。
解決方式:
14/09/0116:06:12 INFO Configuration.deprecation: mapred.reduce.tasks is deprecated.Instead, use mapreduce.job.reduces
14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size is deprecated.Instead, use mapreduce.input.fileinputformat.split.minsize
14/09/0116:06:12 INFO Configuration.deprecation:mapred.reduce.tasks.speculative.execution is deprecated. Instead, usemapreduce.reduce.speculative
14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size.per.node isdeprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.node
14/09/0116:06:12 INFO Configuration.deprecation: mapred.input.dir.recursive isdeprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive
14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size.per.rack isdeprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack
14/09/0116:06:12 INFO Configuration.deprecation: mapred.max.split.size is deprecated.Instead, use mapreduce.input.fileinputformat.split.maxsize
14/09/0116:06:12 INFO Configuration.deprecation:mapred.committer.job.setup.cleanup.needed is deprecated. Instead, usemapreduce.job.committer.setup.cleanup.needed
Logginginitialized using configuration infile:/usr/local/hive-0.13.0/conf/hive-log4j.properties
hive>
上面的一些啟動信息就是:
Mysql的初始化信息,
須要設置mysql服務自己主動啟動