名稱節點不會存放數據塊的,能夠存可是不會這麼作。namenode目錄掛了,單點故障java
namenodenode
secondarynamenode 備份,防止單點故障就完了,最重要的仍是這目錄,這叫作鏡像web
datenode datenode datenode 3個算法
分佈式編程
--------------ubuntu
由分佈在不一樣主機上的程序(進程)協同在一塊兒才能構成整個應用。服務器
browser/web server:瘦客戶端程序。網絡
4V框架
----------------ssh
1.volumn: 體量大
2.velocity: 速度快
3.variaty: 樣式多
4.value: 價值密度低
hadoop
--------------
可靠地、可伸縮的、分佈式計算的開源軟件。
是一個框架,容許跨越計算機集羣的大數據集分佈式化處理,使用簡單的編程模型(MapReduce)。
可從單個服務器擴展到幾千臺主機,每一個節點提供了計算和存儲功能。
不依賴於硬件處理HA,在應用層面上實現。
hadoop模塊----解決了兩個問題,存儲和計算
-----------
1.hadoop common//公共類庫,支持其餘模塊
2.HDFS//hadoop distributed file sytsem,hadoop分佈式文件系統
3.Hadoop YARN//Yeah another resource ,做業調度和資源管理的框架。
4.Hadoop MapReduce//基於yarn系統的大數據集並行處理技術。
liunx
jps
jps -v
which jps
which xxx//在PATH查看指令xxx的目錄
whereisxxx//查詢命令的binary、Source、manual 查找這個指令相關的二進制指令和文件
hadoop安裝
配置用到的書 Hadoop.The.Definitive.Guide.4th 在Appendix A.Installing ...裏面有講到site.xml配置
---------------
1.jdk
JAVA_HOME
PATH
2.tar hadoop.tar.gz
3.配置環境變量
HADOOP_HOME------------HADOOP_HOME=/soft/hadoop
PATH --------------- /soft/hadoop/bin:/soft/hadoop/sbin ----這樣配好就是獨立模式了
4.配置hadoop---配置的時候有3種模式
1.standalone | local --------------獨立模式,或者叫本地模式
a.沒有守護進程,全部程序運行在同一JVM中,利於test和debug.容易測試和調試
b.查看文件系統
$>hadoop fs -ls ///查看就是本地文件系統
2.Pseudo distributed Mode//僞分佈模式,模擬徹底分佈式,是徹底分佈式的特列
[配置文件${hadoop_home}/etc/hadoop/*-site.xml]
[core-site.xml]
<configuration>
<property>
<name>fs.defaultFS</name>
<!-- url:protocal + host + port + path 註釋,這麼寫配置比較麻煩,直接寫kv對,上面是名字,下面value是值,直接name=value,應該是這意思 -->
<value>hdfs://localhost/</value>
</property>
</configuration>
徹底分佈式另外兩個副本在同一個機架上,加本身一共3個副本的----僞分佈是配置1
[hdfs-site.xml]
dfs.replication=1
[mapred-site.xml]
mapreduce.framework.name=yarn
[yarn-site.xml]
yarn.resourcemanager.hostname=localhost
yarn.nodemanager.aux-services=mapreduce_shuffle
gedit編輯後會產生備份文件,圖形軟件打開文字後的首選項裏面吧建立一個備份拷貝給拿掉edit-editor
ls -al |grep site.xml
刪除以前生成的備份文件rm -f *~^C
3.[配置SSH]---在nanmenode節點上遠程登陸其餘主機把任務啓動起來,登陸密碼太麻煩,配置無密碼登陸
ps -Af|grep ssh 看看有沒有安裝運行的進程sshd 安裝完後的服務端 ,which ssh 查看客戶端
1.安裝ssh軟件
$>sudo apt-get install ssh//安裝服務端(sshd)和客戶端(ssh)以及相關軟件(ssh-keygen).
2.生成密鑰對rsa是算法 ''無祕 -f指定目錄 用戶的主目錄
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
有id_rsa.pub的那個是公鑰
3.追加公鑰到對方的認證庫中。還有ssh連上其餘電腦 不須要sudo哦
cat輸出這個內容 >>追加 能夠追加不少人的祕鑰
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.測試ssh到localhost
$>ssh localhost
4.格式化hdfs文件系統 ---Hadoop.The.Definitive.Guide.4th 在Appendix A.Installing --configuration---pseudodist
本身格式化的時候報錯了,把hostname改成原來的ubutnu後重啓就正常了
#>hdfs namenode -format// hadoop/bin/hdfs
5.啓動hdfs和yarn守護進程
$>start-dfs.sh
$>start-yarn.sh
mr-jobhistory-daemon.sh start historyserver 這個也要起,先不用,先不起
或者start-all.sh就等於這上面兩個(貌似用這個開會少一個進程)----開啓後開 jps看是否有5個對應的守護進程(第二次啓動電腦後啓動程序就少個namenode,格式化hdfs後重啓就又有了,不知道爲何)
$>stop-yarn.sh// hadoop/sbin/ 中止進程 ----和開啓的順序相反,按照上層的順序
$>stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver 這個也要起,先不用,先不起
stop-all.sh已通過時了,推薦用上面的
DataNode
NameNode
SecondaryNameNode 文件系統
ResourceManager 名稱管理器 yarn調度框架
NodeManager節點管理器
6.配置目錄的指定方式-(start-yarn.sh,start-dfs.sh用到這個)--------想用哪一種把哪一種連接指向一個hadoop 好比 ln -s hadoop_pseudo hadoop(這樣不會覆蓋的,第二次要連接其餘的先把他刪除)直接改連接更方便
切花爲local的話,hdoop fs -ls -R / 這樣看的就是本地的文件系統了
a.默認方式
${hadoop_home}/etc/hadoop/*.xml //默認的,有點時候作多種配置
b.經過啓動參數指定配置目錄
$.start-dfs.sh --config /soft/hadoop/etc/hadoop command// hadoop/sbin
c.經過設置環境變量HADOOP_CONF_DIR
$>export HADOOP_CONF_DIR=/soft/hadoop/etc/hadoop_pseudo
把這個環境變量幹掉 export HADOOP_CONF_DIR 直接這樣
而後export HADOOP_CONF_DIR=
hdfs namenode -format格式化的時候也有提到相關的配置
用法實列
把/soft/hadoop/etc/hadoop改成/soft/hadoop/etc/hadoop_pseudo,這樣直接啓動就啓動不了,用到下面配置目錄的指定方式了
start-all.sh --config /soft/hadoop/etc/hadoop_pseudo
拷貝文件夾 cp -r hadoop_pseduo hadoop_local 要加-r
7.目錄操做
hadoop fs -mkdir -p /user/$USER ---------------------主目錄,用這個,這樣hadoop fs -ls 就會看到主目錄去
$>hadoop fs -mkdir -p /user/ubuntu//建立目錄 -p 多級目錄
$>hadoop fs -ls ///顯示根目錄 -------要那5個守護進程啓動起來哦----那個 / 是須要的哦
$>hadoop fs -ls /user/ubuntu/a//顯示指定的目錄
$>hadoop fs -ls -R///遞歸顯示目錄結構 ,目錄,在namenode上,文件的話真正存儲的地方仍是在datanode上
$>hadoop fs -lsr///同上,不過不推薦使用了
hadoop fs -ls -R hdfs://localhost/ 最後有個/的哦,和上面一下看hadoop的文件系統
hadoop fs -ls -R file:/ 訪問本地的文件系統
/tmp/hadoop-ubuntu/dfs/name/current 格式化的時候目錄就已經建立了, name----對應的就就是名稱節點 能夠看cat VERSION
/tmp/hadoop-ubuntu/dfs/data/current 對應datanode 能夠看cat VERSION /tmp/hadoop-ubuntu/dfs/data/current/BP-1334148266-127.0.1.1-1465945525779/current/finalized
8.查看幫助
$>hadoop fs//直接回車
$>hadoop fs -help put//查看put的具體信息
echo "hello world">>hello.txt 創一個文件放到hdfs文件上去
$>hadoop fs -put local.txt /user/ubuntu/xx.txthadoop fs -put hello.txt /user/ubuntu/ 第二個老師用的是//將本地文件put到hdfs文件系統。.
下載的話就把put改爲get
這個是臨時目錄,第二次啓動就是被幹掉的,每次開機都要從新格式化的
cd /tmp/hadoop-ubuntu/dfs/data/current/BP-1334148266-127.0.1.1-1465945525779/current/finalized/subdir0/subdir0 後就有塊blk_1073741825和元數據描述了blk_1073741825_1001.meta
9.查看namenode和datanode在本地
$>cd /tmp/ubuntu-hadoop/dfs/name/...
$>cd /tmp/ubuntu-hadoop/dfs/data/...
10.查看log文件----------這個纔是最重要的,之後可能會出現不少錯誤,都在log裏面找---出現錯誤時會提示讓他哪一個文件下找錯誤內容
$>${hadoop_home}/logs
11.也能夠經過webui查看日誌或者集羣狀況
http://localhost:50070///namenode web server port 查看namenode的日誌 外面的要訪問他http://192.168.2.112:50070 datanodes 加s就是數據節點集 用的是網絡編程逃不了的
http://localhost:8088///resourceManager,看的是資源管理器的狀況。只有在本機訪問才能夠。hadoop集羣信息- 查出來前面4個0就能夠其餘地方輸入ip端口訪問。若是是127.0.0...綁定的就只能本機訪問
mr做業提交的時候就是一個應用程序Applications,在這個端口裏面看
http://localhost:19888///historyServer,歷史服務器的狀況
12.經過netstat查看網絡端口占用狀況
$>netstat -lupt//l:listener u:udp t:tcp p:program name 查出來前面4個0就能夠其餘地方輸入ip端口訪問。若是是127.0.0...綁定的就只能本機訪問
文件有副本,目錄沒副本,一塊是128m
有提到nat和橋接模式連接訪問別人的hdfs問題,就提到一下005的35分鐘左右幾秒
搭建徹底分佈式hadoop集羣------------------pdf第10章的內容 Setting Up a Hadoop Cluster
-------------------------
1.安裝java
2.建立user
略
3.安裝hadoop
略
4.配置SSH
略
5.格式化
略
6.啓動進程
start-dfs.sh | start-yarn.sh
7.建立目錄
8.配置hadoop
nat是自動分配ip的
a.克隆虛擬機4臺
b.ssh,配ip麻煩,配主機名好一點1.克隆後改主機名稱 su -------nano /etc/hostname 改完後重啓
或su root ; echo "s200" > /etc/hostname------老師是分別登陸每臺機器裏面去改的
2.傳送ssh的免密公鑰給其餘主機,ip要看一下,貌似每次重啓ip都會變
scp id_rsa.pub ubuntu@s200:/home/ubuntu/.ssh/
s200上的 ,authorized_keys是以前克隆其餘機器的,處理一下 cat id_rs.pub>authorized_keys,---這裏不必,下面老師重寫操做
而後他又其餘機器的那個目錄裏面的祕鑰之類的都刪除重寫生成了
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
而後在s100上把公鑰發給s200 scp id_rsa.pub ubuntu@s200:~/.ssh/id_rsa.pub.s100 發過去的時候改個名字 ----------005的結尾了
追加公鑰到對方的認證庫中authorized_keys。還有ssh連上其餘電腦 不須要sudo哦
到s200上 cat id_rsa.pub.s100 >> authorized_keys
主機ssh其餘機器的那個機器,配host映射 /etc/hosts -------------
192.168.238.128 s100 本身
192.168.238.129 s200其餘機器
192.168.238.130 s300
192.168.238.131 s400 這個ip不必定對,看實際的ip
這臺機器配好後,其餘機器也要有相同的關係再把這個文件發給其餘機器上去,遠程複製
scp --help
切到root後,沒試過是否是必定要這個
遠程複製
scp root@s200:/etc/hosts root@s300:/etc/
scp hosts root@s300:/etc/
把遠程機器的這個文件放到另一臺機器的etc下
c.配置hadoop配置文件
[core-site.xml]
<configuration>
<property>
<name>fs.defaultFS</name>
<!-- url:protocal + host + port + path -->
<value>hdfs://namenode/</value> //原本是localhost---------如今是namenode,成ip或者主機名
</property>
</configuration>
[hdfs-site.xml]
dfs.replication=3
[mapred-site.xml]
mapreduce.framework.name=yarn
[yarn-site.xml]
yarn.resourcemanager.hostname=namenode
yarn.nodemanager.aux-services=mapreduce_shuffle
[slaves] 輔助,從屬,主機列表,每一個一行,-----------徹底分佈式下多了一個這個文件,也是在/soft/hadoop/etc/hadoop,僞分佈裏面有個數據節點以及節點管理器,由它決定。
保證ping主機名和pinglocalhost相同,用nat模式這個通常不會變
s200
s300
s400
[/etc/hosts]
d.遠程複製/etc/hosts/到遠程主機
$>scp hosts root@s200:/etc/
以前配置無祕登陸時給ubuntu用戶的,若是是複製hosts文件,ubuntu沒有權限的,因此要手動輸入對方主機的root密碼,除非也給root也配置一個6