Hadoop 学習 - ハイブのインストールと体験 (ネットワーク全体の統合)

序文:インターネット上には多数の Hive インストール チュートリアルがありますが、実際に利用できるものはほとんどありません. もちろん、これが著者のさまざまなインストール段階に関係している可能性があることは否定できません. たぶん彼はすでにあるポイントに対処しましたが、彼はそれを記録していません. , そしてあなたはちょうどピットを踏んだ. しかし、ブログのためにランダムにコピーしてブログを書いている著者もいますが、彼らは本当に犬を犯しました。

このシナリオ:ハイブをWindowsにローカルにインストールする

始める

1.1  ダウンロード先

  • Apache 公式 Web サイト (上位バージョンのインストール パッケージには実行ファイルが含まれておらず、Windows では実行できません。これについては、[必要なチェック] セクションで説明します)
  • Baidu ネットワーク ディスク(このチュートリアルで使用する、インストール パッケージは完了です。抽出コード: tzph)

 

1.2  ダウンロード手順

1.3 インストール手順

  • インストールは不要で、解凍するだけです (中国語のパス、スペース、特殊文字などは避けてください)。 
  • パッケージ名が長すぎるため、次のようにフォルダー名を変更することをお勧めします: apache-hive-3.0.0

必要な検査

  • bin ディレクトリに実行可能ファイル (.cmd) があるかどうかを確認します。そうでない場合、ハイブは起動に失敗し、関連するコマンドが見つからないというメッセージが表示されます。通常、次の内容が含まれている必要があります。

エラー例:

  • 通常、公式 Web サイトの上位バージョンの hive には実行ファイルが含まれていないため、下位バージョンの src.tar.gz をダウンロードし (チュートリアルでは 1.0.0 を使用)、bin フォルダーをその bin フォルダーに置き換える必要があります。解凍後の上位バージョン (3.0.0)

環境変数の構成

  • HIVE_HOME(必須):D:\Soft\ApacheHive\apache-hive-3.0.0
  • HIVE_CONF_DIR:D:\Soft\ApacheHive\apache-hive-3.0.0\conf
  • パス変数に追加: %HIVE_HOME%\bin, %HIVE_CONF_DIR%

いくつかの準備

  • バックアップ用にインストール ディレクトリに新しいフォルダーを作成します: tmp
  • mysql ドライバーをローカルの Maven リポジトリー (または公式 Web サイトのダウンロード) からインストール・ディレクトリー /lib にコピーします: mysql-connector-java-5.1.39.jar
  • hadoop と競合する log4j jar パッケージを破棄します。名前を log4j-slf4j-impl-2.10.0.jar から log4j-slf4j-impl-2.10.0.jar.template に変更
  • Mysql は新しいデータベース、カスタム名、mine: sys_hive を作成します (メモ、エンコード形式の選択: latin1 -- cp1252 西ヨーロッパ、照合選択: latin1_german1_ci)
  • Hadoop に hdfs ディレクトリを作成する
hadoop fs  -mkdir       /tmp
hadoop fs  -mkdir       /user/
hadoop fs  -mkdir       /user/hive/
hadoop fs  -mkdir       /user/hive/warehouse 
hadoop fs  -chmod g+w   /tmp
hadoop fs  -chmod g+w   /user/hive/warehouse

http://localhost:9870/explorer.html#/ 

Hive 構成ファイルを変更する

  • /conf ディレクトリで、.template サフィックスで終わるすべてのファイルから .template を削除し、名前を hive-default.xml --> hive-site.xml に変更します。

  • hive-site.xml の構成 (変更済み)
<!-- 1. 新增部分:定义变量并赋值(否则启动报错找不到变量,不明白为什么明明下文中有使用但却不定义!) -->
  <property>
    <name>system:user.name</name>
    <value>Zxl</value>
  </property>
  <property>
      <name>system:java.io.tmpdir</name>
      <value>D:/Soft/ApacheHive/apache-hive-3.0.0/tmp</value>
  </property>
  
