Hiveの——Hive 2.3.4設置と配置

6913 ワード

転載は出典を明記してください。https://blog.csdn.net/l1028386804/article/details/88014099
HiveはHadoopベースのデータ倉庫です。構造化されたデータファイルをテーブルにマッピングして、クラスsqlクエリ機能を提供します。Hive下の階でsql文をMapReduceタスクに変換して実行します。Hive 2.3.4からmaste rの/home/dc 2-userをダウンロードして解凍します。
wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz
tar zxvf apache-hive-2.3.4-bin.tar.gz
Hive環境変数を設定します。
以下の内容を編集/etc/profileファイルに追加します。
sudo vi /etc/profile
export HIVE_HOME=/home/dc2-user/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
環境変数を有効にする:
source /etc/profile
Hiveを設定
以下の設定ファイルの名前を変更します。
cd apache-hive-2.3.4-bin/conf/ 
cp hive-env.sh.template hive-env.sh 
cp hive-default.xml.template hive-site.xml 
cp hive-log4j2.properties.template hive-log4j2.properties 
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
hive-env.shを変更:
export JAVA_HOME=/home/dc2-user/java/jdk1.8.0_191 ##Java   
export HADOOP_HOME=/home/dc2-user/hadoop-2.7.7 ##Hadoop     
export HIVE_HOME=/home/dc2-user/apache-hive-2.3.4-bin ##Hive     
export HIVE_CONF_DIR=$HIVE_HOME/conf ##Hive      
hive-site.xmlを修正します。
属性に対応するvalueの値を変更します。
vi hive-site.xml 
 
	hive.exec.scratchdir 
	/tmp/hive-${user.name} 
	HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/ is created, with ${hive.scratch.dir.permission}. 
 
 
	hive.exec.local.scratchdir 
	/tmp/${user.name} 
	Local scratch space for Hive jobs 
 
 
	hive.downloaded.resources.dir 
	/tmp/hive/resources 
	Temporary local directory for added resources in the remote file system. 
 
 
	 hive.querylog.location 
	/tmp/${user.name} 
	Location of Hive run time structured log file 

 
	hive.server2.logging.operation.log.location 
	/tmp/${user.name}/operation_logs 
	Top level directory where operation logs are stored if logging functionality is enabled 
Hive Metastoreの設定
Hive Metastoreは、Hiveテーブルとパーティションのメタデータを取得するために使用され、このようなメタデータは、本例ではmaridbを使用して記憶される。mysql-connector-java-51.40-bin.jarをHIVE_に入れます。HOME/libで、hive-site.xmlでMySQLデータベース接続情報を設定します。
 
	javax.jdo.option.ConnectionURL 
	jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false 
 

	javax.jdo.option.ConnectionDriverName
	com.mysql.jdbc.Driver


	javax.jdo.option.ConnectionUserName
	hive


	javax.jdo.option.ConnectionPassword 
	hive
HiveのためにHFSディレクトリを作成します。
start-dfs.s #       hadoop     ,        
hdfs dfs -mkdir /tmp 
hdfs dfs -mkdir -p /usr/hive/warehouse 
hdfs dfs -chmod g+w /tmp 
hdfs dfs -chmod g+w /usr/hive/warehouse
mysqlをインストールします
この例で使われているのはマリアードbです。
sudo yum install -y mariadb-server
sudo systemctl start mariadb
mysqlを登録して、初期はパスワードがなくて、Hveユーザーを創建してそしてパスワードを設定します。
mysql -uroot 
MariaDB [(none)]> create user'hive'@'localhost' identified by 'hive'; 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]> grant all privileges on *.* to hive@localhost identified by 'hive'; 
Query OK, 0 rows affected (0.00 sec)
Hiveを実行
Hiveを実行する前に、HFSが起動したことを保証しなければなりません。start-dfs.shを使って起動してもいいです。もし以前にHadoopをインストールしたなら、次のステップは省略できます。Hive 2.1バージョンからHiveを起動する前にschematolコマンドを実行して初期化操作を実行します。
schematool -dbType mysql -initSchema 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/dc2-user/apache-hive-2.3.4-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/dc2-user/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 
Metastore connection URL: jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true 
Metastore Connection Driver : com.mysql.jdbc.Driver 
Metastore connection User: hive 
Starting metastore schema initialization to 2.3.0 
Initialization script hive-schema-2.3.0.mysql.sql 
Initialization script completed schemaTool completed
Hiveを起動し、コマンドHiveを入力します。
hive 

which: no hbase in (/home/dc2-user/java/jdk1.8.0_191/bin:/home/dc2-user/hadoop-2.7.7/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/bin:/home/dc2-user/apache-hive-2.3.4-bin/bin:/home/dc2-user/.local/bin:/home/dc2-user/bin) 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/dc2-user/apache-hive-2.3.4-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/dc2-user/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 
Logging initialized using configuration in file:/home/dc2-user/apache-hive-2.3.4-bin/conf/hive-log4j2.properties Async: true Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. 
hive> 
テストHive
Hiveでテーブルを作成します。
hive> create table test_hive(id int, name string) 
    > row format delimited fields terminated by '\t' #     tab      
	> stored as textfile; #            ,   TEXTFILE,          ,     [STORED AS TEXTFILE],          HDFS ,hive         
OK 
Time taken: 10.857 seconds 
hive> show tables; 
OK test_hive 
Time taken: 0.396 seconds, Fetched: 1 row(s)
テーブルが作成されました。quitを入力してください。Hiveを終了して、次にテキスト形式でデータを作成します。
vi test_tb.txt
101	aa
102	bb
103	cc
Hiveに入り、データをインポートします。
hive> load data local inpath '/home/dc2-user/test_db.txt' into table test_hive; 
Loading data to table default.test_hive 
OK 
Time taken: 6.679 seconds 

hive> select * from test_hive; 
101 aa 
102 bb 
103 cc 
Time taken: 2.814 seconds, Fetched: 3 row(s)
データの挿入に成功し、正常に確認できます。