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&useSSL=false&useUnicode=true&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 を終了すると成功しました。