<!-- 2. 修改部分 -->  

  <!-- Hive临时文件,用于存储每个查询的临时/中间数据集,通常在完成查询后由配置单元客户端清除 -->
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
  </property>
 
  <!-- hive添加资源时的临时目录 -->
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
  </property>
 
  <!-- Hive运行时结构化日志文件的位置 -->
  <property>
    <name>hive.querylog.location</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
  </property>
 
 
  <!-- 用于验证metastore和hivejar包是否一致问题,默认为true。false:hive升级版本不一致只会警告 -->
  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>
 
  <!-- 使用MySQL作为hive的元数据Metastore数据库 -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
  </property>
 
  <!-- MySQL JDBC驱动程序类 -->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
 
  <!-- 连接到MySQL服务器的用户名 -->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
 
  <!-- 连接MySQL服务器的密码 -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
  </property>
 
  <!-- hive开启的thriftServer地址 -->
  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>localhost</value>
  </property>
 
  <!-- Thrift Metastore服务器的主机和端口 默认 <value/> -->
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://localhost:9083</value>
  </property>
 
  <!-- 如果启用了日志功能,则存储操作日志的顶级目录 -->
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>
  </property>
  • hive-env.shの構成(変更済み)
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=D:\Soft\Hadoop\hadoop-3.0.0
 
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=D:\Soft\apache-hive-3.0.0\conf
 
# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=D:\Soft\apache-hive-3.0.0\lib

 

MySQL の初期化

  1. 最初に Hadoop を起動し、次のコマンドを実行します: Stall-all.cmd
  2. MySQL データベースを初期化します: hive --service schematool -initSchema -dbType mysql
  3. Hive メタデータを MySQL データベースに初期化します: hive --service metastore

これまでのところ、データベースは次のようになっているはずです。

テスト

  • ハイブのインストールが成功したかどうかを確認します
#1. 启动metastore服务端
hive --service metastore

#2. hive进入测试(注意先进行上一步,否则报错!以下两个命令结果一致,并非打印版本号,而是直接进入hive,类似于进入mysql。)
hive version
hive
  • ハイブに移動し、テスト リポジトリとテスト テーブルを作成します (参照:この投稿のテスト セクション)。

異常なセルフテスト

—————— 关于安装后启动报错》》》

	*** "Hive throws: WstxParsingException: Illegal character entity: expansion character (code 0x8)"
		*** (原因):含特殊字符 for&#8;
		*** (解决):for&#8;——> for;,参考:https://blog.csdn.net/zhangvalue/article/details/84313119
	
	*** ".NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>"	
		*** (原因):disruptor-x.x.x.jar版本不匹配
		*** (解决):
			*** hive-site.xml文件中搜索关键字“disruptor”或“hive.async.log.enabled”,把true改为false(理由:看报错消息应该与disruptor和log同步异步有关)
			*** https://blog.csdn.net/zhouzhiwengang/article/details/88189525(尝试无果)

	*** "Error applying authorization policy on hive configuration: Couldn't create directory ${system:java.io.tmpdir}\${hive.session.id}_resources"	
		*** (原因):https://blog.csdn.net/leimengyuanlian/article/details/48140937 ————> 所以hive-site.xml建议参照:https://blog.csdn.net/qq262593421/article/details/104961689
		*** (解决):https://stackoverflow.com/questions/42690210/error-applying-authorization-policy-on-hive-configuration-couldnt-create-direc	
		
—————— 初始化 hive 元数据到MySQL数据库报错》》》

	*** "Caused by: org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : "`DBS`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.schema.autoCreateTables""	
		*** (原因):
		*** (解决):将hive-site.xml文件中datanucleus.schema.autoCreateAll属性改为true。
		
	*** "javax.jdo.JDODataStoreException: Error executing SQL query "select "DB_ID" from "DBS""."
		*** (原因):缺少一步初始化
		*** (解决):
			*** 先初始化MySQL:hive --service schematool -initSchema -dbType mysql ————> 再执行hive --service metastore初始化 hive 元数据到MySQL
			*** (此方法应该针对Linux,至少在Windows下并没有卵用)https://blog.csdn.net/quiet_girl/article/details/75209070(附:schematool: 未找到命令的解决办法:https://blog.csdn.net/weixin_40521823/article/details/86657095)

参照する価値のあるいくつかの記事:

おすすめ

転載: blog.csdn.net/qq_28202661/article/details/108796914