自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Windows10系統(tǒng)下Hadoop和Hive開發(fā)環(huán)境搭建填坑指南

大數(shù)據(jù) Hadoop
筆者目前需要搭建數(shù)據(jù)平臺(tái),發(fā)現(xiàn)了Windows系統(tǒng)下,Hadoop和Hive等組件的安裝和運(yùn)行存在大量的坑,而本著有坑必填的目標(biāo),筆者還是花了幾個(gè)晚上的下班時(shí)候在多個(gè)互聯(lián)網(wǎng)參考資料的幫助下完成了Windows10系統(tǒng)下Hadoop和Hive開發(fā)環(huán)境的搭建。這篇文章記錄了整個(gè)搭建過(guò)程中的具體步驟、遇到的問(wèn)題和對(duì)應(yīng)的解決方案。

[[350069]]

本文轉(zhuǎn)載自微信公眾號(hào)「 Throwable」,作者 Throwable 。轉(zhuǎn)載本文請(qǐng)聯(lián)系 Throwable公眾號(hào)。

前提

筆者目前需要搭建數(shù)據(jù)平臺(tái),發(fā)現(xiàn)了Windows系統(tǒng)下,Hadoop和Hive等組件的安裝和運(yùn)行存在大量的坑,而本著有坑必填的目標(biāo),筆者還是花了幾個(gè)晚上的下班時(shí)候在多個(gè)互聯(lián)網(wǎng)參考資料的幫助下完成了Windows10系統(tǒng)下Hadoop和Hive開發(fā)環(huán)境的搭建。這篇文章記錄了整個(gè)搭建過(guò)程中的具體步驟、遇到的問(wèn)題和對(duì)應(yīng)的解決方案。

環(huán)境準(zhǔn)備

基于筆者的軟件版本潔癖,所有選用的組件都會(huì)使用當(dāng)前(2020-10-30)最高的版本。

軟件 版本 備注
Windows 10 操作系統(tǒng)
JDK 8 暫時(shí)不要選用大于等于JDK9的版本,因?yàn)閱?dòng)虛擬機(jī)會(huì)發(fā)生未知異常
MySQL 8.x 用于管理Hive的元數(shù)據(jù)
Apache Hadoop 3.3.0 -
Apache Hive 3.1.2 -
Apache Hive src 1.2.2 因?yàn)橹挥?code style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">1.x版本的Hive源碼提供了.bat啟動(dòng)腳本,有能力可以自己寫腳本就不用下此源碼包
winutils hadoop-3.3.0 HadoopWindows系統(tǒng)下的啟動(dòng)依賴

下面列舉部分組件對(duì)應(yīng)的下載地址:

  • Apache Hadoop 3.3.0:https://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
  • Apache Hive 3.1.2:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
  • Apache Hive 1.2.2 src:https://mirrors.bfsu.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-src.tar.gz
  • winutils:https://github.com/kontext-tech/winutils(如果下載速度慢,可以先把倉(cāng)庫(kù)導(dǎo)入gitee.com再下載,或者用筆者已經(jīng)同步好的倉(cāng)庫(kù)https://gitee.com/throwableDoge/winutils)

下載完這一些列軟件之后,MySQL正常安裝為系統(tǒng)服務(wù)隨系統(tǒng)自啟。解壓hadoop-3.3.0.tar.gz、apache-hive-3.1.2-bin.tar.gz、apache-hive-1.2.2-src.tar.gz和winutils到指定目錄:

 

接著把源碼包apache-hive-1.2.2-src.tar.gz解壓后的bin目錄下的文件拷貝到apache-hive-3.1.2-bin的bin目錄中:

 

然后把winutils中的hadoop-3.3.0\bin目錄下的hadoop.dll和winutils.exe文件拷貝到Hadoop的解壓目錄的bin文件夾下:

 

最后再配置一下JAVA_HOME和HADOOP_HOME兩個(gè)環(huán)境變量,并且在Path中添加%JAVA_HOME%\bin;和%HADOOP_HOME%\bin:

筆者本地安裝的JDK版本為1.8.0.212,理論上任意一個(gè)小版本的JDK8都可以。

接著用命令行測(cè)試一下,如果上述步驟沒(méi)問(wèn)題,控制臺(tái)輸出如下:

 

配置和啟動(dòng)Hadoop

在HADOOP_HOME的etc\hadoop子目錄下,找到并且修改下面的幾個(gè)配置文件:

「core-site.xml」(這里的tmp目錄一定要配置一個(gè)非虛擬目錄,別用默認(rèn)的tmp目錄,否則后面會(huì)遇到權(quán)限分配失敗的問(wèn)題)

  1. <configuration> 
  2.     <property> 
  3.         <name>fs.defaultFS</name
  4.         <value>hdfs://localhost:9000</value> 
  5.     </property>   
  6.     <property> 
  7.         <name>hadoop.tmp.dir</name
  8.         <value>/e:/LittleData/hadoop-3.3.0/data/tmp</value> 
  9.     </property>   
  10. </configuration> 

「hdfs-site.xml」(這里要預(yù)先創(chuàng)建nameNode和dataNode的數(shù)據(jù)存放目錄,注意一下每個(gè)目錄要以/開頭,筆者這里預(yù)先在HADOOP_HOME/data創(chuàng)建了nameNode和dataNode子目錄)

  1. <configuration> 
  2.     <property> 
  3.         <name>dfs.replication</name
  4.         <value>1</value> 
  5.     </property> 
  6.     <property> 
  7.         <name>dfs.http.address</name
  8.         <value>0.0.0.0:50070</value> 
  9.     </property> 
  10.     <property>     
  11.         <name>dfs.namenode.name.dir</name>     
  12.         <value>/e:/LittleData/hadoop-3.3.0/data/nameNode</value>     
  13.     </property>     
  14.     <property>     
  15.         <name>dfs.datanode.data.dir</name>     
  16.         <value>/e:/LittleData/hadoop-3.3.0/data/dataNode</value>   
  17.     </property> 
  18.     <property> 
  19.         <name>dfs.permissions.enabled</name
  20.         <value>false</value> 
  21.     </property> 
  22. </configuration> 

「mapred-site.xml」

  1. <configuration> 
  2.     <property> 
  3.         <name>mapreduce.framework.name</name
  4.         <value>yarn</value> 
  5.     </property> 
  6. </configuration> 

「yarn-site.xml」

  1. <configuration> 
  2.     <property> 
  3.         <name>yarn.nodemanager.aux-services</name
  4.         <value>mapreduce_shuffle</value> 
  5.     </property> 
  6.     <property> 
  7.         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name
  8.         <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
  9.     </property> 
  10. </configuration> 

至此,最小化配置基本完成。接著需要格式化namenode并且啟動(dòng)Hadoop服務(wù)。切換至$HADOOP_HOME/bin目錄下,使用CMD輸入命令hdfs namenode -format(格式化namenode切記不要重復(fù)執(zhí)行):

 

格式化namenode完畢后,切換至$HADOOP_HOME/sbin目錄下,執(zhí)行start-all.cmd腳本:

 

這里命令行會(huì)提示start-all.cmd腳本已經(jīng)過(guò)期,建議使用start-dfs.cmd和start-yarn.cmd替代。同理,如果執(zhí)行stop-all.cmd也會(huì)有類似的提示,可以使用stop-dfs.cmd和stop-yarn.cmd替代。start-all.cmd成功執(zhí)行后,會(huì)拉起四個(gè)JVM實(shí)例(見上圖中的Shell窗口自動(dòng)新建了四個(gè)Tab),此時(shí)可以通過(guò)jps查看當(dāng)前的JVM實(shí)例:

  1. λ jps 
  2. 19408 ResourceManager 
  3. 16324 NodeManager 
  4. 14792 Jps 
  5. 15004 NameNode 
  6. 2252 DataNode 

