一、HDFS架構、啓動過程node
1)開發環境的準備apache
a.安裝Maven(用於管理項目依賴包)編程
將apache-maven-3.0.5.tar.gz解壓到/opt/models目錄下緩存
配置/etc/profile增長MAVEN_HOME和PATH,source /etc/profile服務器
退出從新登陸mvn -version架構
建立倉庫目錄~/.m2eclipse
將repository.tar.gz上傳到/opt/softwares目錄下ssh
解壓到~/.m2目錄下maven
cp /opt/modules/apache-maven-3.0.5/conf/settings.xml .tcp
b.安裝Eclipse
將tools中的Eclipse壓縮包解壓
打開虛擬機進入eclipse目錄運行./eclipse
配置maven爲本身的maven目錄
c.配置Eclipse與Maven插件
d.設置Linux下Eclipse快捷鍵
二、HDFS Java API 使用
1)獲取文件系統
a.Configuration類 -->Configuration conf = new Configuration();
b.FileSystem類 -->FileSystem fileSystem = FileSystem.get(conf); return fileSystem;
2)獲取輸入流
a.定義文件名 -->String fileName = "文件路徑";
b.Path類 -->Path readPath = new Path(fileName); 獲取該文件的路徑
c.FSDataInputStream inStream = fileSystem.open(readPath); 獲取輸入流(從文件系統中)
d.FileInputStream inStream = new FileInputStream("文件路徑"); 獲取本地文件輸入流
3)獲取輸出流
定義文件名putFileName並獲取路徑writePath
FSDataInputStream outStream = fileSystem.create(writePath); 獲取輸出流
4)讀和寫流
try(
IOUtils.copyBytes(inStream,outStream,4096,false);
}catch(Exception e){
e.printStackTrace();
}final{
IOUtils.closeStream(inStream);
IOUtils.closeStream(outStream);
}
三、YARN架構、應用監控
1)safemode,namenode啓動後進入safemode,等待datanode發送block report,等到達到閾值0.999後過30s退出safemode
手動進入safemode模式:bin/hdfs dfsadmin -safemode enter(leave)
四、MapReduce編程模型
1)一種分佈式計算模型,MapReduce將整個並行計算過程抽象到兩個函數
a.Map:對一些獨立元素組成的列表的每個元素進行指定的操做,能夠高度並行
b.Reduce:對一個列表元素進行合併
c.數據的流向input-->map-->reduce-->output,以<key,value>對的形式流動
2)
3)MapReduce中的數據類型: -->都要實現Writable接口,以便序列化進行傳輸,key要繼承WritableComparable
a.Text
b.LongWritable
c.IntWritable
d.NullWritable 當key或value值爲空時使用
e.定義變量-->get,set方法-->構造方法-->重寫equals,hashcode,tostring方法
-->實現WritableComparable接口中write,readFields,compareTo方法
五、MapReduce Shuffle過程
六、集羣搭建
七、集羣基準測試 --》測試集羣的性能
a.吞吐量,namenode存儲元數據的性能,yarn跑多個小做業時性能,
b.監控集羣 cloudera
八、使用ntp配置內網時間同步
a.以一臺機器做爲時間服務器 -->rpm -qa | grep 'ntp'
vi /etc/ntp.conf 修改三處
vi /etc/sysconfig/ntpd 添加一行SYNC_HWCLOCK=yes
service ntpd start
chkconfig ntpd on
b.其餘機器定時同步 -->切換到root用戶寫腳本
0-59/10 * * * * /usr/sbin/ntpdate localhost
九、Zookeeper
十、HDFS HA -->高可用性
NameNode Active
NameNode Standby
核心:保證兩個NameNode中的文件系統元數據同步 -->Shared Edits-->jornal node
時刻知道DataNode的BLock Report -->同時向兩個NameNode發送報告
client經過Proxy代理來選擇Namenode,經過Zookeeper實現自動故障轉移
工做:1)Shared Edits
2)standby Namenode
3)proxy
4)兩個Namenode的隔離性 -->同時只能有一個Namenode向client提供服務
使用sshfence的方式須要配置兩個namenode的無密碼登陸
依賴於zookee來實現自動故障轉移
a,將namenode從standby轉換爲active
選舉
b.監控 -->ZKFC(failure Contronner):是Zookeeper的一個客戶端
十一、中高級特性
1)federation -->聯盟,不用應用可使用不一樣的namenode進行數據管理
多個namenode分別管理各自文件的元數據,數據都存儲在全部的datanode上
2)Snapshots -->快照,只讀的基於時間點的文件系統拷貝,只有元數據,沒有數據的快照
3)集中式緩存管理 -->容許用戶將一部分目錄或文件房子緩存中
4)Distributed Copy -->集羣間的數據拷貝 bin/hadoop distcp
不一樣版本間的Hadoop集羣拷貝走hftp協議
十二、YARN HA