Hadoop |集羣的搭建

 

 Hadoop組成

 

HDFS(Hadoop Distributed File System)架構概述node

  NameNode目錄--主刀醫生(nn);  DataNode(dn)數據; Secondary NameNode(2nn)助手;linux

  1)NameNode(nn):存儲文件的元數據,如文件名,文件目錄結構,文件屬性(生成時間、副本數、文件權限),以及每一個文件的塊列表和塊所在的DataNode等。web

  2)DataNode(dn):在本地文件系統存儲文件塊數據,以及塊數據的校驗和。數據庫

  3)Secondary NameNode(2nn):用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲取HDFS元數據的快照。vim

 

YARN框架  常駐 + 臨時windows

ResourceManager(RM) 組長;安全

NodeManager 組員;bash

Client客戶;Job Submission來任務了  ---->> ApplicationMaster,任務結束它就卸任了;   服務器

ApplicationMaster(AM)臨時項目任務負責人,由RM任命監視等;架構

容器Container:底層沒有虛擬,只虛擬了應用層,但仍能夠隔離cup和內存;(與虛擬機的區別);能夠在一個機器裏開3個容器(都要是同樣的如3個window,由於系統底層沒變;)
佔cpu內存用來運行任務如APP Mster;

 

 

 MapReduce架構概述  計算引擎

 

 

大數據生態體系

 

