Hive3のインストール

MySQLのインストール

Centos7に付属のmariadbをアンインストールします。

rpm -qa|grep mariadb

rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
rpm -qa|grep mariadb

 mysqlをインストールする

mkdir /export/software/mysql

mysql-5.7.29-1.el7.x86_64.rpm-bundle.tarを上記フォルダにアップロードし、解凍します。

tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

インストールを実行する

yum -y install libaio

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm 

mysqlの初期化設定 

初期化

mysqld --initialize

グループを変更する

chown mysql:mysql /var/lib/mysql -R

mysqlを起動する

systemctl start mysqld.service

生成された一時的な root パスワードを表示する

cat  /var/log/mysqld.log

  root@localhost: eK*yWCSok70%

root パスワードを変更して、起動後にリモート アクセス設定が自動的に開始されることを許可します。

mysql -u root -p

 ログに生成された一時パスワードをここに入力します。

root パスワードを更新し、hadoop に設定します。

alter user user() identified by "hadoop";

 認可された

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
FLUSH PRIVILEGES; 

 mysql の起動とシャットダウンのステータスを確認します (これらのコマンドは覚えておく必要があります)

systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld

 起動時自動起動サービスとして設定することをお勧めします

systemctl enable  mysqld

セルフスタートが正常に設定されているか確認してください

systemctl list-unit-files | grep mysqld

 ハイブのインストール

インストールパッケージをアップロードして解凍します

tar zxvf apache-hive-3.1.2-bin.tar.gz

Hive と Hadoop の間の guava バージョンの違いを解決する

cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

 設定ファイルを変更する

ハイブ環境.sh

cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
    
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib

ハイブサイト.xml

vim hive-site.xml
    ```

    ```xml
    <configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
    	<name>javax.jdo.option.ConnectionURL</name>
    	<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>hadoop</value>
    </property>
    
    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node1</value>
    </property>
    
    <!-- 远程模式部署metastore metastore地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083</value>
    </property>
    
    <!-- 关闭元数据存储授权  --> 
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    </configuration>
    
    ```

mysql jdbc ドライバーを hive インストール パッケージ ライブラリにアップロードします。

mysql-connector-java-5.1.32.jar

メタデータの初期化

cd /export/server/apache-hive-3.1.2-bin/
  
bin/schematool -initSchema -dbType mysql -verbos

初期化が成功すると、mysql に 74 個のテーブルが作成されます

 hdfs にハイブ格納ディレクトリを作成します (存在する場合は操作なし)

hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse

ハイブを開始する

メタストアサービスを開始する

/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console 

hiveserver2 サービスを開始します

/export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2

installDataGrip()

デフォルトでインストールするだけです。 

 

 ドライバーを交換します。

 古いドライバーを削除する

 

最初にテストして、接続されているかどうかを確認できます。 

 

データベースのテスト:

show databases ;

create database bigdata;

use bigdata;

show tables ;

create table Google_Playstore(App_Name string,App_Id string,Category string,Rating float,Rating_Count int,Installs string,Minimum_Installs int,Maximum_Installs int,Free string,Price float,Currency string,Size string,Minimum_Android string,Developer_Id string,Developer_Website string,Developer_Email string,Released string,Last_Updated string,Content_Rating string,Privacy_Policy string,Ad_Supported string,In_App_Purchases string,Editors_Choice string,Scraped_Time string) row format delimited fields terminated by ',';

LOAD DATA LOCAL INPATH '/export/data/data.csv' INTO TABLE Google_Playstore;

select * from Google_Playstore;

問題点と解決策のまとめ

1. ハイブが起動すると、ユーザー 'root'@'localhost' のアクセスが拒否されたと報告されます (パスワード: YES を使用) 

問題の原因:
エラー レポートによると、パスワードは正しいが、権限が十分ではないため、主な目的は権限の問題を解決することです。 解決策: 1. root として msyql にログインします。 2. ハイブに権限を追加
 

ます
。ユーザー
 GRANT INSERT、SELECT、DELETE、UPDATE ON hive.* TO 'hive'@'localhost' IDENTIFIED BY '123456';
フラッシュ権限; データベース
 
参照接続の更新: https://stackoverflow.com/questions/20353402/access-denied -user-testlocalhost-using-password-yes-root-user を除く

二、java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

解決:

Hadoop インストール ディレクトリの share/hadoop/common/lib にある guava.jar のバージョンを確認する Hive インストール ディレクトリの
lib にある guava.jar のバージョンを確認する 2 つが矛盾する場合は、下位バージョンを削除し、上位バージョンをコピーしますこの問題を解決するために!

3、org.datanucleus.store.rdbms.Exceptions.MissingTableException: 必要なテーブルが見つかりません:VERSIONカタログ "" スキーマ "" の " "。DataNucleus では、永続化操作を実行するためにこのテーブルが必要です。

解決:

Hive インストール ディレクトリ (/usr/local/hive など) を入力し、次のコマンドを実行します: ./bin/schematool -dbType mysql -initSchema

4、警告: サーバーの本人確認なしで SSL 接続を確立することはお勧めできません。MySQL 5.5.45+、5.6.26+、および 5.7.6+ の要件に従って、明示的なオプションが設定されていない場合は、デフォルトで SSL 接続を確立する必要があります。SSL を使用しない既存のアプリケーションに準拠するために、verifyServerCertificate プロパティは「false」に設定されます。useSSL=false を設定して SSL を明示的に無効にするか、useSSL=true を設定してサーバー証明書検証用のトラストストアを提供する必要があります。


解決:

<値>
jdbc:mysql://localhost:3306/myhive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
</value>
 

5. !connect jdbc:hive2:// master :10000を使用して接続する場合:レポート: root は root になりすますことができません

解決:

Hadoop 構成ファイル core-site.xml を追加します。

<プロパティ>

        <name>hadoop.proxyuser.root.hosts</name>

        <値>*</値>

</プロパティ>

<プロパティ>

        <name>hadoop.proxyuser.root.groups</name>

        <値>*</値>

</プロパティ>

クラスターを再初期化します。

6. hdfs シェル コマンドの実験で mkdir を呼び出すと、ディレクトリを作成できないことがわかり、エラー org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/. Name ノードはセーフ モードです。報告されています

解決策: hadoop   dfsadmin -safemode Leave

セーフ モードを終了し、mkdir を終了すると成功しました。

おすすめ

転載: blog.csdn.net/qq_25368751/article/details/131193815