大數據運維之hadoop的概念單機搭建HDFS集羣搭建1

目錄

數據運維的概念以及hadoop概念

Hadoop模式:單機,僞分佈式,完全分佈式和搭建


數據運維的概念以及hadoop概念

運維需要做的工作:收集數據,搭建平臺,數據分析,反饋結果

 

大數據能做什麼

企業組織利用相關數據分析幫助他們降低成本,提高效率,開發新產品,做出更明智的業務決策等

把數據集合並後進行分析得出的信息和數據關係性,用來察覺商業趨勢,判定研究質量,

大規模並行出來數據庫,數據挖掘電網,分佈式文件系統或數據庫,雲計算和可擴展的存儲系統等

 

大數據的特性:數量,速度,種類,真實性,價值

 

 

hadoop

一種分析和處理海量數據的軟件平臺,是開源軟件,使用java開發,提供一個分佈式基礎架構,其特點是高效性,高擴展性,高效性,高容錯性,低成本.

 

hadoop常用組件(紅色是一定需要安裝的)

HDFS:hadoop分佈式文件系統(核心組件)

MapReduce:分佈式計算框架(核心組件)

Yarn:集羣資源管理系統(核心組件)

Zookeeper:分佈式協助服務

Hbase:分佈式列存數據庫

Hive:基於Hadoop的數據倉庫

Sqoop:數據同步工具

Pig:基於Hadoop的數據流系統

Mahout:數據挖掘算法庫

Flume:日誌收集工作

 

 

 

HDFS角色及概念

NameNode:Master節點,管理HDFS的名稱空間和數據映射信息,配置副本策略,處理所有客戶端請求

Secondary NameNode :定期合併fsimage和fsedits,推送給NameNode,緊急情況下,可輔助恢復NameNode.

                                        但是Seconddary NameNode並非NameNode的熱備

DataNode:數據存儲節點,存儲實際數據,彙報存儲信息給NameNode

Client:切分文件,訪問HDFS,於NameNode交互,獲取文件位置信息,與DataNode交互,獲取和寫入數據

Block:每塊缺省128MB大小,每塊可以多個副本

 

 

 

數據在客戶端就會被分片,之後訪問NameNode節點,之後NameNode會通知客戶端,存儲在哪裏,HDFS Client收到了對應的存儲信息,將數據存儲到DataNode節點上,當成功存儲成功之後,寫通知NameNode,並把對應的信息寫入到fsimage,fsimage記錄了對應的存儲的地址.fsedits(文件變更日誌)

 

 

 

MapReduce角色及概念

JobTracker :master節點只有一個,管理所有作業/任務的監控\錯誤處理等,將任務分解成一系列任務,並分派給TaskTracker

TaskTracker:slave節點,一般是多臺,運行Map Task和Reduce Task,並與JobTracker交互,彙報任務狀態.

Map Task:解析每條數據記錄,傳遞給用戶編寫的map()並執行,將輸出結果寫入本次磁盤.如果爲map-only作業,直接寫入HDFS.

Reduce Task:從Map Task的執行結果中,遠程讀取輸入數據,對數據進行排序,將數據按照分組傳遞給用戶編寫的Reduce函數執行

 

 

 

Yarn角色及概念

