ゼロからの推奨システム(3)-ハイブ

この記事のデフォルトでは、すべてのファイルが/ home / YourUserName / downloadsにダウンロードされます。

1.ハイブの紹介

HiveはHadoop基づくデータ抽出、変換、およびロード用のデータウェアハウスツールです。これは、Hadoopに格納されている大規模データを格納、クエリ、および分析するためのメカニズムです。ハイブデータウェアハウスツールは、構造化データファイルをデータベーステーブルにマップし、SQLステートメントMapReduceタスクに変換して実行できるSQLクエリ関数を提供できますHiveの利点は、学習コストが低く、同様のSQLステートメントを使用して高速のMapReduce統計を実現できるため、特別なMapReduceアプリケーションを開発しなくてもMapReduceが簡単になることです。

2.ハイブのインストールと構成

  1. ハイブをダウンロード

ApacheHiveのダウンロードソースページに入る

注:3.xxバージョンはHadoop 3.yyバージョンで動作し、2.xxはHadoop2.yyバージョンで動作します。

バージョンを選択

私のHadoopはバージョン3.1.3なので、3.1.2 Hive **をダウンロードします(コンパイルされたパッケージをダウンロードすることを忘れないでください)**

ここに写真の説明を挿入

wget http://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

また、Hive用に設定したデータベースはMySQLなので、MySQLドライバーjarパッケージをダウンロードする必要があります。

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

上記のダウンロード速度が遅すぎるため、次のことを試すことができます

wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.47.tar.gz
# 从这里下载的文件要解压哦
tar -zxf mysql-connector-java-5.1.47.tar.gz
  1. インストールを開始します

解凍する

tar -zxf apache-hive
mv apache hive
cp hive /usr/local/hive

環境変数を構成する

vi /etc/source

参加する

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

hdfsディレクトリで、アクセス許可を付与します

hdfs dfs -mkdir -p /usr/local/hive/warehouse
hdfs dfs -mkdir -p /usr/local/hive/tmp
hdfs dfs -mkdir -p /usr/local/hive/log
hdfs dfs -chmod g+w /usr/local/hive/warehouse
hdfs dfs -chmod g+w /usr/local/hive/tmp
hdfs dfs -chmod g+w /usr/local/hive/log

構成hive-env.sh

cd /usr/local/hive/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh

中に次のコンテンツを追加します(テンプレートのコピー後に対応する行があります)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0_241
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib/*

構成hive-site.xml

cp -r hive-default.xml.template hive-site.xml
vim hive-site.xml

では<configuration>、次のラベルの追加

 <property>
   <name>system:java.io.tmpdir</name>
   <value>/tmp/hive/java</value>
 <property>
 <property>
   <name>system:user.name</name>
   <value>${user.name}</value>
 <property>

そして、以下を変更します

<property>
   <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://Master:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=utf8&amp;useSSL=false</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>toor</value>
 </property>

注:ここでConnectionURLの値に&amp;を使用するのはなぜですか?&はXMLで事前定義されたエンティティ参照であるため

エンティティ参照 表現された文字 キャラクター名
&lt; < 未満
&gt; >> 以上
&amp;
&apos; ' アポストロフィ
&quot; 「」 二重引用符

ダウンロードしたドライバーファイルを/usr/local/hive/lib下に置きます

cp /home/yourusername/downloads/mysql-connector-java-5.1.47.jar /usr/local/hive/lib
# 如果是用第二个命令下载的则
# cp /home/yourusername/downloads/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47.jar /usr/local/hive/lib

schemaToolmysqlデータベース初期化するために使用します

schematool -dbType mysql -initSchema

完了後の出力

次に、MySQLにログインして確認します

mysql -u root -p yourpassword

ハイブと呼ばれるデータベースあるかどうかを確認します

show databases;

次のようになります

初期化後の結果

  1. Hiveを開始します(最初にHadoopを開始する必要があります)
hive

出力は次のとおりです

ここに写真の説明を挿入

3.プロセスで発生した問題

  • プロンプトlog4jバインディング関連の原因、初期化できません

クラスパス内の関連するパッケージを削除し、1つだけ残します

エラープロンプト

たとえば、ここでは$ HIVE_HOME / libの下のlog4jパッケージを削除します

rm -rf /usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar

注:ここでのパッケージの名前は異なる場合があります。ターミナルのログ出力に従ってコマンドを入力してください

  • 提示スレッド「メイン」java.lang.NoSuchMethodErrorの中の例外:com.google.common.base.Preconditions.checkArgument

これはハイブで使用されているグアバのバージョンが低すぎるという問題です。Hadoopでグアバを直接コピーし、ハイブに付属のグアバを削除することを忘れないでください。

cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib
cd /usr/local/hive/lib
rm -rf guava-19.0.jar
  • hive-site.xmlの問題

3224

cd /usr/local/hive/conf
vim hive-site.xml

vimコマンドを使用する

:3224

Enterキーを押して、エラーが発生した場所を確認します

エラーライン

次に、<configuration>タグを閉じる問題があります

ラベルの閉鎖

  • hive启PIN失败:ディレクトリ/ tmp / hiveを作成できません。名前ノードはセーフモードです。

セーフモードを終了するコマンド

hdfs dfsadmin -safemode leave

考えられる原因:

hdfsのセキュリティモードは、構成ファイルhdfs-site.xmlの次のプロパティの影響を受けます。

<property>
	<name>dfs.namenode.safemode.threshold-pct</name>
	<value>0.99</value>
</property>

これはパーセンテージです。つまり、NameNodeがファイルシステムデータブロック全体の99%を取得すると、自動的にセーフモードを終了します。このパーセンテージは自分で設定できます。この値が0以下の場合、セーフモードにはなりませんが、値が1より大きい場合、無期限にセーフモードになります。

Infiniteはセーフモードです。次の可能性があります。

1)dfs.namenode.safemode.threshold-pctの値が1より大きい

2)ノードの数が少なく、コピー要件が1ではない場合、たとえば、ノードは1つだけですが、最小コピー(dfs.replication.min)は2です。この場合、2であるため、セキュリティモードは無限になります。コピーしますが、ノードは1つだけで、2番目のコピーはコピーできません。


セーフモードの説明:

NameNodeは、起動時に最初にセーフモードに入ります。データノードが特定の割合のブロック(dfs.safemode.threshold.pct)を失うと、システムは常にセーフモード、つまり読み取り専用になります。
dfs.safemode.threshold.pct(デフォルト値0.999f)は、HDFSの開始時に、DataNodeによって報告されたブロック数がメタデータに記録されたブロック数の0.999倍に達した場合、セーフモードを終了できることを意味します。それ以外の場合は、常にこのようになります。読み取り専用モード。1に設定すると、HDFSは常にSafeModeになります。
このセーフモードを終了するには2つの方法があります
(1)変更dfs.safemode.threshold.pctこれは比較的小さい値であり、デフォルトは0.999です。(注:hdfs-site.xmlで0に設定し、セーフモードをオフにします)
(2)hadoop dfsadmin -safemode Leave去る命令

注:ユーザーdfsadmin -safemodeはセーフモードの操作に使用できます。パラメーター値の説明は次のとおりです。

  • 入る-セーフモードに入る
  • Leave-NameNodeにセーフモードを強制的に終了させます
  • get-セーフモードが有効かどうかを返します
  • 待機-セーフモードが終了するまで待機します。

おすすめ

転載: blog.csdn.net/JikeStardy/article/details/105210672