序文:インターネット上には多数の Hive インストール チュートリアルがありますが、実際に利用できるものはほとんどありません. もちろん、これが著者のさまざまなインストール段階に関係している可能性があることは否定できません. たぶん彼はすでにあるポイントに対処しましたが、彼はそれを記録していません. , そしてあなたはちょうどピットを踏んだ. しかし、ブログのためにランダムにコピーしてブログを書いている著者もいますが、彼らは本当に犬を犯しました。
このシナリオ:ハイブをWindowsにローカルにインストールする
始める
1.1 ダウンロード先
- Apache 公式 Web サイト (上位バージョンのインストール パッケージには実行ファイルが含まれておらず、Windows では実行できません。これについては、[必要なチェック] セクションで説明します)
- Baidu ネットワーク ディスク(このチュートリアルで使用する、インストール パッケージは完了です。抽出コード: tzph)
1.2 ダウンロード手順
- Windows の場合は、対応するバージョンの bin.tar.gz パッケージをダウンロードしてください ( tar パッケージと tar.gz パッケージの違いについて、bin バージョンと src バージョンの違いについて)、このチュートリアルではapache-hiveを使用します。 -3.0.0-bin.tar.gz
-
注意最好与Hadoop大版本对应,比如Hadoop3.x 对应 hive3.x,否则会报错(亲测)
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 の初期化
- 最初に Hadoop を起動し、次のコマンドを実行します: Stall-all.cmd
- MySQL データベースを初期化します: hive --service schematool -initSchema -dbType mysql
- 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;
*** (解决):for;——> 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)
参照する価値のあるいくつかの記事: