Hadoop簡介

原來:計算效率低java

如今:成本下降,能用PC機,就不用大型機和高端存儲了;軟件容錯硬件故障視爲常態,經過軟件保證可靠性;簡化並行分佈式計算,無需控制節點同步和數據交換,可是谷歌只發表了相關技術論文,沒有開源實現,hadoop是模仿谷歌大數據技術的開源實現來了。node

谷歌大數據技術:MapReduce、BigTable、GFSlinux

目前hadoop是屬於apache,他是開源的,分佈式存儲和分佈式計算的平臺。sql

核心組成:數據庫

HDFS,分佈式文件系統,存儲海量數據;apache

MapReduce,並行處理框架,實現任務分解和調度。編程

用來作什麼?vim

搭建大型倉庫,PB級數據存儲、處理、分析、統計;搜索引擎,商業智能,日誌分析,數據挖掘瀏覽器

性能優點:1。經過增長一些硬件,高擴展,提升性能;2.低成本;3.成熟的生態圈bash

應用:百度、淘寶、華爲、新浪、京東、網易、騰訊、小米

人才:開發人才和運維人才

生態圈(小工具):HDFS

MapReduce

Hive(小蜜蜂,表明着一種牽引,不用寫複雜的hadoop任務,只須要寫個簡單的sql語句,hive就會把sql語句轉化成hadoop任務去執行,下降了使用hadoop的門檻)、

HBase:與傳統的關係型數據庫不一樣,放棄事物的特性,追求更高的擴展;與HDFS的不一樣,hbase提供對數據的隨機讀寫和實時訪問,實現對錶數據的讀寫功能、

zookeeper:動物管理員,監控hadoop集羣中每一個節點的狀態,配置,維護節點之間數據的一次性

版本選擇:1.x與2.x差異挺大,但1.x比較穩定,易學,好上手

獲取linux操做系統:

租用雲主機:阿里雲、UnitedStack等。   申請雲主機、公網IP,將雲主機與公網IP綁定。使用雲主機很是方便,能夠不用像虛擬機那樣得受本地計算機性能的影響。hadoop須要在linux操做環境下運行的。

javac是啥?  安裝JDK

是java編程的編譯器,把.java  翻譯成 .class 文件  由於hadoop是java寫的,因此須要javac編譯器

Linux配置環境變量 vim /etc/profile .bashrc .bash_profile  。得到編譯器以後須要在系統中配置環境變量

export CLASS_PATH=./:$JAVA_HOME/lib
export JAVA_OPTIONS=-Djava.security.egd=file:/dev/./urandom
export PATH=$JAVA_HOME/bin:$PATH
export:設置或顯示環境變量。(好比咱們要用一個命令,但這個命令的執行文件不在當前目錄,這樣咱們每次用的時候必須指定執行文件的目錄,麻煩,在代碼中先執行export,這個至關於告訴程序,執行某某東西時,須要的文件或什麼東東在這些目錄裏).

source /etc/profile  在當前bash環境下讀取並執行FileName中的命令。意思是讓這個文件生效。計算機很笨的,得我一點一點指揮告訴他下一步要作什麼,建立文件,環境變量路徑須要我告訴它,編輯修改文件,執行。。。每一步

apt -get install <pacakge>  這個是linux軟件管理包的工具

wget 網址路徑  就能夠自動下載

wget是一個下載文件的工具,它用在命令行下。對於Linux用戶是必不可少的工具,咱們常常要下載一些軟件或從遠程服務器恢復備份到本地服務器。wget支持HTTP,HTTPS和FTP協議,可使用HTTP代理。所謂的自動下載是指,wget能夠在用戶退出系統的以後在後臺執行。這意味這你能夠登陸系統,啓動一個wget下載任務,而後退出系統,wget將在後臺執行直到任務完成,相對於其它大部分瀏覽器在下載大量數據時須要用戶一直的參與,這省去了極大的麻煩。


 

HDFS

HDFS的文件被分紅塊進行存儲,默認大小是64M,塊是文件存儲處理的邏輯單元。一共有兩個節點,namenode與datanode

NameNode節點:是管理節點,存放文件元數據。文件與數據塊的映射表;數據塊與數據節點的映射表

DataNode節點:是工做節點,存放數據塊的。因爲廉價機器,每一個節點都有可能會出錯,因此經過建立副本(備份),保證數據不會丟失,實現容錯性

datanode 按期向 namenode彙報他的狀態:網絡有沒有斷,關機?宕機?整個狀態會以一個心跳協議發送給namenode

若是namenode發生故障,整個這裏邊的原數據都會丟失,爲了保證不丟失,作了個備份,原數據會按期同步到secondnamenode中去,大部分狀況下,只要namenode不出毛病,secondnamenode只會作個備份,他不接收請求。可是,一旦namenode發生故障了,secondnamenode便會替換namenode,變成主的namenode。就跟替補隊員似的,一場球賽中,替補隊員也要在旁邊看着比賽,一旦正式的出問題了,立馬衝上去。

 

客戶端(java程序/命令行)把文件名,路徑告訴namenode,namenode查詢原數據,把原數據返回給客戶端,客戶端就知道文件包含在那些塊中,以及這些塊分別能夠在哪些datanode中找獲得,客戶端就會找到他們,讀取他們,把他們下載下來,再進行組裝。it's over

相關文章
相關標籤/搜索