可見已經(jīng)啟動(dòng)了ResourceManager、NodeManager、NameNode和DataNode四個(gè)應(yīng)用,至此Hadoop的單機(jī)版已經(jīng)啟動(dòng)成功。通過(guò)stop-all.cmd命令退出這四個(gè)進(jìn)程??梢酝ㄟ^(guò)http://localhost:8088/查看調(diào)度任務(wù)的狀態(tài):

 

通過(guò)http://localhost:50070/去查看HDFS的狀態(tài)和文件:

 

重啟Hadoop的辦法:先執(zhí)行stop-all.cmd腳本,再執(zhí)行start-all.cmd腳本。

配置和啟動(dòng)Hive

Hive是構(gòu)筑于HDFS上的,所以務(wù)必確保Hadoop已經(jīng)啟動(dòng)。Hive在HDFS中默認(rèn)的文件路徑前綴是/user/hive/warehouse,因此可以先通過(guò)命令行在HDFS中創(chuàng)建此文件夾:

  1. hdfs dfs -mkdir /user/hive/warehouse 
  2. hdfs dfs -chmod -R 777 /user/hive/warehouse 

同時(shí)需要通過(guò)下面的命令創(chuàng)建并為tmp目錄賦予權(quán)限:

  1. hdfs dfs -mkdir /tmp 
  2. hdfs dfs -chmod -R 777 /tmp 

在系統(tǒng)變量中添加HIVE_HOME,具體的值配置為E:\LittleData\apache-hive-3.1.2-bin,同時(shí)在Path變量添加%HIVE_HOME%\bin;,跟之前配置HADOOP_HOME差不多。下載和拷貝一個(gè)mysql-connector-java-8.0.x.jar到$HIVE_HOME/lib目錄下:

 

創(chuàng)建Hive的配置文件,在$HIVE_HOME/conf目錄下已經(jīng)有對(duì)應(yīng)的配置文件模板,需要拷貝和重命名,具體如下:

  • $HIVE_HOME/conf/hive-default.xml.template => $HIVE_HOME/conf/hive-site.xml
  • $HIVE_HOME/conf/hive-env.sh.template => $HIVE_HOME/conf/hive-env.sh
  • $HIVE_HOME/conf/hive-exec-log4j.properties.template => $HIVE_HOME/conf/hive-exec-log4j.properties
  • $HIVE_HOME/conf/hive-log4j.properties.template => $HIVE_HOME/conf/hive-log4j.properties

 

修改hive-env.sh腳本,在尾部添加下面內(nèi)容:

  1. export HADOOP_HOME=E:\LittleData\hadoop-3.3.0 
  2. export HIVE_CONF_DIR=E:\LittleData\apache-hive-3.1.2-bin\conf 
  3. export HIVE_AUX_JARS_PATH=E:\LittleData\apache-hive-3.1.2-bin\lib 

修改hive-site.xml文件,主要修改下面的屬性項(xiàng):

屬性名 屬性值 備注
hive.metastore.warehouse.dir /user/hive/warehouse Hive的數(shù)據(jù)存儲(chǔ)目錄,這個(gè)是默認(rèn)值
hive.exec.scratchdir /tmp/hive Hive的臨時(shí)數(shù)據(jù)目錄,這個(gè)是默認(rèn)值
javax.jdo.option.ConnectionURL jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&amp;serverTimezone=UTC Hive元數(shù)據(jù)存放的數(shù)據(jù)庫(kù)連接
javax.jdo.option.ConnectionDriverName com.mysql.cj.jdbc.Driver Hive元數(shù)據(jù)存放的數(shù)據(jù)庫(kù)驅(qū)動(dòng)
javax.jdo.option.ConnectionUserName root Hive元數(shù)據(jù)存放的數(shù)據(jù)庫(kù)用戶
javax.jdo.option.ConnectionPassword root Hive元數(shù)據(jù)存放的數(shù)據(jù)庫(kù)密碼
hive.exec.local.scratchdir E:/LittleData/apache-hive-3.1.2-bin/data/scratchDir 創(chuàng)建本地目錄$HIVE_HOME/data/scratchDir
hive.downloaded.resources.dir E:/LittleData/apache-hive-3.1.2-bin/data/resourcesDir 創(chuàng)建本地目錄$HIVE_HOME/data/resourcesDir
hive.querylog.location E:/LittleData/apache-hive-3.1.2-bin/data/querylogDir 創(chuàng)建本地目錄$HIVE_HOME/data/querylogDir
hive.server2.logging.operation.log.location E:/LittleData/apache-hive-3.1.2-bin/data/operationDir 創(chuàng)建本地目錄$HIVE_HOME/data/operationDir
datanucleus.autoCreateSchema true 可選
datanucleus.autoCreateTables true 可選
datanucleus.autoCreateColumns true 可選
hive.metastore.schema.verification false 可選

