Hive(一)
Hive(一)
一、什么是Hive
hive是基于hadoop的?一個數據倉庫?工具,可以將結構化的數據?文件映射為?一張數據庫表,并提供類sql查詢功能
為社么要使用Hive
一、直接使用hadoop面臨的問題: 1)、學習成本高 2)、項目周期要求短 3)、MapReduce實現復雜查詢邏輯開發難度大 二、為什么用hive 1)、接口采用類sql語法,提供快速開發能力 2)、避免寫MapReduce,減少學習承辦 3)、擴展功能方便
二、Hive特點
1)、可擴展性 hive可自由擴展集群規模,一般情況不需要重啟 2)、延展性 hive支持用戶自定義函數,用戶可根據自己的需求來實現函數 3)、容錯 良好的容錯性,節點出現問題sql仍可完成執行
三、Hive架構圖
四、Hive與Hadoop的關系
Hive利用HDFS存儲數據,利用MapReduce查詢數據
五、關于Hive的理解
六、Hive的數據存儲
1、Hive中所以的數據都存儲在HDFS中,沒有專門的數據存儲格式 2、只需要在創建表的時候,告訴hive數據中列分隔符和行分隔符,Hive就可以解析數據 3、Hive中包含以下數據模型(DB,Table,ExternalTable,Partition,Bucker) db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾 table:在hdfs中表現所屬db目錄下一個文件夾 external table:外部表, 與table類似,不過其數據存放位置可以在任意指定路徑 普通表: 刪除表后, hdfs上的文件都刪了 External外部表刪除后, hdfs上的文件沒有刪除, 只是把文件刪除了 partition:在hdfs中表現為table目錄下的子目錄 bucket:桶, 在hdfs中表現為同一個表目錄下根據hash散列之后的多個文件, 會根據不同的文件把數據放到不同的文件中
七、Hive的安裝與部署
需要準備,Hadoop集群,Mysql數據庫 一、下載Hive安裝包 http://hive.apache.org/downloads.html
2、將hive文件上傳到HADOOP集群,并解壓
# 目錄需要自己修改 tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /export/servers/ cd /export/servers/ ln -s apache-hive-1.2.1-bin hive 復制代碼3、配置環境變量,編輯/etc/profile
#set hive env export HIVE_HOME=/export/servers/hive export PATH=${HIVE_HOME}/bin:$PATH #讓環境變量生效 source /etc/profile 復制代碼4、增加hive-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost: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>你的mysql用戶名</value> <description>username to use against metastore database</description> </property><property> <name>javax.jdo.option.ConnectionPassword</name> <value>你的mysql密碼</value> <description>password to use against metastore database</description> </property> </configuration> 復制代碼5、啟動Hive 進入到bin文件中,找到hive
./hive 復制代碼需要注意,下載mysql-connector-java-5.1.27.jar mysql的驅動包 6. Jline包版本不一致的問題,需要拷貝hive的lib目錄中jline.2.12.jar的jar包替換掉hadoop中的
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar 復制代碼7、mysql修改權限
mysql -uroot -p#(執行下面的語句 *.*:所有庫下的所有表 %:任何IP地址或主機都可以連接)GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;FLUSH PRIVILEGES; 復制代碼下面的是我的公眾號二維碼圖片,歡迎關注我。
總結
- 上一篇: 分布式系统理论基础1: 一致性、2PC和
- 下一篇: CVPR!你凭什么收录我3篇论文!?