基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生態中的一個重要組成部分,主要用于數據倉庫。前面的文章中我們已經搭建好了Hadoop的群集,下面我們在這個群集上再搭建Hive的群集。
1.安裝MySQL
1.1安裝MySQL Server
在Ubuntu下面安裝MySQL的Server很簡單,只需要運行:
sudo apt-get install mysql-server系統會把MySQL下載并安裝好。這里我們可以把MySQL安裝在master機器上。
安裝后需要配置用戶名密碼和遠程訪問。
1.2配置用戶名密碼
首先我們以root身份登錄到mysql服務器:
sudo mysql -u root然后修改root的密碼,并允許root遠程訪問:
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "123456";我們這里還可以為hive建立一個用戶,而不是用root用戶:
GRANT ALL PRIVILEGES ON *.* TO hive@'%' IDENTIFIED BY "hive";運行完成后quit命令即可退出mysql的命令行模式。
1.3配置遠程訪問
默認情況下,MySQL是只允許本機訪問的,要允許遠程機器訪問需要修改配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf找到bind-address的配置部分,然后改為:
bind-address????????? = 0.0.0.0
保存,重啟mysql服務
sudo service mysql restart重啟完成后,我們可以在Windows下,用MySQL的客戶端連接master上的MySQL數據庫,看是否能夠遠程訪問。
2.下載并配置Hive
2.1下載Hive
首先我們到官方網站,找到Hive的下載地址。http://www.apache.org/dyn/closer.cgi/hive/ 會給出一個建議的網速快的下載地址。
然后在master服務器上,wget下載hive的編譯好的文件,我現在最新版是Hive 2.1.1 :
wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz下載完成后,解壓這個壓縮包
tar xf apache-hive-2.1.1-bin.tar.gz按之前Hadoop的慣例,我們還是把Hive安裝到/usr/local目錄下吧,所以移動Hive文件:
sudo mv apache-hive-2.1.1-bin /usr/local/hive2.2配置環境變量
sudo vi /etc/profile增加如下配置:
export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/hive/lib2.3配置hive-env.sh
所有Hive的配置是在/usr/local/hive/conf目錄下,進入這個目錄,我們需要先基于模板新建hive-env.sh文件: cp hive-env.sh.template hive-env.sh vi hive-env.sh 指定Hadoop的路徑,增加以下行: HADOOP_HOME=/usr/local/hadoop2.4配置hive-site.xml
cp hive-default.xml.template hive-site.xml vi hive-site.xml 首先增加mysql數據庫的連接配置: <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description> </property> <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description> </property> <property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description> </property> <property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description> </property> 然后需要修改臨時文件夾的路徑,找到以下2個配置,并改為正確的路徑: <property> <name>hive.exec.local.scratchdir</name><value>/home/hduser/iotmp</value><description>Local scratch space for Hive jobs</description></property><property><name>hive.downloaded.resources.dir</name><value>/home/hduser/iotmp</value><description>Temporary local directory for added resources in the remote file system.</description></property>這里因為我當前用戶是hduser,所以我在hduser的目錄下創建一個iotmp文件夾,并授權:
mkdir -p /home/hduser/iotmp chmod -R 775 /home/hduser/iotmp2.5修改hive-config.sh
進入目錄/usr/local/hive/bin vi hive-config.sh 在該文件的最前面加入以下配置: export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export HADOOP_HOME=/usr/local/hadoop export HIVE_HOME=/usr/local/hive2.6下載MySQL JDBC驅動
去MySQL的官網,https://dev.mysql.com/downloads/connector/j/? 下載JDBC驅動到master服務器上。
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.40.tar.gz
下載完后解壓
tar xf mysql-connector-java-5.1.40.tar.gz然后進入解壓后的目錄,把jar包復制到Hive/lib目錄下面
cp mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib/2.7在HDFS中創建目錄和設置權限
啟動Hadoop,在Hadoop中創建Hive需要用到的目錄并設置好權限:
hadoop fs -mkdir /tmp hadoop fs -mkdir -p /user/hive/warehouse hadoop fs -chmod g+w /tmp hadoop fs -chmod g+w /user/hive/warehouse2.8初始化meta數據庫
進入/usr/local/hive/lib目錄,初始化Hive元數據對應的MySQL數據庫: schematool -initSchema -dbType mysql3.使用Hive
在命令行下,輸入hive命令即可進入Hive的命令行模式。我們可以查看當前有哪些數據庫,哪些表: show databases; show tables; 關于hive命令下有哪些命令,具體介紹,可以參考官方文檔:https://cwiki.apache.org/confluence/display/Hive/Home3.1創建表
和普通的SQL創建表沒有太大什么區別,主要是為了方便,我們設定用\t來分割每一行的數據。比如我們要創建一個用戶表: create table Users (ID int,Name String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';3.2插入數據
是insert語句可以插入單條數據: insert into Users values(1,'Devin'); 如果要導入數據 我們在Ubuntu下創建一個name.txt文件,然后編輯其中的內容,添加如下內容:2?????? Edward
3?????? Mindy
4?????? Dave
5?????? Joseph
6?????? Leo
列直接我是用Tab隔開的。
如果想把這個txt文件導入hive的Users 表,那么只需要在hive中執行:
LOAD DATA LOCAL INPATH '/home/hduser/names.txt' into table Users ;3.3查詢數據
仍然是sql語句: select * from Users ; 當然我們也可以跟條件的查詢語句: select * from Users where Name like 'D%';3.4增加一個字段
比如我們要增加生日這個字段,那么語句為: alter table Users add columns (BirthDate date);3.5查詢表定義
我們看看表的結構是否已經更改,查看Users表的定義: desc Users;3.6其他
另外還有重名了表,刪除表等,基本也是SQL的語法: alter table Users rename to Student; 刪除一個表中的所有數據: truncate table Student; 【另外需要注意,Hive不支持update和delete語句。似乎只有先truncate然后在重新insert。】轉載于:https://www.cnblogs.com/studyzy/p/setup-hive.html
總結
以上是生活随笔為你收集整理的基于Ubuntu Hadoop的群集搭建Hive的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库开发】Redis key-val
- 下一篇: 百度云使用第三方工具下载文件