修改完畢之后,在本地的MySQL服務(wù)新建一個(gè)數(shù)據(jù)庫(kù)hive,編碼和字符集可以選用范圍比較大的utf8mb4(雖然官方建議是latin1,但是字符集往大范圍選沒(méi)有影響):

 

上面的準(zhǔn)備工作做完之后,可以進(jìn)行Hive的元數(shù)據(jù)庫(kù)初始化,在$HIVE_HOME/bin目錄下執(zhí)行下面的腳本:

  1. hive --service schematool -dbType mysql -initSchema 

這里有個(gè)小坑,hive-site.xml文件的第3215行有個(gè)神奇的無(wú)法識(shí)別的符號(hào):

 

此無(wú)法識(shí)別符號(hào)會(huì)導(dǎo)致Hive的命令執(zhí)行異常,需要去掉。當(dāng)控制臺(tái)輸出Initialization script completed schemaTool completed的時(shí)候,說(shuō)明元數(shù)據(jù)庫(kù)已經(jīng)初始化完畢:

 

在$HIVE_HOME/bin目錄下,通過(guò)hive.cmd可以連接Hive(關(guān)閉控制臺(tái)即可退出):

  1. > hive.cmd 

嘗試創(chuàng)建一個(gè)表t_test:

  1. hive>  create table t_test(id INT,name string); 
  2. hive>  show tables; 

查看http://localhost:50070/確認(rèn)t_test表已經(jīng)創(chuàng)建成功。

 

