基於Ubuntu Hadoop的群集搭建Hive

来源:http://www.cnblogs.com/studyzy/archive/2016/12/22/setup-hive.html
-Advertisement-
Play Games

Hive是Hadoop生態中的一個重要組成部分,主要用於數據倉庫。前面的文章中我們已經搭建好了Hadoop的群集,下麵我們在這個群集上再搭建Hive的群集。 1.安裝MySQL 1.1安裝MySQL Server 在Ubuntu下麵安裝MySQL的Server很簡單,只需要運行: 系統會把MySQL ...


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/hive

2.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/lib

2.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/hadoop

2.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/iotmp

2.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/hive

2.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/warehouse

2.8初始化meta資料庫

進入/usr/local/hive/lib目錄,初始化Hive元數據對應的MySQL資料庫:
schematool -initSchema -dbType mysql

3.使用Hive

在命令行下,輸入hive命令即可進入Hive的命令行模式。我們可以查看當前有哪些資料庫,哪些表:
show databases;
show tables;
關於hive命令下有哪些命令,具體介紹,可以參考官方文檔:https://cwiki.apache.org/confluence/display/Hive/Home

3.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。】

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MongoDB提供了備份和恢復的功能,分別是MongoDB下載目錄下的mongodump.exe和mongorestore.exe文件 1.備份數據使用下麵的命令: >mongodump -h dbhost -d dbname -o dbdirectory -h:MongDB所在伺服器地址,例如:1 ...
  • 1.創建集合有兩種方式,顯示創建和隱式創建 顯示創建可以使用命令 db.createCollection(“集合名稱") 隱式創建可以使用命令 db.集合名稱.insert({}),指創建集合併同時向集合中插入數據,例如:db.customer.insert({name:”jack”}) 刪除集合使 ...
  • 前段時間在做用戶畫像的時候,遇到了這樣的一個問題,記錄某一個商品的用戶購買群,剛好這種需求就可以用到Redis中的Set,key作為productID,value 就是具體的customerid集合,後續的話,我就可以通過productid來查看該customerid是否買了此商品,如果購買了,就可 ...
  • 本文地址 分享提綱: 1.為查詢緩存優化你的查詢 2. EXPLAIN 你的 SELECT 查詢 3. 當只要一行數據時使用 LIMIT 1 4. 為搜索欄位建索引 5. 在Join表的時候使用相當類型的例,並將其索引 6. 千萬不要 ORDER BY RAND() 7. 避免 SELECT * 8 ...
  • 一、更改my.cnf配置文件 1.用命令編輯/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 2.在[mysqld]下添加skip-grant-tables,然後保存並退出 3.重啟mysql服務:service mysqld restart 二 ...
  • mysql查詢過程: 客戶端發送查詢請求。 伺服器檢查查詢緩存,如果命中緩存,則返回結果,否則,繼續執行。 伺服器進行sql解析,預處理,再由優化器生成執行計劃。 Mysql調用存儲引擎API執行優化器生成的執行計划進行查詢。 返回結果。 mysql查詢過程: 優化數據訪問: 是否查詢了多餘的記錄; ...
  • 監控Oracle資料庫我們需要安裝第三方提供的Zabbix插件,我們先測試比較有名的Orabbix,http://www.smartmarmot.com/product/orabbix/ 從部署架構圖上可以看出,orabbix是通過JDBC去連接被監控資料庫的,其實不是必須在資料庫主機上安裝Agen ...
  • 概述 在RAC環境下配置OGG,要想實現RAC節點故障時,OGG能自動的failover到正常節點,要保證兩點: 1. OGG的checkpoint,trail,BR文件放置在共用的集群文件系統上,RAC各節點都能訪問到 2. 需要有集群軟體的來監測OGG進程,以及發生故障時,自動在正常節點重啟OG ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...