1. 程式人生 > >2016.6.13 零基礎學習hadoop到上手工作線路指導(中級篇)

2016.6.13 零基礎學習hadoop到上手工作線路指導(中級篇)

原文地址

附帶連結(待看)

中級篇學習筆記

進度:內容很多很雜,先看一下後半部分的hadoop生態系統。
操作:並未實際操作。

hadoop生態系統

最常用的是hive和hbase,因此著重學習這兩個。

hive相關學習

hive的概念

hive是hadoop的資料倉庫。
從這幾個角度來思考hive是什麼:它是什麼,有什麼功能,如何使用,與hadoop什麼關係,與hbase什麼關係。

hive是什麼
進度:已看完,但是仍未理解透徹,可能是因為沒有實戰。
操作:沒有實際操作。

1.hive是什麼
wiki百科:
The apahce Hive data warehouse software

facilitates querying and managing large datasets residing in distributed storage. Built on top of Apache Hadoop, it provides:
(1) tools to enable esay data extract/transform/load(ETL)
(2) a mechanism to impose structure on a variety of data formats
(3) access to files stored either directly in Apache HDFS or in orther storage systems such as Apache HBase
(4)query execution via MapReduce
上面英文的大致意思是:

Apache Hive資料倉庫軟體提供對儲存在分散式中的大型資料集的查詢和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:
(1)它提供了一系列的工具,可用來對資料進行提取/轉化/載入(ETL);
(2)是一種可以儲存、查詢和分析儲存在HDFS(或者HBase)中的大規模資料的機制;
(3)查詢是通過MapReduce來完成的(並不是所有的查詢都需要MapReduce來完成,比如select * from XXX就不需要)
(4)在Hive0.11對類似select a,b from XXX的查詢通過配置也可以不通過MapReduce來完成
簡言之:Hive是一種建立在Hadoop檔案系統上的資料倉庫架構,並對儲存在HDFS中的資料進行分析和管理;(也就是說對儲存在HDFS中的資料進行分析和管理,我們不想使用手工,我們建立一個工具把,那麼這個工具就可以是hive)

ps:什麼是資料倉庫?
資料庫一般儲存線上交易資料,資料倉庫儲存的一般是歷史資料

2.hive如何分析和管理資料
(1)Hive定義了一種類似SQL的查詢語言,被稱為HQL,對於熟悉SQL的使用者可以直接利用Hive來查詢資料。
(2)同時也允許開發者開發自定義的mappers和reducers來處理內建的mappers和reducers無法完成的複雜的分析工作。
(3)Hive可以允許使用者編寫自己定義的函式UDF,來在查詢中使用。Hive中有3種UDF:User Defined Functions(UDF)、User Defined Aggregation Functions(UDAF)、User Defined Table Generating Functions(UDTF)。

3.hive與hbase的聯絡與區別
共同點:
(1)hbase與hive都是架構在hadoop之上的。都是用hadoop作為底層儲存。
區別:
(1)Hive是建立在Hadoop之上為了減少MapReduce jobs編寫工作的批處理系統,HBase是為了支援彌補Hadoop對實時操作的缺陷的專案 。
(2)想象你在操作RMDB資料庫,如果是全表掃描,就用Hive+Hadoop,如果是索引訪問,就用HBase+Hadoop 。
(3)Hive本身不儲存和計算資料,它完全依賴於HDFS和MapReduce,Hive中的表純邏輯Hbase是物理表,不是邏輯表,提供一個超大的記憶體hash表,搜尋引擎通過它來儲存索引,方便查詢操作。

hive安裝指導

hive的安裝分為單機與叢集安裝兩種。


進度:大致瀏覽過,對流程有了瞭解但是並未詳細看細節。
操作:目前並未實際安裝。
問題:樓下提的問題。
hive報Invalid maximum heap size: -Xmx4096m錯誤解決方法
[email protected]:~/hive-0.6.0bin/hiveInvalidmaximumheapsize:Xmx4096mThespecifiedsizeexceedsthemaximumrepresentablesize.CouldnotcreatetheJavavirtualmachine./hive0.6.0/bin/ext/util vim execHiveCmd.sh修改HADOOP_HEAPSIZE=4096為HADOOP_HEAPSIZE=256

1.前提
(1)安裝了hadoop-1.0.4正常執行
(2)安裝了hbase-0.94.3, 正常執行

2.下載
step1:從http://hive.apache.org下載hive-0.9.0
step2:建立目錄/hive
step3:將安裝檔案保存於/hive下

3.解壓縮
[[email protected] download]# cd /hive
[[email protected] hive]# ls
hive-0.9.0.tar.gz
[[email protected] hive]# tar xfz hive-0.9.0.tar.gz (這裡的xfz是什麼???)

[[email protected] hive-0.9.0]# ls
bin conf docs examples lib LICENSE NOTICE README.txt RELEASE_NOTES.txt scripts src
[[email protected] hive-0.9.0]#

4.配置
step1:進入conf目錄
[[email protected] hive-0.9.0]# cd conf
[[email protected] conf]# ls
hive-default.xml.template hive-env.sh.template hive-exec-log4j.properties.template hive-log4j.properties.template
[[email protected] conf]#

step2:首先複製幾個template檔案
[[email protected] conf]# cp hive-default.xml.template hive-default.xml
[[email protected] conf]# cp hive-env.sh.template hive-env.sh
[[email protected] conf]# cp hive-log4j.properties.template hive-log4j.properties
[[email protected] conf]# cp hive-exec-log4j.properties.template hive-exec-log4j.properties

step3:配置對應的配置檔案(這有點沒懂)
a: hive-default.xml
預設先不修改
b:hive-env.sh
預設的為256M,此處暫時不調整
這裡寫圖片描述

step4:啟動
[[email protected] conf]# cd ../bin
[[email protected] bin]# ls
ext hive hive-config.sh
[[email protected] bin]# ./hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in file:/hive/hive-0.9.0/conf/hive-log4j.properties
Hive history file=/tmp/root/hive_job_log_root_201301032313_932376477.txt
hive>
hive> show tables;
OK
Time taken: 21.874 seconds
hive>

hive完全分散式叢集安裝過程(mysql)
上面需要說明的是hive預設資料庫並不是mysql,但是因為預設資料庫存在侷限,所以最好使用mysql。
進度:已經看完,每一步都理解了,但是具體要改的檔案和引數,沒法自己解決,得看著一步步操作才行。所以是理解了動作但是沒理解動作的含義和聯絡。
操作:未實際操作。

1.準備環境
Hadoop版本:0.20.2
Hive版本:0.9.0
mysql版本: 5.6.11

2.安裝
step1:在mysql中建立hive使用者,並且賦予足夠許可權
[[email protected] mysql]# mysql -u root -p
Enter password:

mysql> create user ‘hive’ identified by ‘hive’;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on . to ‘hive’ with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

step2:測試hive使用者是否能正常連線mysql,並且建立hive資料庫
[[email protected] mysql]# mysql -u hive -p
Enter password:

mysql> create database hive;
Query OK, 1 row affected (0.00 sec)

mysql> use hive;
Database changed
mysql> show tables;
Empty set (0.00 sec)

step3:解壓縮hive安裝包
tar -xzvf hive-0.9.0.tar.gz
[[email protected] ~]cdhive0.9.0[hadoop@node01hive0.9.0] ls
bin conf docs examples lib LICENSE NOTICE README.txt RELEASE_NOTES.txt scripts src

step4:下載mysql連線java的驅動,並拷入hive home的lib下
[[email protected] ~]$ mv mysql-connector-java-5.1.24-bin.jar ./hive-0.9.0/lib

step5:修改環境變數,把hive加到PATH
/etc/profile
export HIVE_HOME=/home/hadoop/hive-0.9.0
export PATH=PATH:HIVE_HOME/bin

step6:修改hive-env.sh
[[email protected] conf]$ cp hive-env.sh.template hive-env.sh
[[email protected] conf]$ vi hive-env.sh

step7:拷貝hive-default.xml並命名為hive-site.xml
[[email protected] conf]$ cp hive-default.xml.template hive-site.xml
[[email protected] conf]$ vi hive-site.xml