嘗試執(zhí)行一個(gè)寫入語(yǔ)句和查詢語(yǔ)句:

  1. hive>  insert into t_test(id,namevalues(1,'throwx'); 
  2. hive>  select * from t_test; 

 

寫用了30多秒,讀用了0.165秒。

使用JDBC連接Hive

HiveServer2是Hive服務(wù)端接口模塊,必須啟動(dòng)此模塊,遠(yuǎn)程客戶端才能對(duì)Hive進(jìn)行數(shù)據(jù)寫入和查詢。目前,此模塊還是基于Thrift RPC實(shí)現(xiàn),它是HiveServer的改進(jìn)版,支持多客戶端接入和身份驗(yàn)證等功能。配置文件hive-site.xml中可以修改下面幾個(gè)關(guān)于HiveServer2的常用屬性:

屬性名 屬性值 備注
hive.server2.thrift.min.worker.threads 5 最小工作線程數(shù),默認(rèn)值為5
hive.server2.thrift.max.worker.threads 500 最大工作線程數(shù),默認(rèn)值為500
hive.server2.thrift.port 10000 偵聽的TCP端口號(hào),默認(rèn)值為10000
hive.server2.thrift.bind.host 127.0.0.1 綁定的主機(jī),默認(rèn)值為127.0.0.1
hive.execution.engine mr 執(zhí)行引擎,默認(rèn)值為mr

在$HIVE_HOME/bin目錄下執(zhí)行下面的命令可以啟動(dòng)HiveServer2:

  1. hive.cmd --service hiveserver2 

客戶端需要引入hadoop-common和hive-jdbc依賴,依賴的版本盡量和對(duì)接的Hadoop和Hive版本對(duì)應(yīng)。

  1. <dependency> 
  2.     <groupId>org.apache.hadoop</groupId> 
  3.     <artifactId>hadoop-common</artifactId> 
  4.     <version>3.3.0</version> 
  5. </dependency> 
  6. <dependency> 
  7.     <groupId>org.apache.hive</groupId> 
  8.     <artifactId>hive-jdbc</artifactId> 
  9.     <version>3.1.2</version> 
  10. </dependency> 
  11. <dependency> 
  12.     <groupId>org.springframework.boot</groupId> 
  13.     <artifactId>spring-boot-starter-jdbc</artifactId> 
  14.     <version>2.3.5.RELEASE</version> 
  15. </dependency> 

hadoop-common依賴鏈比較長(zhǎng),會(huì)連帶下載大量其他相關(guān)依賴,所以可以找個(gè)空閑時(shí)間在某個(gè)Maven項(xiàng)目先掛起該依賴下載的任務(wù)(筆者掛起此依賴下載任務(wù)洗完澡仍然沒(méi)下完,還會(huì)出現(xiàn)org.glassfish:javax.el的快照包無(wú)法下載的問(wèn)題,不過(guò)不影響正常使用)。最后添加一個(gè)單元測(cè)試類HiveJdbcTest:

  1. @Slf4j 
  2. public class HiveJdbcTest { 
  3.  
  4.     private static JdbcTemplate TEMPLATE; 
  5.     private static HikariDataSource DS; 
  6.  
  7.     @BeforeClass 
  8.     public static void beforeClass() throws Exception { 
  9.         HikariConfig config = new HikariConfig(); 
  10.         config.setDriverClassName("org.apache.hive.jdbc.HiveDriver"); 
  11.         // 這里筆者修改過(guò)hive-site.xml的對(duì)應(yīng)配置,因?yàn)槎丝诓皇悄J(rèn)的10000 
  12. //        config.setJdbcUrl("jdbc:hive2://127.0.0.1:10091"); 
  13.         config.setJdbcUrl("jdbc:hive2://127.0.0.1:10091/db_test"); 
  14.         DS = new HikariDataSource(config); 
  15.         TEMPLATE = new JdbcTemplate(DS); 
  16.     } 
  17.  
  18.     @AfterClass 
  19.     public static void afterClass() throws Exception { 
  20.         DS.close(); 
  21.     } 
  22.  
  23.     @Test 
  24.     public void testCreateDb() throws Exception { 
  25.         TEMPLATE.execute("CREATE DATABASE db_test"); 
  26.     } 
  27.  
  28.     @Test 
  29.     public void testCreateTable() throws Exception { 
  30.         TEMPLATE.execute("CREATE TABLE IF NOT EXISTS t_student(id INT,name string,major string)"); 
  31.         log.info("創(chuàng)建t_student表成功"); 
  32.     } 
  33.  
  34.     @Test 
  35.     public void testInsert() throws Exception { 
  36.         int update = TEMPLATE.update("INSERT INTO TABLE t_student(id,name,major) VALUES(?,?,?)", p -> { 
  37.             p.setInt(1, 10087); 
  38.             p.setString(2, "throwable"); 
  39.             p.setString(3, "math"); 
  40.         }); 
  41.         log.info("寫入t_student成功,更新記錄數(shù):{}"update);  // 這里比較神奇,數(shù)據(jù)寫入了,返回的update數(shù)量為0 
  42.     } 
  43.  
  44.     @Test 
  45.     public void testSelect() throws Exception { 
  46.         List<Student> result = TEMPLATE.query("SELECT * FROM t_student", rs -> { 
  47.             List<Student> list = new ArrayList<>(); 
  48.             while (rs.next()) { 
  49.                 Student student = new Student(); 
  50.                 student.setId(rs.getLong("id")); 
  51.                 student.setName(rs.getString("name")); 
  52.                 student.setMajor(rs.getString("major")); 
  53.                 list.add(student); 
  54.             } 
  55.             return list; 
  56.         }); 
  57.         // 打印日志:查詢t_student成功,結(jié)果:[HiveJdbcTest.Student(id=10087, name=throwable, major=math)] 
  58.         log.info("查詢t_student成功,結(jié)果:{}", result); 
  59.     } 
  60.  
  61.     @Data 
  62.     private static class Student { 
  63.  
  64.         private Long id; 
  65.         private String name
  66.         private String major; 
  67.     } 

可能遇到的問(wèn)題

下面小結(jié)一下可能遇到的問(wèn)題。

Java虛擬機(jī)啟動(dòng)失敗

目前定位到是Hadoop無(wú)法使用JDK[9+的任意版本JDK,建議切換為任意JDK8的小版本。

出現(xiàn)找不到Hadoop執(zhí)行文件異常

確保已經(jīng)把winutils中的hadoop-3.3.0\bin目錄下的hadoop.dll和winutils.exe文件拷貝到Hadoop的解壓目錄的bin文件夾中。

start-all.cmd腳本執(zhí)行時(shí)有可能出現(xiàn)找不到批處理腳本的異常。此問(wèn)題在公司的開發(fā)機(jī)出現(xiàn)過(guò),在家用的開發(fā)機(jī)沒(méi)有重現(xiàn),具體解決方案是在start-all.cmd腳本的首行加入cd $HADOOP_HOME,如cd E:\LittleData\hadoop-3.3.0。

無(wú)法訪問(wèn)localhost:50070

一般是因?yàn)閔dfs-site.xml配置遺漏了dfs.http.address配置項(xiàng),添加:

  1. <property> 
  2.     <name>dfs.http.address</name
  3.     <value>0.0.0.0:50070</value> 
  4. </property> 

然后調(diào)用stop-all.cmd,再調(diào)用start-all.cmd重啟Hadoop即可。

Hive連接MySQL異常

注意MySQL的驅(qū)動(dòng)包是否已經(jīng)正確拷貝到$HIVE_HOME/lib下,并且檢查javax.jdo.option.ConnectionURL等四個(gè)屬性是否配置正確。如果都正確,注意是否MySQL的版本存在問(wèn)題,或者服務(wù)的版本與驅(qū)動(dòng)版本不匹配。

Hive找不到批處理文件

一般描述是'xxx.cmd' is not recognized as an internal or external command...,一般是Hive的命令執(zhí)行時(shí)的異常,需要把Hive 1.x的源碼包的bin目錄下的所有.cmd腳本拷貝到$HIVE_HOME/bin對(duì)應(yīng)的目錄下。

文件夾權(quán)限問(wèn)題

常見如CreateSymbolicLink異常,會(huì)導(dǎo)致Hive無(wú)法使用INSERT或者LOAD命令寫入數(shù)據(jù)。出現(xiàn)這類問(wèn)題可以通過(guò)下面方式解決:

  • Win + R然后運(yùn)行g(shù)pedit.msc - 計(jì)算機(jī)設(shè)置 - Windows設(shè)置 — 安全設(shè)置 - 本地策略 - 用戶權(quán)限分配 - 創(chuàng)建符號(hào)鏈接 - 添加當(dāng)前用戶。

 

或者「直接使用管理員賬號(hào)或者管理員權(quán)限啟動(dòng)CMD」,然后執(zhí)行對(duì)應(yīng)的腳本啟動(dòng)Hadoop或者Hive。

SessionNotRunning異常

啟動(dòng)HiveServer2中或者外部客戶端連接HiveServer2時(shí)候有可能出現(xiàn)此異常,具體是java.lang.ClassNotFoundException: org.apache.tez.dag.api.TezConfiguration的異常。解決方案是:配置文件hive-site.xml中的hive.execution.engine屬性值由tez修改為mr,然后重啟HiveServer2即可。因?yàn)闆](méi)有集成tez,重啟后依然會(huì)報(bào)錯(cuò),但是60000ms后會(huì)自動(dòng)重試啟動(dòng)(一般重試后會(huì)啟動(dòng)成功):

 

