1、什麼是大數據 基本概念 《數據處理》 在互聯網技術發展到現今階段,大量日常、工作等事務產生的數據都已經信息化,人類產生的數據量相比以前有了爆炸式的增長,以前的傳統的數據處理技術已經無法勝任,需求催生技術,一套用來處理海量數據的軟體工具應運而生,這就是大數據! 處理海量數據的核心技術: 海量數據存 ...
1、什麼是大數據
基本概念
《數據處理》
在互聯網技術發展到現今階段,大量日常、工作等事務產生的數據都已經信息化,人類產生的數據量相比以前有了爆炸式的增長,以前的傳統的數據處理技術已經無法勝任,需求催生技術,一套用來處理海量數據的軟體工具應運而生,這就是大數據!
處理海量數據的核心技術:
海量數據存儲:分散式
海量數據運算:分散式
這些核心技術的實現是不需要用戶從零開始造輪子的
存儲和運算,都已經有大量的成熟的框架來用
存儲框架:
HDFS——分散式文件存儲系統(HADOOP中的存儲框架)
HBASE——分散式資料庫系統
KAFKA——分散式消息緩存系統(實時流式數據處理場景中應用廣泛)
運算框架:(要解決的核心問題就是幫用戶將處理邏輯在很多機器上並行)
MAPREDUCE—— 離線批處理/HADOOP中的運算框架
SPARK —— 離線批處理/實時流式計算
STORM —— 實時流式計算
輔助類的工具(解放大數據工程師的一些繁瑣工作):
HIVE —— 數據倉庫工具:可以接收sql,翻譯成mapreduce或者spark程式運行
FLUME——數據採集
SQOOP——數據遷移
ELASTIC SEARCH —— 分散式的搜索引擎
.......
換個角度說,大數據是:
1、有海量的數據
2、有對海量數據進行挖掘的需求
3、有對海量數據進行挖掘的軟體工具(hadoop、spark、storm、flink、tez、impala......)
大數據在現實生活中的具體應用
數據處理的最典型應用:公司的產品運營情況分析
電商推薦系統:基於海量的瀏覽行為、購物行為數據,進行大量的演算法模型的運算,得出各類推薦結論,以供電商網站頁面來為用戶進行商品推薦
精準廣告推送系統:基於海量的互聯網用戶的各類數據,統計分析,進行用戶畫像(得到用戶的各種屬性標簽),然後可以為廣告主進行有針對性的精準的廣告投放
2、什麼是hadoop
hadoop中有3個核心組件:
分散式文件系統:HDFS —— 實現將文件分散式存儲在很多的伺服器上
分散式運算編程框架:MAPREDUCE —— 實現在很多機器上分散式並行運算
分散式資源調度平臺:YARN —— 幫用戶調度大量的mapreduce程式,併合理分配運算資源
3、hdfs整體運行機制
hdfs:分散式文件系統
hdfs有著文件系統共同的特征:
1、有目錄結構,頂層目錄是: /
2、系統中存放的就是文件
3、系統可以提供對文件的:創建、刪除、修改、查看、移動等功能
hdfs跟普通的單機文件系統有區別:
1、單機文件系統中存放的文件,是在一臺機器的操作系統中
2、hdfs的文件系統會橫跨N多的機器
3、單機文件系統中存放的文件,是在一臺機器的磁碟上
4、hdfs文件系統中存放的文件,是落在n多機器的本地單機文件系統中(hdfs是一個基於linux本地文件系統之上的文件系統)
hdfs的工作機制:
1、客戶把一個文件存入hdfs,其實hdfs會把這個文件切塊後,分散存儲在N台linux機器系統中(負責存儲文件塊的角色:data node)<準確來說:切塊的行為是由客戶端決定的>
2、一旦文件被切塊存儲,那麼,hdfs中就必須有一個機制,來記錄用戶的每一個文件的切塊信息,及每一塊的具體存儲機器(負責記錄塊信息的角色是:name node)
3、為了保證數據的安全性,hdfs可以將每一個文件塊在集群中存放多個副本(到底存幾個副本,是由當時存入該文件的客戶端指定的)
綜述:一個hdfs系統,由一臺運行了namenode的伺服器,和N台運行了datanode的伺服器組成!
4、搭建hdfs分散式集群
4.1 hdfs集群組成結構:
4.2 安裝hdfs集群的具體步驟:
一、首先需要準備N台linux伺服器
學習階段,用虛擬機即可!
先準備4台虛擬機:1個namenode節點 + 3 個datanode 節點
二、修改各台機器的主機名和ip地址
主機名:hdp-01 對應的ip地址:192.168.33.61
主機名:hdp-02 對應的ip地址:192.168.33.62
主機名:hdp-03 對應的ip地址:192.168.33.63
主機名:hdp-04 對應的ip地址:192.168.33.64
三、從windows中用CRT軟體進行遠程連接
在windows中將各台linux機器的主機名配置到的windows的本地功能變數名稱映射文件中:
c:/windows/system32/drivers/etc/hosts
192.168.33.61 hdp-01 192.168.33.62 hdp-02 192.168.33.63 hdp-03 192.168.33.64 hdp-04 |
用crt連接上後,修改一下crt的顯示配置(字型大小,編碼集改為UTF-8):
四、配置linux伺服器的基礎軟體環境
l 防火牆
關閉防火牆:service iptables stop
關閉防火牆自啟: chkconfig iptables off
l 安裝jdk:(hadoop體系中的各軟體都是java開發的)
1) 利用alt+p 打開sftp視窗,然後將jdk壓縮包拖入sftp視窗
2) 然後在linux中將jdk壓縮包解壓到/root/apps 下
3) 配置環境變數:JAVA_HOME PATH
vi /etc/profile 在文件的最後,加入:
export JAVA_HOME=/root/apps/jdk1.8.0_60 export PATH=$PATH:$JAVA_HOME/bin |
4) 修改完成後,記得 source /etc/profile使配置生效
5) 檢驗:在任意目錄下輸入命令: java -version 看是否成功執行
6) 將安裝好的jdk目錄用scp命令拷貝到其他機器
7) 將/etc/profile配置文件也用scp命令拷貝到其他機器並分別執行source命令
l 集群內主機的功能變數名稱映射配置
在hdp-01上,vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.33.61 hdp-01 192.168.33.62 hdp-02 192.168.33.63 hdp-03 192.168.33.64 hdp-04 |
然後,將hosts文件拷貝到集群中的所有其他機器上
scp /etc/hosts hdp-02:/etc/
scp /etc/hosts hdp-03:/etc/
scp /etc/hosts hdp-04:/etc/
補充 提示: |
如果在執行scp命令的時候,提示沒有scp命令,則可以配置一個本地yum源來安裝 1、先在虛擬機中配置cdrom為一個centos的安裝鏡像iso文件 2、在linux系統中將光碟機掛在到文件系統中(某個目錄) 3、mkdir /mnt/cdrom 4、mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom 5、檢驗掛載是否成功: ls /mnt/cdrom 6、3、配置yum的倉庫地址配置文件 7、yum的倉庫地址配置文件目錄: /etc/yum.repos.d 8、先將自帶的倉庫地址配置文件批量更名:
9、然後,拷貝一個出來進行修改
10、修改完配置文件後,再安裝scp命令: 11、yum install openssh-clients -y |
l 五、安裝hdfs集群
1、上傳hadoop安裝包到hdp-01
2、修改配置文件
要點提示 |
核心配置參數: 1) 指定hadoop的預設文件系統為:hdfs 2) 指定hdfs的namenode節點為哪台機器 3) 指定namenode軟體存儲元數據的本地目錄 4) 指定datanode軟體存放文件塊的本地目錄 |
hadoop的配置文件在:/root/apps/hadoop安裝目錄/etc/hadoop/
1) 修改hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_60
2) 修改core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp-01:9000</value> </property> </configuration> |
3) 修改hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/root/hdpdata/name/</value> </property>
<property> <name>dfs.datanode.data.dir</name> <value>/root/hdpdata/data</value> </property>
<property> <name>dfs.namenode.secondary.http-address</name> <value>hdp-02:50090</value> </property>
</configuration> |
4) 拷貝整個hadoop安裝目錄到其他機器
scp -r /root/apps/hadoop-2.8.1 hdp-02:/root/apps/
scp -r /root/apps/hadoop-2.8.1 hdp-03:/root/apps/
scp -r /root/apps/hadoop-2.8.1 hdp-04:/root/apps/
5) 啟動HDFS
所謂的啟動HDFS,就是在對的機器上啟動對的軟體
要點 提示: |
要運行hadoop的命令,需要在linux環境中配置HADOOP_HOME和PATH環境變數 vi /etc/profile
|
首先,初始化namenode的元數據目錄
要在hdp-01上執行hadoop的一個命令來初始化namenode的元數據存儲目錄
hadoop namenode -format
l 創建一個全新的元數據存儲目錄
l 生成記錄元數據的文件fsimage
l 生成集群的相關標識:如:集群id——clusterID
然後,啟動namenode進程(在hdp-01上)
hadoop-daemon.sh start namenode
啟動完後,首先用jps查看一下namenode的進程是否存在
然後,在windows中用瀏覽器訪問namenode提供的web埠:50070
http://hdp-01:50070
然後,啟動眾datanode們(在任意地方)
hadoop-daemon.sh start datanode
6) 用自動批量啟動腳本來啟動HDFS
1) 先配置hdp-01到集群中所有機器(包含自己)的免密登陸
2) 配完免密後,可以執行一次 ssh 0.0.0.0
3) 修改hadoop安裝目錄中/etc/hadoop/slaves(把需要啟動datanode進程的節點列入)
hdp-01 hdp-02 hdp-03 hdp-04 |
4) 在hdp-01上用腳本:start-dfs.sh 來自動啟動整個集群
5) 如果要停止,則用腳本:stop-dfs.sh
5、hdfs的客戶端操作
客戶端的理解
hdfs的客戶端有多種形式:
1、網頁形式
2、命令行形式
3、客戶端在哪裡運行,沒有約束,只要運行客戶端的機器能夠跟hdfs集群聯網
文件的切塊大小和存儲的副本數量,都是由客戶端決定!
所謂的由客戶端決定,是通過配置參數來定的
hdfs的客戶端會讀以下兩個參數,來決定切塊大小、副本數量:
切塊大小的參數: dfs.blocksize
副本數量的參數: dfs.replication
上面兩個參數應該配置在客戶端機器的hadoop目錄中的hdfs-site.xml中配置
<property> <name>dfs.blocksize</name> <value>64m</value> </property>
<property> <name>dfs.replication</name> <value>2</value> </property>
|
hdfs客戶端的常用操作命令
1、上傳文件到hdfs中
hadoop fs -put /本地文件 /aaa
2、下載文件到客戶端本地磁碟
hadoop fs -get /hdfs中的路徑 /本地磁碟目錄
3、在hdfs中創建文件夾
hadoop fs -mkdir -p /aaa/xxx
4、移動hdfs中的文件(更名)
hadoop fs -mv /hdfs的路徑1 /hdfs的另一個路徑2
複製hdfs中的文件到hdfs的另一個目錄
hadoop fs -cp /hdfs路徑_1 /hdfs路徑_2
5、刪除hdfs中的文件或文件夾
hadoop fs -rm -r /aaa
6、查看hdfs中的文本文件內容
hadoop fs -cat /demo.txt
hadoop fs -tail -f /demo.txt