hadoop第一天




名稱節點不會存放數據塊的,能夠存可是不會這麼作。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

相關文章
相關標籤/搜索