Hadoop |集群的搭建
?
?Hadoop組成
?
HDFS(Hadoop Distributed File System)架構概述
NameNode目錄--主刀醫生(nn);? DataNode(dn)數據; Secondary NameCode(2nn)助手;
YARN框架? 常駐 + 臨時
ResourceManager(RM) 組長;
NodeManager 組員;
Client客戶;Job Submission來任務了? ---->> ApplicationMaster,任務結束它就卸任了;? ?
ApplicationMaster(AM)臨時項目任務負責人,由RM任命監視等;
容器Container:底層沒有虛擬,只虛擬了應用層,但仍可以隔離cup和內存;(與虛擬機的區別);可以在一個機器里開3個容器(都要是一樣的如3個window,因為系統底層沒變;)占cpu內存用來運行任務如APP Mster;
?
?
?MapReduce架構概述? 計算引擎
?
?
大數據生態體系
?
查看Hadoop目錄結構 [atguigu@hadoop101 hadoop-2.7.2]$ ll 總用量 52 drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 bin drwxr-xr-x. 3 atguigu atguigu 4096 5月 22 2017 etc drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 include drwxr-xr-x. 3 atguigu atguigu 4096 5月 22 2017 lib drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 libexec -rw-r--r--. 1 atguigu atguigu 15429 5月 22 2017 LICENSE.txt -rw-r--r--. 1 atguigu atguigu 101 5月 22 2017 NOTICE.txt -rw-r--r--. 1 atguigu atguigu 1366 5月 22 2017 README.txt drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 sbin drwxr-xr-x. 4 atguigu atguigu 4096 5月 22 2017 share 重要目錄 (1)bin目錄:存放對Hadoop相關服務(HDFS,YARN)進行操作的腳本 (2)etc目錄:Hadoop的配置文件目錄,存放Hadoop的配置文件 (3)lib目錄:存放Hadoop的本地庫(對數據進行壓縮解壓縮功能) (4)sbin目錄:存放啟動或停止Hadoop相關服務的腳本 (5)share目錄:存放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=yesHOSTNAME=hadoop1015. 配置/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 hadoop1096. 創建一個一般用戶kris,給他配置密碼 useradd kris passwd kris7. 配置這個用戶為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/software9. 關機,快照,克隆從這里開始要以一般用戶登陸10. 克隆的虛擬機;改物理地址 [root@hadoop101 桌面]# vim /etc/udev/rules.d/70-persistent-net.rulesSUBSYSTEM=="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
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_14415. 配置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;配置時多一個空格/空行都不可以;hadoop101hadoop102hadoop10320. 分發配置文件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 dorsync -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目錄,別忘了在hadoop101、hadoop102、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 hadoop104100給100、101、102、103、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@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 NodeManagerpwd $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 stopjpsall腳本: #!/bin/bash for i in hadoop101 hadoop102 hadoop103 doecho "-------$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
? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
轉載于:https://www.cnblogs.com/shengyang17/p/10274391.html
總結
以上是生活随笔為你收集整理的Hadoop |集群的搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JS中数据结构之队列
- 下一篇: 转:堆栈