這算是一個(gè)遺留問(wèn)題,但是不影響客戶端正常連接,只是啟動(dòng)時(shí)間會(huì)多了60秒。

HiveServer2端口沖突

修改配置文件hive-site.xml中的hive.server2.thrift.port屬性值為未被占用的端口,重啟HiveServer2即可。

數(shù)據(jù)節(jié)點(diǎn)安全模式異常

一般是出現(xiàn)SafeModeException異常,提示Safe mode is ON。通過(guò)命令hdfs dfsadmin -safemode leave解除安全模式即可。

AuthorizationException

常見的是Hive通過(guò)JDBC客戶端連接HiveServer2服務(wù)時(shí)候會(huì)出現(xiàn)這個(gè)異常,具體是信息是:User: xxx is not allowed to impersonate anonymous。這種情況只需要修改Hadoop的配置文件core-site.xml,添加:

  1. <property> 
  2.     <name>hadoop.proxyuser.xxx.hosts</name
  3.     <value>*</value> 
  4. </property> 
  5. <property> 
  6.     <name>hadoop.proxyuser.xxx.groups</name
  7.     <value>*</value> 
  8. </property> 

這里的xxx是指報(bào)錯(cuò)時(shí)候具體的系統(tǒng)用戶名,例如筆者開發(fā)機(jī)的系統(tǒng)用戶名為doge

