簡體   English   中英

如何在沒有hadoop的情況下使用Hive

[英]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>

我建議您使用這樣的東西。

http://hortonworks.com/products/hortonworks-sandbox/

它是功能完備的VM,可立即啟動,並提供您所需的一切。

如果您只是在做決定之前談論體驗 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 是完全正常的。 有一些細節應該記住。

  1. 正如上面提到的一些評論者,您仍然需要一些來自hadoop common 的.jar 文件。
  2. 截至今天(XII 2020),運行 Hive/hadoop3 對很困難。 在 Hive2 中使用穩定的 hadoop2。
  3. 確保正確設置 POSIX 權限,以便您的本地配置單元可以訪問倉庫並最終訪問 derby 數據庫位置。
  4. 通過手動調用schematool初始化您的數據庫

您可以使用指向本地 POSIX 文件系統的site.xml文件,但您也可以在HIVE_OPTS環境變量中設置這些選項。 我用我在博客文章中看到的錯誤示例進行了介紹

最佳答案對我有用。 但需要更多設置。 我花了很多時間四處尋找解決多個問題,直到我最終設置它。 在這里我總結了從頭開始的步驟:

  • 下載hive,解壓
  • 下載hadoop,解壓,和hive放在同一父文件夾下
  • 設置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
  • 開始 hive
     $ cd hive/bin $./hive

現在您應該可以在本地文件系統上運行 hive 了。 需要注意的一件事是, metastore_db將始終在您的當前目錄中創建。 如果在不同目錄下啟動hive,需要重新創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM