1.ハイブの紹介
Hiveは、大量の構造化ログを解決するためにFacebookがオープンソースとするデータ統計ツールです。
Hiveは、Hadoopに基づくデータウェアハウスツールであり、構造化データファイルをデータベーステーブルにマップでき、SQLステートメントをMapReduceタスクに変換して実行できるSQLのようなクエリ関数を提供します。
もちろん、SQLステートメントはTezまたはSparkに変換することもできます。
なぜHiveが必要なのですか?
- MapReduceの学習コストを削減し、DBAと運用および保守担当者がSQLを介してMapReduceを実装できるようにします。
- オープンソース、コストを節約できます
- ビッグデータを処理できます
ハイブアーキテクチャシステム
-
ドライバーコンポーネント
-
パーサー(SQLパーサー):SQL文字列を抽象構文ツリーASTに変換します。この手順は通常、antlrなどのサードパーティツールライブラリを使用して行われます。ASTは、テーブルの存在、フィールドの存在、SQLセマンティクスの誤りなどの構文解析が行われます。
-
コンパイラー(物理プラン):ASTをコンパイルして、論理実行プランを生成します。
-
オプティマイザー(クエリオプティマイザー):論理実行プランを最適化します。
-
実行:論理実行プランを実行可能な物理プランに変換します。Hive用
言う、それはMR/スパーク/テズです。
-
-
MetaStoreコンポーネント
- MetaStoreコンポーネントは、ハイブのメタデータ情報を格納し、独自のメタデータをリレーショナルデータベースに格納します。サポートされるデータベースには、主にMysql、Derbyが含まれ、リモートクラスター上の独立したメタストアをサポートして、ハイブをより堅牢にします。
- メタデータには、主にテーブルの名前、テーブルが属するデータベース(デフォルトはデフォルト)、テーブルの所有者、テーブルの列、パーティションとその属性、テーブルの属性(外部かどうか)が含まれます。テーブルなど)、およびテーブルのデータの場所。ディレクトリなど。
-
ユーザーインターフェース
- CLI、コマンドラインインターフェイス、コマンドインタラクションツール。このようにして、コマンドでHiveを操作できます。
- HiveServer2、このサービスを開始すると、プログラムを開発してHiveを操作できます。たとえば、Javaプログラムを介して、Hive JDBC Driverを呼び出してデータベースを追加、削除、変更、および照会することは、リレーショナルデータベースを操作するのと同じくらい便利です。
- Hive Webインターフェイス。これは、操作インターフェイスのWebバージョンです。ただし、新しいバージョンでは非推奨になりました。代わりにHUEを使用できます。
2.ハイブ環境のインストール
Hiveの3つの展開モードは、主にMetastoreの操作モードによって区別されます。
この記事は主にローカルモードでデモンストレーションを行い、リレーショナルデータベースはMysqlのブランチバージョンであるMariaDBを使用します。
1.準備
1)Hadoopをインストールします
この記事では、Hadoop2.7.7を例として取り上げます。チュートリアルを参照できます:https://blog.csdn.net/tangyi2008/article/details/121908766
Hadoopをインストールした後、ユーザーのプロキシ構成を追加する必要があります。
vi $HADOOP_HOME/etc/hadoop/core-site.xml
次の構成アイテムを追加します
<property>
<name>hadoop.proxyuser.xiaobai.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.xiaobai.groups</name>
<value>*</value>
</property>
2)MariaDBをインストールします
MariaDBデータベースは、MySQLの創設者であるMichaelWideniusによって開発されたMySQLのフォークです。このブランチを開発する理由の1つは、OracleがMySQLを買収した後、MySQLを閉じるリスクがあるため、コミュニティはこのリスクを回避するためにブランチの方法を採用することです。
MariaDBの名前は、MichaelWideniusの娘Mariaの名前に由来しています。
(1)MariaDBのインストールを確認します
次のコマンドを使用して、MariaDBのインストールを確認します
sudo dpkg -l | grep maria
何も印刷されていない場合は、インストールされていないことを意味します。それ以外の場合は、必要に応じてアンインストールして再インストールする必要があるかどうかを判断できます。
(2)MariaDB/MySQLをアンインストールします
以前にインストールしたmariadbまたはmysqlをアンインストールする場合は、次のコマンドを使用できます
sudo apt autoremove mysql-\*
mariaがインストールされていることが確実な場合は、次のコマンドを使用してアンインストールできます。
sudo apt autoremove mariadb-*
(3)MariaDBをインストールします
次のコマンドで便利なインストールを実行できます。デフォルトのソースにインストールされます
sudo apt update
sudo apt install mariadb-server
注:
https://downloads.mariadb.org/mariadb/repositories/
必要なバージョンをより迅速かつ正確にインストールできるように、独自のオペレーティングシステムとバージョン、インストールする必要のあるMariaDBバージョン、および自国の地域に一致するリポジトリを設定できます。オペレーティングシステム(18.04LTS)、MariaDBバージョン(10.6)、ウェアハウス(Alibaba Cloud)が設定されている場合、ウェアハウスを追加するコマンドとインストールするコマンドがWebページに表示されます。
リポジトリを追加するコマンド
sudo apt-get install software-properties-common dirmngr apt-transport-https sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.aliyun.com/mariadb/repo/10.6/ubuntu bionic main'
ソースを更新してMariaDBをインストールするコマンド
sudo apt update sudo apt install mariadb-server
インストールが完了したら、以下のコマンドを使用してMariaDBサービスのステータスを確認します
sudo systemctl status mariadb
次のインターフェイスが表示されたら、おめでとうございます。インストールは成功です。!!
(4)MariaDBの簡単な構成
基本構成には、次のコマンドを使用します。
sudo mysql_secure_installation
コマンドを実行した後、端末には設定が必要な次の問題があります。
1.Enter current password for root (enter for none):
(预设的MariaDB没有密码,直接Enter即可)
2.Switch to unix_socket authentication [Y/n] n
(是否切换unix_socket安全认证,这里输入的n,即不切换)
3.Change the root password? [Y/n] y
(是否修改root账户的密码,输入的y,即会修改root密码
注意:
- root密码最好是复杂密码,否则可能会每次连接MariaDB时需要加sudo
- 在设置密码时,输入密码时是不会跳光标的
- 本文将密码设置成abc@@123
)
4.Remove anonymous users? [Y/n] y
(是否删除匿名用户,这里输入的是y,即删除匿名用户
默认情况下,MariaDB安装有匿名用户,允许任何人登录MariaDB而无需为其创建帐户,在生产环境中一定要删除
)
5.Disallow root login remotely? [Y/n] y
(是否允许远程登录root账户,否则只能在localhost上登录root账户,这里输入的y,即不允许远程登录root账户)
6.Remove test database and access to it? [Y/n] y
(是否删除test数据库,这里输入的y,即删除test数据库
默认情况下,MariaDB有一个test数据库,允许任何用户获取
)
7.Reload privilege tables now? [Y/n] y
(是否重新加载权限表,这里输入的y,即立即重新加载)
(5)一般的な問題と解決策
- MariaDBに接続するにはsudoが必要です(mysqlにも同様の問題があります)
問題の説明:Ubuntu 18.04にMariaDBをインストールした後、毎回MariaDBにアクセスするためにsudoを追加する必要があります。
理由:MariaDBのrootユーザーのパスワード強度は強力なタイプではありません。
解決策:rootアカウントのパスワードを、大文字と小文字、数字、記号を含む8桁以上などの強力なタイプに変更します。たとえば、次のコマンドはパスワードを次のように変更しますabc@@123
SET PASSWORD = PASSWORD('abc@@123');
- リモートアクセス
問題の説明:サーバーのIPアドレスを使用してデータベースに接続できません
理由:IPはデフォルトでデフォルトにバインドされているため、使用または接続127.0.0.1
のみが可能です127.0.0.1
localhost
解決策:構成ファイルを変更します/etc/mysql/mariadb.conf.d/50-server.cnf
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
変更された[mysqld]
パラメータbind-address = 127.0.0.1 => bind-address = 0.0.0.0
次に、MariaDBサービスを再起動します
sudo service mariadb restart
MariaDB/MySQLデータベースが構成ファイルを読み取る順序は次のとおりです。
「/etc/mysql/my.cnf」はこのファイルへのシンボリックリンクであり、残りすべてが読み取られる理由です。
「/etc/mysql/mariadb.cnf」(このファイル)を使用してグローバルデフォルトを設定します。
「/etc/mysql/conf.d/*.cnf」でグローバルオプションを設定します。i
「/etc/mysql/mariadb.conf.d/*.cnf」を使用して、MariaDBのみのオプションを設定します。
「〜/ .my.cnf」を使用して、ユーザー固有のオプションを設定します。
2.ハイブのインストール
1)Hiveインストールパッケージをダウンロードします
ダウンロードアドレス:https://dlcdn.apache.org/hive/、この記事のダウンロードバージョンは:apache-hive-2.3.9
記録は、Thunderなどのアクセラレーションソフトウェアを介してWindowsにダウンロードし、sftpツールを使用して対応するディレクトリにアップロードすることもできます。
cd ~/soft
wget https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
2)Hiveをインストールします
tar -xvf apache-hive-2.3.9-bin.tar.gz -C ~/opt
cd ~/opt
ln -s apache-hive-2.3.9-bin/ hive
環境変数を構成する
vi ~/.bashrc
最後に以下を追加します。
export HIVE_HOME=/home/xiaobai/opt/hive
export PATH=$HIVE_HOME/bin:$PATH
構成を有効にする
source ~/.bashrc
3)MySQLドライバーをアップロードします
MySQL接続ドライバーのダウンロードページ:https://downloads.mysql.com/archives/cj/
ここで、wgetを使用して5.1.49バージョンのコネクタをダウンロードします。
cd ~/soft
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.tar.gz
tar -xvf mysql-connector-java-5.1.49.tar.gz
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar ~/opt/hive/lib
もちろん、対応するコネクタをWindowsにダウンロードして、ディレクトリに渡すこともできます
$HIVE_HOME/lib
。
4)構成ファイルを変更します
構成ファイル:hive-site.xml
一般的な構成パラメーターの概要:
プロパティ名 | タイプ | デフォルト | 説明 |
---|---|---|---|
hive.metastore.warehouse.dir | URI | / user / hive / Warehouse | fs.defaultFSのディレクトリに関連して、管理対象テーブルはここに保存されます |
hive.metastore.uris | カンマ区切りのURI | 設定されていません | 設定されていない場合(デフォルト)、現在のメタストアが使用されます。設定されていない場合は、URIのリストで指定されているように、リモートメタストアサーバーに接続して接続します。複数のリモートサーバーがある場合、クライアントはラウンドロビン方式で接続します |
javax.jdo.option.ConnectionURL | URI | jdbc:derby:; databaseName = metastore_db; create = true | JDBC URL、mysql対象例:jdbc:mysql:// localhost:3306 / hive?createDatabaseIfNotExist = true |
javax.jdo.option.ConnectionDriverName | 弦 | org.apache.derby.jdbc.EmbeddedDriver | JDBCドライバーのクラス名mysqlの例:com.mysql.jdbc.Driver |
javax.jdo.option.ConnectionUserName | 弦 | アプリ | JDBCユーザー名 |
javax.jdo.option.ConnectionPassword | 弦 | 私の | JDBCパスワード |
hive-site.xmlを開きます
vi ~/opt/hive/conf/hive-site.xml
以下を追加します
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive?useSSL=false&createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive_pwd</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
</configuration>
特記事項:ここで設定されているデータベースホストはnode1であり、データベース**リモートアクセス不能**の問題を解決する必要があります
5)メタデータの初期化
(1)データベースがアカウントを承認します
mysql -uroot -pabc@@123
grant all privileges on hive.* to 'hive'@'%' identified by 'hive_pwd';
(2)メタデータを初期化する
schematool -dbType mysql -initSchema
3.テスト環境
1)hdfsとyarnを開始します
#确保启动hdfs和yarn
start-dfs.sh
start-yarn.sh
2)CLIコマンドウィンドウ
#进入hive的CLI命令窗口,hive命令后不跟参数时,默认启动cli,即下面命令等价于hive
hive --service cli
3)ビーラインクライアント
(1)HS2サービスを開始します
beelineクライアントを使用するには、hiveserver2サービス(HS2)を開始する必要があります
nohup hive --service hiveserver2 &
一部のバックグラウンドデーモンを起動する場合、次のコマンドと組み合わせ
nohup
て使用されることがよくあり&
ます。nohup <程序名> &
nohupでプログラムを実行する
- Ctrl + Cを使用してSIGINT信号を送信すると、プログラムが閉じます
- セッションを閉じてSIGHUP信号を送信すると、プログラムは影響を受けません
バックグラウンドで使用および実行
- Ctrl + Cを使用してSIGINTシグナルを送信し、イミュニティをプログラムします
- セッションを閉じてSIGHUP信号を送信すると、プログラムが閉じます
(2)ビーラインを開始します
#启动beeline
beeline
#在交互界面输入连接信息:
!connect jdbc:hive2://node1:10000
#输入用户名和密码
#查看所有数据库
show databases;
beelineの開始時に対応する接続パラメータを指定することもできます。
beeline -u jdbc:hive2://node1:10000 -n xiaobai -p 123456
- -u:接続するJDBC URL
- -n:接続するユーザー名
- -p:接続用のパスワード
これまでのところ、これで完了です。!!