[英]How to use Hive without hadoop
我是 NoSQL 解決方案的新手,想玩 Hive。但是安裝 HDFS/Hadoop 需要大量資源和時間(可能沒有經驗,但我沒有時間這樣做)。
有沒有辦法在沒有 HDFS/Hadoop 的本地機器上安裝和使用 Hive?
是的,您可以在沒有 hadoop 的情況下運行 hive 1.在本地系統上創建您的倉庫 2. 將默認 fs 指定為 file:/// 比您可以在沒有 hadoop 安裝的情況下在本地模式下運行 hive
在 Hive-site.xml 中
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<!-- this should eventually be deprecated since the metastore should supply this -->
<name>hive.metastore.warehouse.dir</name>
<value>file:///tmp</value>
<description></description>
</property>
<property>
<name>fs.default.name</name>
<value>file:///tmp</value>
</property>
</configuration>
如果您只是在做決定之前談論體驗 Hive,您可以使用@Maltram 建議的預配置 VM(Hortonworks、Cloudera、IBM 和其他公司都提供此類 VM)
您應該記住的是,如果沒有 Hadoop 和 HDFS,您將無法在生產中使用 Hive,因此如果這對您來說是個問題,您應該考慮 Hive 的替代品
你不能,只需下載 Hive,然后運行:
./bin/hiveserver2
Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path
Hadoop 就像一個核心,Hive 需要從中獲取一些庫。
更新此答案已過時:使用Hive on Spark
上的Hive on Spark
不再需要hdfs
支持。
Hive 需要 hdfs 和 map/reduce,因此您將需要它們。 另一個答案在推薦一種簡單/預先配置的方法來為您獲取所有組件的意義上有一些優點。
但它的要點是:hive 需要 hadoop 和 m/r,所以在某種程度上你需要處理它。
盡管如此,您必須記住一些細節,在沒有 HDFS 的情況下使用 Hive 是完全正常的。 有一些細節應該記住。
schematool
初始化您的數據庫您可以使用指向本地 POSIX 文件系統的site.xml
文件,但您也可以在HIVE_OPTS
環境變量中設置這些選項。 我用我在博客文章中看到的錯誤示例進行了介紹
最佳答案對我有用。 但需要更多設置。 我花了很多時間四處尋找解決多個問題,直到我最終設置它。 在這里我總結了從頭開始的步驟:
hive-env.sh
$ cd hive/conf $ cp hive-env.sh.template hive-env.sh
在hive-env.sh
中添加以下環境(根據實際 java/hadoop 版本相應更改路徑) JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home export path=$JAVA_HOME/bin:$path export HADOOP_HOME=${bin}/../../hadoop-3.3.1
hive-site.xml
$ cd hive/conf $ cp hive-default.xml.template hive-site.xml
將所有變量${system:***}
替換為常量路徑(不確定為什么在我的系統中無法識別)。 使用以下屬性將數據庫路徑設置為本地(從最佳答案復制) <configuration> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <property> <.-- this should eventually be deprecated since the metastore should supply this --> <name>hive.metastore.warehouse:dir</name> <value>file.///tmp</value> <description></description> </property> <property> <name>fs.default:name</name> <value>file:///tmp</value> </property> </configuration>
hive-log4j2.properties
(可選,有助於故障排除) cp hive-log4j2.properties.template hive-log4j2.properties
將所有變量${sys:***}
替換為常量路徑metastore_db
如果你直接運行hive
,當做任何 DDL 時,你會得到錯誤: FAILED: HiveException org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(message:Hive metastore database is not initialized. Please use schematool (eg ./schematool -initSchema -dbType...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (eg ? createDatabaseIfNotExist=true for mysql))
在這種情況下,我們需要使用以下命令重新創建 metastore_db $ cd hive/bin $ rm -rf metastore_db $./schematool -initSchema -dbType derby
$ cd hive/bin $./hive
現在您應該可以在本地文件系統上運行 hive 了。 需要注意的一件事是, metastore_db
將始終在您的當前目錄中創建。 如果在不同目錄下啟動hive,需要重新創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.