然后重啟Hadoop服務(wù)即可。

MapRedTask的權(quán)限問(wèn)題

常見的是Hive通過(guò)JDBC客戶端連接HiveServer2服務(wù)執(zhí)行INSERT或者LOAD操作時(shí)候拋出的異常,一般描述是Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Permission denied: user=anonymous, access=EXECUTE, inode="/tmp/hadoop-yarn":xxxx:supergroup:drwx------。通過(guò)命令hdfs dfs -chmod -R 777 /tmp賦予匿名用戶/tmp目錄的讀寫權(quán)限即可。

小結(jié)沒(méi)什么事最好還是直接在Linux或者Unix系統(tǒng)中搭建Hadoop和Hive的開發(fā)環(huán)境比較合理,Windows系統(tǒng)的文件路徑和權(quán)限問(wèn)題會(huì)導(dǎo)致很多意想不到的問(wèn)題。本文參考了大量互聯(lián)網(wǎng)資料和Hadoop和Hive的入門書籍,這里就不一一貼出,站在巨人的肩膀上。

 

(本文完 c-4-d e-a-20201102)

 

責(zé)任編輯:武曉燕 來(lái)源: Throwable
相關(guān)推薦

2018-03-02 16:30:30

2011-09-14 15:33:33

Android 2.2

2021-02-03 15:29:32

Windows10操作系統(tǒng)office

2017-03-02 13:32:36

Android開發(fā)開發(fā)者

2024-06-04 22:20:02

2010-04-03 11:30:15

Widget開發(fā)

2010-06-04 14:28:01

Hadoop開發(fā)環(huán)境

2019-07-22 11:40:00

WindowsWindows10Windows 7

2024-10-09 08:09:11

2009-06-10 16:30:05

基于Eclipse的PWindows

2020-12-03 07:28:25

Windows10

2010-09-14 09:24:29

C語(yǔ)言

2021-01-03 10:20:55

Windows10操作系統(tǒng)Windows Pho

2010-06-04 14:12:57

Hadoop開發(fā)環(huán)境

2013-07-31 12:50:39

搭建Windows PWindows Pho

2021-07-27 11:54:51

windows系統(tǒng)OpenHarmony

2011-06-07 11:35:38

Windows Pho

2021-10-29 15:50:52

鴻蒙HarmonyOS應(yīng)用

2020-12-22 06:01:54

Windows10操作系統(tǒng)21H2

2020-12-29 05:35:33

Windows10操作系統(tǒng)微軟
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)