1.安裝Hadoop
單機模式安裝Hadoop
安裝JAVA環境
設置環境變量,啓動運行
1.1 環境準備
1)配置主機名爲nn01,ip爲192.168.1.21,配置yum源(系統源)
備註:因爲在以前的案例中這些都已經作過,這裏再也不重複.
2)安裝java環境
nn01 ~]# yum -y install java-1.8.0-openjdk-devel
nn01 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@nn01 ~]# jps
1322 Jps
3)安裝hadoop
nn01 ~]# tar -xf hadoop-2.7.6.tar.gz
nn01 ~]# mv hadoop-2.7.6 /usr/local/hadoop
nn01 ~]# cd /usr/local/hadoop/
hadoop]# ls
bin include libexec NOTICE.txt sbin
etc lib LICENSE.txt README.txt share
hadoop]# ./bin/hadoop //報錯,JAVA_HOME沒有找到
4)解決報錯問題
hadoop]# rpm -ql java-1.8.0-openjdk
hadoop]# cd ./etc/hadoop/
hadoop]# vim hadoop-env.sh
25 export \
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"
33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
nn01 ~]# cd /usr/local/hadoop/
hadoop]# ./bin/hadoop
Usage:...
hadoop]# mkdir /usr/local/hadoop/aa
hadoop]# cp *.txt /usr/local/hadoop/aa
hadoop]# ./bin/hadoop jar \
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount aa bb
//wordcount爲參數 統計aa這個文件夾,存到bb這個文件裏面(這個文件不能存在,要是存在會報錯,是爲了防止數據覆蓋)
hadoop]# cat bb/part-r-00000 //查看
2. 安裝配置Hadoop
另備三臺虛擬機,安裝Hadoop
使全部節點可以ping通,配置SSH信任關係
節點驗證
node1 192.168.1.22
node2 192.168.1.23
node3 192.168.1.24
2.1 環境準備
1)三臺機器配置主機名爲node一、node二、node3,配置ip地址
2)編輯/etc/hosts(四臺主機一樣操做,以nn01爲例)
[root@nn01 ~]# vim /etc/hosts
192.168.1.21 nn01
192.168.1.22 node1
192.168.1.23 node2
192.168.1.24 node3
3)安裝java環境,在node1,node2,node3上面操做(以node1爲例)
node1 ~]# yum -y install java-1.8.0-openjdk-devel
4)佈置SSH信任關係
//第一次登錄不須要輸入yes
nn01 ~]# vim /etc/ssh/ssh_config
Host *
GSSAPIAuthentication yes
StrictHostKeyChecking no
nn01 ~]# ssh-keygen(一路回車)
nn01 ~]# for i in 21 22 23 24 ; do ssh-copy-id 192.168.1.$i; done
//部署公鑰給nn01,node1,node2,node3
5)測試信任關係
nn01 ~]# ssh node1
node1 ~]# exit
2.2 配置hadoop
1)修改slaves文件
[root@nn01 ~]# cd /usr/local/hadoop/etc/hadoop
hadoop]# vim slaves
node1
node2
node3
2)hadoop的核心配置文件core-site
hadoop]# vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nn01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
</property>
</configuration>
hadoop]# mkdir /var/hadoop //hadoop的數據根目錄
hadoop]# ssh node1 mkdir /var/hadoop
hadoop]# ssh node2 mkdir /var/hadoop
hadoop]# ssh node3 mkdir /var/hadoop
3)配置hdfs-site文件
hadoop]# vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>nn01:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>nn01:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value> //存兩份,總數
</property>
</configuration>
4)同步配置到node1,node2,node3
//同步的主機都要安裝rsync
hadoop]# ssh node1 yum –y install rsync
hadoop]# ssh node2 yum –y install rsync
hadoop]# ssh node3 yum –y install rsync
hadoop]# for i in 22 23 24 ; do rsync -aSH --delete /usr/local/hadoop/ root@192.168.1.$i:/usr/local/hadoop/ -e 'ssh' & done
[1] 23260
[2] 23261
[3] 23262
5)查看是否同步成功
hadoop]# ssh node1 ls /usr/local/hadoop/
bin
etc
include
lib
libexec
LICENSE.txt
NOTICE.txt
bb
README.txt
sbin
share
aa
...
2.3 格式化
hadoop]# cd /usr/local/hadoop/
hadoop]# ./bin/hdfs namenode -format //格式化 namenode
hadoop]# ./sbin/start-dfs.sh //啓動
hadoop]# jps //驗證角色
11009 Jps
10707 NameNode
10894 SecondaryNameNode
hadoop]# ./bin/hdfs dfsadmin -report //查看集羣是否組建成功
Live datanodes (3): //有三個角色成功
#########################
知識點整理:
01:大數據運維:運維+大數據管理軟件的技能
指沒法在必定時間內用常規軟件工具進行捕捉、管理和處理數據集合,須要新處理模式才具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。
是指從各類各樣類型的數據中,快速得到有價值的信息。前端
大數據的做用:
調整相關經營策略
預測相關發展趨勢
大規模數據處理java
大數據相關特性:
大致量:volume
多樣性:variety
時效性:velocity
準確性:veracity
大價值:valuenode
02:Hadoop
是一種分析和處理海量數據的軟件平臺,Java開發,提供分佈式基礎架構。
高可靠性、高擴展性、高校性、高容錯性、低成本。算法
經常使用組件:
HDFS:分佈式文件系統(核心組件,存儲)
MapReduce0(分佈式計算框架)(核心組件)
Yarn:集羣資源管理系統(核心組件,集羣資源管理系統)
Zookeeper:分佈式寫做服務
Hbase:分佈式列存儲數據庫
Hive:基於Hadoop數據倉庫
Sqoop:數據同步工具
Pig:基於Hadoop的數據流系統
Mahout:數據挖掘算法庫
Flume:日誌收集工具數據庫
03:HDFS(分佈式文件系統)
Client:切分文件,訪問HDFS,與NameNode交互,獲取文件位置信息;與DataNode交互,讀取和寫入數據。vim
角色:
Namenode:Master主節點,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理全部客戶端請求。架構
Secondarynode:主節點小祕,按期合併fsimage(數據塊命名空間、存儲信息)和fsedits(修改後的數據塊:源數據+新數據,相似前端盤),推送給NameNode;緊急狀況下,可輔助恢復NameNode。框架
Datanode:數據存儲節點,存儲世界的數據;彙報存儲信息給NameNode。運維
Block:128MB,每塊能夠多個副本。ssh
HDFS結構:(NameNode通常一臺)
存數據:Client(數據切塊)-> ..數據存哪..->NameNode-> ..DateNode..Client->DataNode(存儲數據)
取數據:Client(數據切塊)-> ..數據在哪..->NameNode-> ..DateNode..Client->DataNode(獲取數據)
04:MapReduce結構 分佈式計算框架
把一個複雜的問題,分解成若干個簡單的問題,多臺機器共同計算,最終合併彙總。
角色:
JobTracker:切分任務段,數據總監控、錯誤處理等(管理節點,一臺)
TaskTracker:分單任務(多臺,幹活)
Map Task:解析每條數據記錄,傳遞給用戶編寫的map()並執行,將輸出結果寫入本地磁盤。(若是map-only)做業,直接寫入HDFS)
Reducer Task:從Map Task的執行結果中,遠程讀取輸入數據,對數據進行排序,將數據按照分組傳遞給用戶編寫的reduce函數執行。
05:Yarn結構:Hadoop的一個通用資源管理系統
角色:
ResourceManager:Master,皇上,處理客戶端請求,啓動、監控ApplicationMaster,監控NodeManager,資源分配與調度。
NodeManager:欽差大臣,皇上安排的助手,每一個結點上資源管理,處理ResourceManager的命令,處理來自ApplicationMaster的命令。(每一個ApplicationMaster有多個Container在NodeMaster上運行)
ApplicationMaster:數據切分,爲應用程序申請資源,並分配給內部任務,任務監控與容錯(表示每一個應用)。
Container:對任務運行環境的抽象,封裝了CPU、內存等;多維資源以及環境變量、啓動命令等任務運行相關的信息資源分配與調度。
06:Hadoop三種模式
單機模式:一臺機器部署
僞分佈式:全部的角色都安裝在一臺機器上,學習和測試(相似數據庫的多實例)
徹底分佈式:多臺機器部署
##########################