查看Hadoop目錄結構 [kris@hadoop101 hadoop-2.7.2]$ ll 總用量 52 drwxr-xr-x. 2 kris kris 4096 5月 22 2017 bin drwxr-xr-x. 3 kris kris 4096 5月 22 2017 etc drwxr-xr-x. 2 kris kris 4096 5月 22 2017 include drwxr-xr-x. 3 kris kris 4096 5月 22 2017 lib drwxr-xr-x. 2 kris kris 4096 5月 22 2017 libexec -rw-r--r--. 1 kris kris 15429 5月 22 2017 LICENSE.txt -rw-r--r--. 1 kris kris 101 5月 22 2017 NOTICE.txt -rw-r--r--. 1 kris kris 1366 5月 22 2017 README.txt drwxr-xr-x. 2 kris kris 4096 5月 22 2017 sbin drwxr-xr-x. 4 kris kris 4096 5月 22 2017 share 重要目錄1)bin目錄:存放對Hadoop相關服務(HDFS,YARN)進行操做的腳本 (2)etc目錄:Hadoop的配置文件目錄,存放Hadoop的配置文件 (3)lib目錄:存放Hadoop的本地庫(對數據進行壓縮解壓縮功能) (4)sbin目錄:存放啓動或中止Hadoop相關服務的腳本 (5share目錄:存放Hadoop的依賴jar包、文檔、和官方案例

 Hadoop運行環境搭建

內存4G,硬盤50G 1. 安裝好linux /boot 200M /swap 2g / 剩餘 2. *安裝VMTools 3. 關閉防火牆 sudo service iptables stop sudo chkconfig iptables off 4. 設置靜態IP,改主機名 改ip: 編輯vim /etc/sysconfig/network-scripts/ifcfg-eth0 改爲 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME="eth0" IPADDR=192.168.1.101 PREFIX=24 GATEWAY=192.168.1.2 DNS1=192.168.1.2 改用戶名: 編輯vim /etc/sysconfig/network 改HOSTNAME=那一行   NETWORKING=yes   HOSTNAME=hadoop101 5. 配置/etc/hosts vim /etc/hosts 192.168.1.100 hadoop100 192.168.1.101 hadoop101 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 192.168.1.105 hadoop105 192.168.1.106 hadoop106 192.168.1.107 hadoop107 192.168.1.108 hadoop108 192.168.1.109 hadoop109 6. 建立一個通常用戶kris,給他配置密碼 useradd kris passwd kris 7. 配置這個用戶爲sudoers vim /etc/sudoers 在root ALL=(ALL) ALL 添加kris ALL=(ALL) NOPASSWD:ALL 保存時wq!強制保存 8. *在/opt目錄下建立兩個文件夾module和software,並把全部權賦給kris mkdir /opt/module /opt/software chown kris:kris /opt/module /opt/software 9. 關機,快照,克隆 從這裏開始要以通常用戶登錄 10. 克隆的虛擬機;改物理地址 [root@hadoop101 桌面]# vim /etc/udev/rules.d/70-persistent-net.rules   SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5f:8e:d9", ATTR{type}=="1", KERNEL=="eth*", 
  NAME="eth0" 11. 搞一個分發腳本 cd ~ vim xsync 內容以下: #!/bin/bash #xxx /opt/module if (($#<1)) then echo '參數不足' exit fi fl=$(basename $1) pdir=$(cd -P $(dirname $1); pwd) for host in hadoop102 hadoop103 do rsync -av $pdir/$fl $host:$pdir done 修改文件權限,複製移動到/home/kris/bin目錄下   chmod +x xsync12. 配置免密登錄 1. 生成密鑰對

  [kris@hadoop101 ~]$ cd .ssh
  [kris@hadoop101 .ssh]$ ssh-keygen -t rsa

  ssh-keygen -t rsa 三次回車 2. 發送公鑰到本機 ssh-copy-id hadoop101 輸入一次密碼 3. 分別ssh登錄一下全部虛擬機 ssh hadoop102 exit ssh hadoop103 exit 4. 把/home/kris/.ssh 文件夾發送到集羣全部服務器 xsync /home/kris/.ssh ##發送.ssh/是不會成功的;不要加最後的/ 13. 在一臺機器上安裝Java和Hadoop,並配置環境變量,並分發到集羣其餘機器 拷貝文件到/opt/software,兩個tar包 sudo vim /etc/profile 配置環境變量; 在文件末尾添加 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 保存 5. source /etc/profile
  6. 將配置文件分發到其餘集羣中:
 [kris@hadoop101 module]$ sudo xsync /etc/profile
  sudo:xsync:找不到命令
[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop102:/etc/profile
[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop103:/etc/profile
在hadoop102/hadoop103各執行 source/etc/profile
 7. 在其餘機器分別執行source /etc/profile
###全部配置文件都在$HADOOP_HOME/etc/hadoop 14. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME 在每一個文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144 15. 配置Core-site.xml <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> 16. 配置hdfs-site.xml <!-- 數據的副本數量 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節點主機配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop103:50090</value> </property> 17. 配置yarn-site.xml <!-- Site specific YARN configuration properties --> <!-- Reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</value> </property> <!-- 日誌彙集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日誌保留時間設置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> 18. 配置mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 歷史服務器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop103:10020</value> </property> <!-- 歷史服務器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop103:19888</value> </property> 啓動歷史服務器:mr-jobhistory-daemon.sh start historyserver
19. 配置slaves;配置時多一個空格/空行都不能夠; hadoop101 hadoop102 hadoop103 20. 分發配置文件 xsync /opt/module/hadoop-2.7.2/etc
21. 格式化Namenode 在hadoop102  在hadoop101上啓動 hdfs namenode -format 22. 啓動hdfs  在hadoop101上啓動 start-dfs.sh 23. 在配置了Resourcemanager機器上執行 在Hadoop102上啓動start-yarn.sh

 25 關 stop-dfs.sh   stop-yarn.sh
    mr-jobhistory-daemon.sh stop historyserver

 

Hadoop運行模式包括:本地模式、僞分佈式模式以及徹底分佈式模式。

本地式

可運行的程序只有MapReduce(程序);而yarn(內存和cup),HDFS(硬盤)是給MapReduce提供運行的環境;

本地式用的不是hdfs,而是本地的硬盤;而調度的資源也不是來自yarn而是本地的操做系統;

.xml文件就是輸入;grep是執行jar包的哪一個主類,一個jar包能夠有多個主類和主方法;輸入文件夾--輸出文件夾(起始沒有這個文件夾,不然會報錯)--' 模板正則等 '

wordcount是一個主類

僞分佈式:一臺電腦搭出一個集羣;HDFS分3個組建NameNode、DataNode、Secondary NameNode;  yarn是分4個組建,實際只搭2個ResourceManage和NodeManager,

既是NameNode也是DataNode;既是ResourceManager也是NodeManager,這些進程都跑在一臺機器上;

###全部配置文件都在$HADOOP_HOME/etc/hadoop

hadoop-env.sh、mapred-env.sh、yarn-env.sh三個文件中配置:JAVA_HOME
  在每一個文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
core
-site.xml 指定HDFS中NameNode的地址;指定Hadoop運行時產生文件的存儲目錄 hdfs-site.xml 指定HDFS數據的副本數量 爲3,就3臺機器; 這些副本確定分佈在不一樣的服務器上;指定hadoop輔助名稱節點(secondaryNameNode)主機配置; mapred-site.xml 指定歷史服務器地址;歷史服務器web端地址; 指定MR運行在YARN上; yarn-site.xml Reducer獲取數據的方式;指定YARN的ResourceManager的地址(服務器);日誌的配置 hdfs namenode -format 格式化HDFS,在hadoop101上; 首次啓動格式化
hadoop-daemon.sh start namenode 單獨啓動NameNode hadoop-daemon.sh start datanode 單獨啓動DataNode
start-dfs.sh            啓動hdfs
start-yarn.sh            啓動yarn
啓動前必須保證NameNode和DataNode已經啓動 啓動ResourceManager; 啓動NodeManager hadoop fs
-put wcinput/ / 往集羣的跟目錄中上傳一個wcinput文件 158 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wcinput /output

分發腳本:

[kris@hadoop100 hadoop-2.7.2]$ dirname /opt/module/hadoop-2.7.2/ /opt/module [kris@hadoop100 hadoop-2.7.2]$ dirname hadoop-2.7.2 . [kris@hadoop100 hadoop-2.7.2]$ cd -P . [kris@hadoop100 hadoop-2.7.2]$ pwd /opt/module/hadoop-2.7.2 遍歷全部的主機名 ##########集羣分發腳本 #!/bin/bash #xxx /opt/module if (($#<1)) then echo '參數不足' exit fi fl=$(basename $1) #文件名 basename /opt/module/hadoop-2.7.2/-->>hadoop-2.7.2 pdir=$(cd -P $(dirname $1); pwd) 父目錄 dirname /opt/module/hadoop-2.7.2/  --->> /opt/module for host in hadoop102 hadoop103 hadoop104 do rsync -av $pdir/$fl $host:$pdir done

 scp安全拷貝、rsync遠程同步工具

[atguigu@hadoop101 /]$ scp -r /opt/module  root@hadoop102:/opt/module     //-r是遞歸; 要拷貝的-->目的地

[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module  //可在不一樣服務之間傳輸;

[atguigu@hadoop101 opt]$ rsync -av /opt/software/ hadoop102:/opt/software  //rsync只能從本機到其餘  ;-a歸檔拷貝、-v顯示覆制過程

用scp發送 scp -r hadoop100:/opt/module/jdk1.8.0_144 hadoop102:/opt/module/ 用rsync發送 [kris@hadoop100 module]$ rsync -av hadoop-2.7.2/ hadoop102:/opt/module/ 把當前目錄下的全發過去了;-a歸檔拷貝、-v顯示覆制過程; [kris@hadoop102 module]$ ls bin include jdk1.8.0_144 libexec NOTICE.txt README.txt share etc input lib LICENSE.txt output sbin wcinput [kris@hadoop102 module]$ ls | grep -v jdk 過濾刪除只剩jdk的 [kris@hadoop102 module]$ ls | grep -v jdk | xargs rm -rf 
[kris@hadoop100 module]$ ll 總用量
12 drwxr-xr-x. 12 kris kris 4096 1月 15 14:55 hadoop-2.7.2 drwxr-xr-x. 8 kris kris 4096 7月 22 2017 jdk1.8.0_144 -rw-rw-r--. 1 kris kris 223 1月 15 17:13 xsync [kris@hadoop100 module]$ chmod +x xsync [kris@hadoop100 module]$ ll 總用量 12 drwxr-xr-x. 12 kris kris 4096 1月 15 14:55 hadoop-2.7.2 drwxr-xr-x. 8 kris kris 4096 7月 22 2017 jdk1.8.0_144 -rwxrwxr-x. 1 kris kris 223 1月 15 17:13 xsync [kris@hadoop100 module]$ [kris@hadoop100 module]$ ./xsync /opt/module/jdk1.8.0_144

注意:拷貝過來的/opt/module目錄,別忘了在hadoop10一、hadoop10二、hadoop103上修改全部文件的,全部者和全部者組。sudo chown kris:kris -R /opt/module

 拷貝過來的配置文件別忘了source一下/etc/profile 

 配置ssh無祕鑰登錄; 

[kris@hadoop100 module]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/kris/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/kris/.ssh/id_rsa. Your public key has been saved in /home/kris/.ssh/id_rsa.pub. The key fingerprint is: fd:15:a4:68:6e:88:c3:a1:f4:64:1b:aa:95:12:02:4a kris@hadoop100 The key's randomart image is: +--[ RSA 2048]----+ |.E . | |+ . o | |o . . = o . . | | . o O = = . | | . = * S + . | | + . . . . | | . . | | | | | +-----------------+ [kris@hadoop100 module]$ ssh-copy-id hadoop100 #給本身也發一份 [kris@hadoop100 module]$ ssh-copy-id hadoop101 [kris@hadoop100 module]$ ssh-copy-id hadoop102 [kris@hadoop100 module]$ ssh-copy-id hadoop103 [kris@hadoop100 module]$ ssh-copy-id hadoop104

100給100、10一、10二、10三、104都賦權了;100<==>100雙向通道已經創建,我能到本身了;能夠把這個雙向通道copy給其餘的;

[kris@hadoop100 .ssh]$ ll
總用量 16
-rw-------. 1 kris kris 396 1月 15 18:45 authorized_keys  把公鑰放在已受權的keys裏邊,它跟公鑰裏邊內容是同樣的;
-rw-------. 1 kris kris 1675 1月 15 18:01 id_rsa  祕鑰
-rw-r--r--. 1 kris kris 396 1月 15 18:01 id_rsa.pub 公鑰
-rw-r--r--. 1 kris kris 2025 1月 15 17:37 known_hosts 

 [kris@hadoop102 .ssh]$ ll 總用量 4 -rw-------. 1 kris kris 396 1月 15 18:04 authorized_keys [kris@hadoop100 module]$ ./xsync /home/kris/.ssh  #給其餘帳戶發送.ssh ;發送 .ssh/ sending incremental file list .ssh/ .ssh/id_rsa .ssh/id_rsa.pub .ssh/known_hosts sent 4334 bytes received 73 bytes 8814.00 bytes/sec total size is 4096 speedup is 0.93 sudo cp xsync /bin #copy到bin目錄,就可全局使用; [kris@hadoop100 module]$ xsync /opt/module/hadoop-2.7.2/ 

 

清理數據(每一臺): [kris@hadoop100 ~]$ cd $HADOOP_HOME [kris@hadoop100 hadoop-2.7.2]$ rm -rf data logs 101 102 103 NameNode ResourceManager SecondaryNameNode DataNode DataNode DataNode NodeManager NodeManager NodeManager pwd $JAVA_HOME $HADOOP_HOME/etc/hadoop (對mapred-site.xml.template從新命名爲) mapred-site.xml 配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME 配置Core-site.xml--->>指定HDFS中NameNode的地址 hdfs://hadoop101:9000 ; 指定Hadoop運行時產生文件的存儲目錄 /opt/module/hadoop-2.7.2/data/tmp 配置hdfs-site.xml-->>數據的副本數量 ; 指定Hadoop輔助名稱節點主機配置 hadoop103:50090 配置yarn-site.xml-->>Reducer獲取數據的方式 指定YARN的ResourceManager的地址:hadoop102; 日誌彙集功能使能; 日誌保留時間設置7天 配置mapred-site.xml-->>歷史服務器端地址:adoop103:10020 ;歷史服務器web端地址:hadoop103:19888 配置Slaves hadoop101 hadoop102 hadoop103 格式化建立namenode hdfs namenode -format 在101上啓動HDFS: start-dfs.sh (101namenode) 在Hadoop102上啓動 start-yarn.sh 關閉: [kris@hadoop101 hadoop-2.7.2]$ stop-dfs.sh Stopping namenodes on [hadoop101] hadoop101: stopping namenode hadoop101: stopping datanode hadoop102: stopping datanode hadoop103: stopping datanode Stopping secondary namenodes [hadoop103] hadoop103: stopping secondarynamenode [kris@hadoop102 hadoop-2.7.2]$ stop-yarn.sh stopping yarn daemons stopping resourcemanager hadoop102: stopping nodemanager hadoop103: stopping nodemanager hadoop101: stopping nodemanager no proxyserver to stop jpsall腳本: #!/bin/bash for i in hadoop101 hadoop102 hadoop103 do echo "-------$i-------" ssh $i "source /etc/profile && jps" | grep -v jps done 

 Windows中hosts的配置:

在windows系統中,HOST文件位於系統盤C:\Windows\System32\drivers\etc中

 Hosts是一個沒有擴展名的系統文件,其做用就是將一些經常使用的網址域名與其對應的IP地址創建一個關聯「數據庫」。 

        hosts文件能加快域名解析,對於要常常訪問的網站,咱們能夠經過在Hosts中配置域名和IP的映射關係,提升域名解析速度。 

        hosts文件能夠方便局域網用戶在不少單位的局域網中,能夠分別給這些服務器取個容易記住的名字,而後在Hosts中創建IP映射,這樣之後訪問的時候,只要輸入這個服務器的名字就好了。 

        hosts文件能夠屏蔽一些網站,對於本身想屏蔽的一些網站咱們能夠利用Hosts把該網站的域名映射到一個錯誤的IP或本地計算機的IP,這樣就不用訪問了。 

        根據這個HOSTS文件的做用看的出來 ,若是是別有用心的病毒把你的HOSTS文件修改了!(例如把一個正規的網站改爲一個有病毒的網站的IP)。那麼你就會打開一個帶有病毒的網站,你可想而知你的後果了吧! 

    查看Windows IP 配置
   C:\Users\Administrator>ipconfig /displaydns  

修改hosts後生效的方法:Windows  開始 -> 運行 -> 輸入cmd -> 在CMD窗口輸入 ipconfig /flushdns
Linux 終端輸入: sudo rcnscd restart

host中的配置沒有被識別到,那麼是不是由於字符或者換行等緣由呢?因而: 
查看了host文件的字符: 

發現其結尾是CR而沒有LF,這不符合windows下面的換行風格,因此將其風格進行轉換。notepad中轉換方式:

轉換風格以後:

至此,能夠實現對該域名的ip配置。此外還須要注意:ip地址與域名間至少要有一空格,另外在最後一行書寫映射時必定要加上回車再保存以免最後一行不生效。

 

1. Hadoop的幾個默認端口及其含義。

1)dfs.namenode.http-address:50070

2)SecondaryNameNode輔助名稱節點端口號:50090

3)dfs.datanode.address:50010

4)fs.defaultFS:8020 或者9000

5)yarn.resourcemanager.webapp.address:8088

                            

相關文章
相關標籤/搜索