修改四個關鍵配置 為上面mysql的配置(修改哪個檔案?
修改配置

step8:啟動hadoop,開啟hive shell測試
[[email protected] conf]$ start-all.sh
這裡寫圖片描述

records在HDFS中就是一個檔案:
[[email protected] home]$ hadoop fs -ls /user/hive/warehouse/records
Found 1 items
-rw-r–r– 2 hadoop supergroup 7118627 2013-04-15 20:06 /user/hive/warehouse/records/access_log.txt

hive基本操作
重點兩個:熟練的增刪改查;與傳統資料庫的區別;更高階的是理解其中的原理,這樣遇到問題的時候就能自己解決。
進度:瀏覽完畢,但是語法這種東西不用的時候看過會就忘了。所以知道大概然後用的時候來看就行。
操作:未實際操作。
中級篇中有很多關於hive的學習連結,暫不詳細的一一去看了。
hive的詳細學習:基本操作、語法和原理

hive與hibase的結合使用

to be continued~

相關推薦

2016.6.13 基礎學習hadoop上手工作線路指導中級

原文地址 附帶連結(待看) 中級篇學習筆記 進度:內容很多很雜,先看一下後半部分的hadoop生態系統。 操作:並未實際操作。 hadoop生態系統 最常用的是hive和hbase,因此著重學習這兩個。 hive相關學習

大資料-基礎學習hadoop上手工作線路指導初級

零基礎學習hadoop,沒有想象的那麼困難,也沒有想象的那麼容易。在剛接觸雲端計算,曾經想過培訓,但是培訓機構的選擇就讓我很糾結。所以索性就自己學習了。整個過程整理一下,給大家參考,歡迎討論,共同學習。 從一開始什麼都不懂,到能夠搭建叢集,開發。整個過程,只要有Linux基礎,虛擬機器化和java基礎,其

基礎學習hadoop開發先明白這層關係

零基礎學習hadoop開發先明白這層關係 大資料hadoop無疑是當前網際網路領域受關注熱度最高的詞之一,大資料技術的應用正在潛移默化中對我們的生活和工作產生巨大的改變。這種改變給我們的感覺是“水到渠成”,更為讓人驚歎的是大資料已經僅僅是網際網路行業的風口了,更是被上升到了國家戰略層面的高度

基礎學習Hadoop

原文:http://www.aboutyun.com/thread-6780-1-1.html 零基礎學習hadoop,沒有想象的那麼困難,也沒有想象的那麼容易。在剛接觸雲端計算,曾經想過培訓,但是培訓機構的選

salesforce lightning基礎學習(八) Aura Js 淺談一: Component

我們在開發lightning的時候,常常會在controller.js中寫 component.get('v.label'), component.set('v.label','xxValue'); 小夥伴肯定有疑問這些方法是怎麼定義的,lightning到底有多少已經宣告的方法可供我們使用,此篇主要講述a

salesforce lightning基礎學習(九) Aura Js 淺談二: Event

上一篇介紹了Aura Framework中 Component類的部分方法,本篇將要介紹Event常用的方法。 1. setParam (String key , Object value):設定事件的param,此項設定不會修改已經被觸發的事件。我們在建立

基礎向】軟考之路第一章計算機系統知識第三節

寫在前面:       本系列文章用於記錄本人軟考學習歷程,適用於零基礎人群,每天不定期更新,如果讀者哪裡不理解或者發現哪裡理解的有問題,歡迎評論,一起進步學習,祝大家都能順利通過考試~第三節 資料表示    本節主要是考察進位制轉換,也就是計算能力,需要熟記各個進位制之間的

2016年計算機視覺&機器學習領域國內重要會議 彙總 持續更新

前言 國內每年都會舉辦很多計算機視覺(Computer Vision,CV)、 機器學習(Machine Learning,ML)領域相關的很多學術會議和研討會等。有一些是收費徵稿的學術會議,有一些是免費不徵稿的研討會;有一些偏重學術研究,有一些偏重應用落地;

Java工程師學習指南中級

本文首發於微信公眾號:程式設計師江湖 Java工程師學習指南 中級篇 最近有很多小夥伴來問我,Java小白如何入門,如何安排學習路線,每一步應該怎麼走比較好。原本我以為之前的幾篇文章已經可以解決大家的問題了,其實不然,因為我寫的文章都是站在Java後端的全域性上進行思考和總結的,忽略

開始的全棧工程師——面向物件

面向物件程式設計 面向物件程式設計是用抽象方式建立基於現實世界模型的一種程式設計模式。它使用先前建立的範例,包括模組化,多型和封裝幾種技術。今天,許多流行的程式語言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby和Objective-C)都支援面向物件程式設計(OOP)。