ResourceManager:處理客戶端請求,啓動/監控ApplicMaster,監控NodeManager,資源[分配與調度

NodeManager:單個節點上的資源管理,處理來自ResourceManager的命令,處理來自ApplicationMaster的命令

Container:對任務運行環境的抽象,封裝了CPU,內存等,多維資源以及環境變量,啓動命令等任務運維相關的信息資源分配與調度

ApplicationMaster:數據切分,爲了應用程序申請資源,並分配給內部任務,任務監控與容錯.

Client:用戶與Yarn交互的客戶端程序,提交應用程序,監控應用程序狀態也,殺死應用程序等.

 

 

 

 

 

Hadoop模式:單機,僞分佈式,完全分佈式和搭建

搭建所用到機器

192.168.1.60 nn01
192.168.1.61 node1
192.168.1.62 node2
192.168.1.63 node3

單機安裝:hadoop的單機模式安裝很簡單,只需要配置好環境變量即可運行,這個模式一般用來學習和測試Hadoop的功能

 

[root@nn01 ~]# ls

Desktop  hadoop-2.7.7.tar.gz

[root@nn01 ~]# tar -xaf hadoop-2.7.7.tar.gz 

[root@nn01 ~]# mv hadoop-2.7.7 /usr/local/hadoop

[root@nn01 ~]# cd /usr/local/hadoop/

[root@nn01 hadoop]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

[root@nn01 local]# chown -R root.root hadoop

[root@nn01 local]# jps

1169 Jps

[root@nn01 hadoop]# yum -y install java-1.6.0-openjdk

[root@nn01 hadoop]# rpm -ql java-1.6.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/

[root@nn01 hadoop]# vim hadoop-env.sh

 25 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/"

 33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
[root@nn01 hadoop]# ./bin/hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
  CLASSNAME            run the class named CLASSNAME
 

小案例分析:統計文件中哪個單詞出現的最多--統計詞頻

[root@nn01 hadoop]# pwd
/usr/local/hadoop
[root@nn01 hadoop]# mkdir zhy
[root@nn01 hadoop]# cp *.txt zhy/
[root@nn01 hadoop]# cd zhy/
[root@nn01 zhy]# ls
LICENSE.txt  NOTICE.txt  README.txt
[root@nn01 hadoop]#./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount ./zhy ./zhy1

./zhy爲要分析的目錄信息./zhy1爲分析之後的結果存放路徑

[root@nn01 hadoop]# cd zhy1
[root@nn01 zhy1]# ls
part-r-00000  _SUCCESS
[root@nn01 zhy1]# cat part-r-00000 
""AS    2
"AS    17
"COPYRIGHTS    1
"Contribution"    2
"Contributor"    2
 

hadoop常使用的一些分析jar包,因爲hadoop是使用java開發的,在開發中是開發一些算法打包成jar包,我們在使用的時候可以直接使用打包使用的算法進行數據分析.

 

組建分佈式集羣:僞分佈式是講所有的機子配置在一臺上.

搭建思路:需要在nno1節點上配置/etc/hosts,之後傳送到每臺節點上,在配置免祕鑰登錄,使得nno1可以免祕鑰登錄到其他的集羣上.

[root@nn01 zhy]# cat /etc/hosts
# ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.60 nn01
192.168.1.61 node1
192.168.1.62 node2
192.168.1.63 node3

[root@nn01 zhy]# for i in 192.168.1.{61..63}; do
> scp /etc/hosts root@$i:/etc/hosts
> done
 

node1 node2 node3都要安裝

[root@node1 ~]#  yum -y install java-1.8.0-openjdk-devel

[root@nn01 zhy]# vim /etc/ssh/ssh_config 

 58 Host *
 59         GSSAPIAuthentication yes
 60         StrictHostKeyChecking no

[root@nn01 zhy]# ssh-keygen 
[root@nn01 zhy]# for i in 192.168.1.{60..63}
> do
> ssh-copy-id $i;
> done

 

[root@nn01 zhy]# cd /usr/local/hadoop/etc/hadoop/
[root@nn01 hadoop]# ls
capacity-scheduler.xml  hadoop-metrics2.properties  httpfs-signature.secret  log4j.properties            ssl-client.xml.example
configuration.xsl       hadoop-metrics.properties   httpfs-site.xml          mapred-env.cmd              ssl-server.xml.example
container-executor.cfg  hadoop-policy.xml           kms-acls.xml             mapred-env.sh               yarn-env.cmd
core-site.xml           hdfs-site.xml               kms-env.sh               mapred-queues.xml.template  yarn-env.sh
hadoop-env.cmd          httpfs-env.sh               kms-log4j.properties     mapred-site.xml.template    yarn-site.xml
hadoop-env.sh           httpfs-log4j.properties     kms-site.xml             slaves 
[root@nn01 hadoop]# vim slaves 
node1
node2
node3

 

HDFS完全分佈式系統配置

環境配置文件:hadoop-env.sh

核心配置文件:core-site.xml (擴展標記性語音)

HDFS配置文件:hdfs-site.xml  (擴展標記性語音)

節點配置文件:slaves

 

[root@nn01 ~]# cd /usr/local/hadoop/etc/hadoop/

[root@nn01 hadoop]# vim core-site.xml   ---在配置文件中添加該選項

 19 <configuration>
 20     <property>
 21         <name>fs.defaultFS</name>  ---指定使用什麼存儲方式
 22         <value>hdfs://nn01:9000</value>   ---分佈式的地址
 23     </property>
 24     <property>
 25         <name>hadoop.tmp.dir</name>   ---hadoop所有數據的根目錄,這個是對應節點的數據,不是集羣中的所有數據,
 26         <value>/var/hadoop</value>    ----需要對此目錄文件進行保護
 27     </property>
 28 </configuration>

 

[root@nn01 hadoop]# vim hdfs-site.xml

21 <property>
 22         <name>dfs.namenode.http-address</name>  ----集羣中誰是namenode節點.其他的節點會主動彙報數據給該臺
 23         <value>nn01:50070</value>   --
 24     </property>
 25     <property>
 26         <name>dfs.namenode.secondary.http-address</name>  ---集羣中誰是namenode.secondary節點.其他的節點會主動彙報數據給該臺
 27         <value>nn01:50090</value>
 28     </property>
 29     <property>
 30         <name>dfs.replication</name>  ---數據存儲幾份
 31         <value>2</value>
 32     </property>
 33 </configuration>

[root@nn01 hadoop]# vim slaves 
node1
node2
node3

[root@nn01 hadoop]# vim hadoop-env.sh

 25 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/"

 33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

 

要求所有的階段的配置和目錄要求一模一樣的,所有需要將nno1的配置文件傳輸到其他的節點上,並檢查是否同步

[root@nn01 ~]# for i in node{1..3}; do scp -r  /usr/local/hadoop ${i}:/usr/local; done
[root@nn01 ~]# ssh node1 ls /usr/local/hadoop/ |wc -l
12
[root@nn01 ~]# ssh node2 ls /usr/local/hadoop/ |wc -l
12
[root@nn01 ~]# ssh node3 ls /usr/local/hadoop/ |wc -l
12

 

集羣的初始化

格式化文件系統

[root@nn01 ~]# mkdir /var/hadoop  ---創建一個空目錄,該目錄是空白的
[root@nn01 ~]# cd /var/hadoop/
[root@nn01 hadoop]# ls
[root@nn01 hadoop]# cd /usr/local/hadoop/

[root@nn01 hadoop]# ./bin/hdfs namenode -format
 

20/06/19 10:35:25 INFO common.Storage: Storage directory /var/hadoop/dfs/name has been successfully formatted.
20/06/19 10:35:25 INFO namenode.FSImageFormatProtobuf: Saving image file /var/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
20/06/19 10:35:25 INFO namenode.FSImageFormatProtobuf: Image file /var/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
20/06/19 10:35:25 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
20/06/19 10:35:25 INFO util.ExitUtil: Exiting with status 0
20/06/19 10:35:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at nn01/192.168.1.60
 

[root@nn01 hadoop]# cd /var/hadoop/
[root@nn01 hadoop]# ls
dfs
[root@nn01 hadoop]# tree .
.
└── dfs
    └── name
        └── current
            ├── fsimage_0000000000000000000
            ├── fsimage_0000000000000000000.md5
            ├── seen_txid
            └── VERSION

3 directories, 4 files
 

[root@nn01 hadoop]# cd /usr/local/hadoop/
[root@nn01 hadoop]# ls
bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share  zhy  zhy1
一般執行文件都存放在bin下,sbin是管理服務,etc是防配置文件的,log是啓動的時候動態生成的,

[root@nn01 hadoop]# ./sbin/start-dfs.sh ---啓動集羣
Starting namenodes on [nn01]
nn01: Warning: Permanently added 'nn01' (ECDSA) to the list of known hosts.
nn01: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-nn01.out
node1: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-node1.out
node3: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-node3.out
node2: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-node2.out
Starting secondary namenodes [nn01]
nn01: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-nn01.out

驗證集羣構建成功

[root@nn01 hadoop]# jps
1256 NameNode
1548 Jps
1439 SecondaryNameNode
[root@nn01 hadoop]# ssh node1 jps
1092 Jps
1018 DataNode
[root@nn01 hadoop]# ssh node2 jps
1058 Jps
983 DataNode
[root@nn01 hadoop]# ssh node3 jps
1058 Jps
984 DataNode

[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report
Live datanodes (3):   有三個角色則證明成功
 

如果出現問題,需要多這個目錄下去找log的日誌文件

[root@nn01 hadoop]# pwd
/usr/local/hadoop

[root@nn01 hadoop]# ls
bin  etc  include  lib  libexec  LICENSE.txt  logs  NOTICE.txt  README.txt  sbin  share  zhy  zhy1
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章