參考文章
https://blog.csdn.net/csdn_fzs/article/details/78985586
http://www.cnblogs.com/yifengjianbai/p/8260064.html
準備文件
apache-hive-2.3.4-bin.tar.gz
hadoop-2.9.2.tar.gz
自行官網下載
其他人共享的hadoop和hive在windows下的執行文件
wintuils_hadoop.dll.zip
hive在windows安裝bin.zip
下載地址:https://download.csdn.net/download/a1041646584/11011656
環境說明:jdk1.8安裝目錄最好不要在C盤默認目錄 因爲有空格 程序不識別
(配置時-如果路徑中有“Program Files”,則將Program Files改爲 PROGRA~1)
全部解壓後
1、hadoop安裝
1.1配置Java環境變量
新建變量名:JAVA_HOME
輸入路徑:D:\Softwares\jdk1.8 (這裏是以我的jdk地址爲例,請根據自己的jdk地址來設置)
在path中最前面加上:%JAVA_HOME%\bin;
1.2配置Hadoop環境變量
新建變量名:HADOOP_HOME
輸入路徑:E:\hadoop-2.9.2
在path中最前面加上:%HADOOP_HOME%\bin;
1.3將 wintuils_hadoop.dll.zip裏的bin(有說明文檔)覆蓋替換到 hadoop-2.9.2.tar.gz 的bin下
1.4在hadoop-2.7.3\etc\hadoop找到hadoop-env.cmd
右鍵用一個文本編輯器打開
找到 set JAVA_HOME=%JAVA_HOME%
將%JAVA_HOME%改成C:\PROGRA~1\Java\jdk1.7.0_67 或 D:\Softwares\jdk1.8(在環境變量設置中JAVA_HOME的值)
(如果路徑中有“Program Files”,則將Program Files改爲 PROGRA~1 )
不改也行 不報 %JAVA_HOME% 的錯誤可以不該
1.5win+R 輸入cmd打開命令提示符,然後輸入hadoop version,按回車,如果出現 hadoop2.9.2.......等說成功
1.6hadoop核心配置文件(參考下方最新的)
在hadoop-2.9.2\etc\hadoop中找到以下幾個文件
打開 hadoop-2.9.2/etc/hadoop/core-site.xml, 複製下面內容粘貼到最後並保存
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
打開 hadoop-2.9.2/etc/hadoop/mapred-site.xml, 複製下面內容粘貼到最後並保存
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
打開 hadoop-2.9.2/etc/hadoop/hdfs-site.xml, 複製下面內容粘貼到最後並保存, 請注意需要建立data 文件夾和兩個子文件夾,本例子是建立在 HADOOP_HOME的目錄裏(注意每個人的hadoop的路徑不一樣,這裏要做修改)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/E:/hadoop-2.7.3/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/E:/hadoop-2.7.3/data/datanode</value>
</property>
</configuration>
打開 hadoop-2.7.3/etc/hadoop/yarn-site.xml,複製下面內容粘貼到最後並保存
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
1.7
管理員身份打開命令提示符
輸入hdfs namenode -format執行 不識別hdfs的話 cd到hadoop/sbin下執行
namenode文件裏會自動生成一個current文件,則格式化成功
無報錯說明成功
1、已知報錯 %JAVA_HOME% 配置問題
如果路徑中有“Program Files”,則將Program Files改爲 PROGRA~1
1.8輸入start-all.cmd,啓動hadoop服務
會出現四個窗口 無報錯就成功
已知報錯:
1.9輸入jps 查看運行的服務
jps不識別 就cd到java安裝目錄bin下 輸入
出現DataNode、ResourceManager、nodeManager、jps的進程說明成功
2hiv安裝
2.1將hive在windows安裝bin.zip裏的bin文件替換覆蓋到 hive/bin下
然後參考下面文檔即可安裝成功 注意配置文件
參考:http://www.cnblogs.com/yifengjianbai/p/8260064.html
hive需要初始化數據庫 參考:https://blog.csdn.net/tornadojava/article/details/56835459
hive報錯:Required table missing : "DBS`" in Catalog "" Schema "
參考:http://f.dataguru.cn/hadoop-629722-1-1.html
hive報錯: "`VERSION`" in Catalog "" Schema "".
hive-site.xml中加上
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
hive報錯:Column length too big for column 'PARAM_VALUE' (max = 21845); use BLOB or TEXT instead
原因是編碼問題,重新把hive與mysql的關聯的數據庫編碼改成latin1就行了(網上查到hive只支持latin1,沒有測試過)
解決方法 數據庫表執行
alter database hive character set latin1;
在進行初始化 成功後
在轉回UTF-8
alter database hive default character set utf8;
Hadoop啓動錯誤 :datanode.DataNode: Initialization failed for Block pool <registering>
刪除namenode datanode 下等的所有文件 重新hdfs namenode -format 格式化
----------------------------大佬給調過的-----最新測試過的 配置文件------------------
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/D:/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/D:/hadoop/data/dfs/datanode</value>
</property>
</configuration>
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.proxyuser.admin.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.admin.groups</name>
<value>*</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>800</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>800</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx650M</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx650M</value>
</property>
<property>
<name>mapreduce.map.speculative</name>
<value>false</value>
<description>If true, then multiple instances of some map tasks
may be executed in parallel.
</description>
</property>
<property>
<name>mapreduce.reduce.speculative</name>
<value>false</value>
<description>If true, then multiple instances of some reduce tasks
may be executed in parallel.
</description>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8000</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>300</value>
</property>
<property>
<name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
<value>99.5</value>
</property>
</configuration>
hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.users.in.admin.role</name>
<value>admin</value>
</property>
<property>
<name>hadoop.bin.path</name>
<value>D:\hadoop\hadoop-2.9.2\bin\hadoop.cmd</value>
</property>
<!-- 解決 Required table missing : "DBS`" in Catalog "" Schema "錯誤-->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>Auto creates necessary schema on a startup if one doesn't exist. Set this to false, after creating it once.To enable auto create also set hive.metastore.schema.verification=false. Auto creation is not recommended for production use cases, run schematool command instead.</description>
</property>
<!--解決 "`VERSION`" in Catalog "" Schema "". 錯誤-->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
運行語句
start-all
hive --service metastore
hive --service hiveserver2
//連接語句
beeline -u jdbc:hive2://localhost:10000 -nadmin -padmin
備註:啓動 hive --service hiveserver2時 最後報錯
Exception in thread "org.apache.hadoop.hive.common.JvmPauseMonitor$Monitor@17229821" java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.elapsed(Ljava/util/concurrent/TimeUnit;)J
at org.apache.hadoop.hive.common.JvmPauseMonitor$Monitor.run(JvmPauseMonitor.java:185)
at java.lang.Thread.run(Thread.java:748)
可以忽略不影響使用