hadoop之mapreduce詳解優化

一、概述      優化前我們需要知道hadoop適合幹什麼活,適合什麼場景,在工作中,我們要知道業務是怎樣的,能才結合平臺資源達到最有優化。除了這些我們當然還要知道mapreduce的執行過程,比如從檔案的讀取,map處理,shuffle過程,reduce處理,檔案的輸出或者

基礎學習大資料難不難?小白如何上手大資料?

目前,大資料人才短缺。許多人希望通過培訓進入大資料產業。同時,他們會問,大資料培訓難學嗎?零基點能學到大資料嗎?大資料培訓並不難,但仍有賴於個人堅持不懈的學習。大資料的零基礎培訓當然沒有問題。目前,許多大資料培訓機構都開設了零起點的培訓課程。這也是絕大多數學生的福利。在這個人才短缺的時代,把握時間,找到正確的

Java基礎學習Java編程語言從哪兒入手?

軟件工程是計算機領域發展最快的學科分支之一,國家非常重視軟件行業的發展。對軟件工程師人才的培養給予了非常優惠的政策。在所有軟件開發類人才的需求中對Java工程師的需求達到全部需求量的60~70%。應該說Java軟件工程師就業前景是非常好的,再加上Java軟件工程師不僅IT專業企業需要,廣大的非IT企業也

salesforce基礎學習七十二項目中的零碎知識點小總結

gin 不同 grant dmi ima -m ron 角色 com 項目終於告一段落,雖然比較苦逼,不過也學到了好多知識,總結一下,以後當作參考。 一.visualforce標簽中使用html相關的屬性使用 曾經看文檔沒有看得仔細,導致開發的時候走了一些彎路。還好得到

基礎學習python

fix pytho 零基礎 基礎 tar install 基礎學習 默認 prefix wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar -zxvf Python-2.7.8.tgz cd Py

salesforce基礎學習七十四apex:actionRegion以及apex:actionSupport淺談

xxx turn 組件 聯動 異步 action cti 相關 bottom 我們在開發中,很難會遇見不提交表單的情況。常用的apex:commandButton,apex:commandLink,apex:actionFunction,apex:actionSupport

Python基礎學習系列之二--Python介紹及環境搭建

url 軟件包 三方庫 簡單的 lin 文件的 span 高級程序設計 擴展 1-1、Python簡介:  Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年

五本書籍助你從基礎學習java編程到精通之路

html 書籍 區域 快速 學會 即使 沒有 j2e j2se 前天的文章給大家介紹了Java初學者應該學習哪些基礎,亦是美網絡小編從Java的三個大方向:J2SE、J2EE、J2ME對大家做了前景分析,這兩天也收到了大家的很多反饋,很多小夥伴看了後對自己的Java編程方向

python基礎學習-基礎知識1-python簡介

聲明 gb2312 線程 1byte 基礎知識 優勢 org 格式 使用 編程語言分類方法1: 編譯型: 如C,C++, 編寫代碼為源文件, 要編輯生成可執行文件才能執行 解釋型: 如vbs, python無需編譯, 使用解釋器來執行, 可執行性更好; java使用了兩者

python基礎學習-基礎知識2-代碼初見

name clas nco and tin put 輸出 strong break 註釋及引號的使用 #我是一行註釋 ‘‘‘ 那麽巧, 我也是一行註釋 ‘‘‘ print(‘‘‘打印多行字符串-第一行 打印多行字符串-第二行 ‘‘‘) print("我在嘗試引號嵌套‘我在