新聞中心
一、Hadoop 介紹
Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),則MapReduce為海量的數(shù)據(jù)提供了計(jì)算。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括微山網(wǎng)站建設(shè)、微山網(wǎng)站制作、微山網(wǎng)頁(yè)制作以及微山網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,微山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到微山省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!1、HDFS 介紹
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱HDFS。
HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(wèn)(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
2、HDFS 組成
HDFS采用主從(Master/Slave)結(jié)構(gòu)模型,一個(gè)HDFS集群是由一個(gè)NameNode和若干個(gè)DataNode組成的。NameNode作為主服務(wù)器,管理文件系統(tǒng)命名空間和客戶端對(duì)文件的訪問(wèn)操作。DataNode管理存儲(chǔ)的數(shù)據(jù)。HDFS支持文件形式的數(shù)據(jù)。
從內(nèi)部來(lái)看,文件被分成若干個(gè)數(shù)據(jù)塊,這若干個(gè)數(shù)據(jù)塊存放在一組DataNode上。NameNode執(zhí)行文件系統(tǒng)的命名空間,如打開(kāi)、關(guān)閉、重命名文件或目錄等,也負(fù)責(zé)數(shù)據(jù)塊到具體DataNode的映射。DataNode負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫(xiě),并在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建、刪除和復(fù)制工作。NameNode是所有HDFS元數(shù)據(jù)的管理者,用戶數(shù)據(jù)永遠(yuǎn)不會(huì)經(jīng)過(guò)NameNode。
3、MapReduce 介紹
Hadoop MapReduce是google MapReduce 克隆版。
MapReduce是一種計(jì)算模型,用以進(jìn)行大數(shù)據(jù)量的計(jì)算。其中Map對(duì)數(shù)據(jù)集上的獨(dú)立元素進(jìn)行指定的操作,生成鍵-值對(duì)形式中間結(jié)果。Reduce則對(duì)中間結(jié)果中相同“鍵”的所有“值”進(jìn)行規(guī)約,以得到最終結(jié)果。MapReduce這樣的功能劃分,非常適合在大量計(jì)算機(jī)組成的分布式并行環(huán)境里進(jìn)行數(shù)據(jù)處理。
4、MapReduce 架構(gòu)
Hadoop MapReduce采用Master/Slave(M/S)架構(gòu),如下圖所示,主要包括以下組件:Client、JobTracker、TaskTracker和Task。
JobTracker
- JobTracker叫作業(yè)跟蹤器,運(yùn)行到主節(jié)點(diǎn)(Namenode)上的一個(gè)很重要的進(jìn)程,是MapReduce體系的調(diào)度器。用于處理作業(yè)(用戶提交的代碼)的后臺(tái)程序,決定有哪些文件參與作業(yè)的處理,然后把作業(yè)切割成為一個(gè)個(gè)的小task,并把它們分配到所需要的數(shù)據(jù)所在的子節(jié)點(diǎn)。
- Hadoop的原則就是就近運(yùn)行,數(shù)據(jù)和程序要在同一個(gè)物理節(jié)點(diǎn)里,數(shù)據(jù)在哪里,程序就跑去哪里運(yùn)行。這個(gè)工作是JobTracker做的,監(jiān)控task,還會(huì)重啟失敗的task(于不同的節(jié)點(diǎn)),每個(gè)集群只有唯一一個(gè)JobTracker,類似單點(diǎn)的NameNode,位于Master節(jié)點(diǎn)
TaskTracker
- TaskTracker叫任務(wù)跟蹤器,MapReduce體系的最后一個(gè)后臺(tái)進(jìn)程,位于每個(gè)slave節(jié)點(diǎn)上,與datanode結(jié)合(代碼與數(shù)據(jù)一起的原則),管理各自節(jié)點(diǎn)上的task(由jobtracker分配),
- 每個(gè)節(jié)點(diǎn)只有一個(gè)tasktracker,但一個(gè)tasktracker可以啟動(dòng)多個(gè)JVM,運(yùn)行Map Task和Reduce Task;并與JobTracker交互,匯報(bào)任務(wù)狀態(tài),
- Map Task:解析每條數(shù)據(jù)記錄,傳遞給用戶編寫(xiě)的map(),并執(zhí)行,將輸出結(jié)果寫(xiě)入本地磁盤(pán)(如果為map-only作業(yè),直接寫(xiě)入HDFS)。
- Reducer Task:從Map Task的執(zhí)行結(jié)果中,遠(yuǎn)程讀取輸入數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行排序,將數(shù)據(jù)按照分組傳遞給用戶編寫(xiě)的reduce函數(shù)執(zhí)行。
二、Hadoop的安裝
1、下載安裝
# 下載安裝包
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
# 解壓安裝包
tar xf hadoop-2.7.3.tar.gz && mv hadoop-2.7.3 /usr/local/hadoop
# 創(chuàng)建目錄
mkdir -p /home/hadoop/{name,data,log,journal}
2、配置 Hadoop 環(huán)境變量
創(chuàng)建文件/etc/profile.d/hadoop.sh
。
# HADOOP ENV
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使 Hadoop 環(huán)境變量生效。
source /etc/profile.d/hadoop.sh
三、Hadoop 配置
1、配置 hadoop-env.sh
編輯文件/usr/local/hadoop/etc/hadoop/hadoop-env.sh
,修改下面字段。
export JAVA_HOME=/usr/java/default
export HADOOP_HOME=/usr/local/hadoop
2、配置 yarn-env.sh
編輯文件/usr/local/hadoop/etc/hadoop/yarn-env.sh
,修改下面字段。
export JAVA_HOME=/usr/java/default
3、配置 DN 白名單 slaves
編輯文件/usr/local/hadoop/etc/hadoop/slaves
datanode01
datanode02
datanode03
4、配置核心組件 core-site.xml
編輯文件/usr/local/hadoop/etc/hadoop/core-site.xml
,修改為如下:
fs.default.name
hdfs://cluster1:9000
hadoop.tmp.dir
/home/hadoop/data
ha.zookeeper.quorum
zk01:2181,zk02:2181,zk03:2181
dfs.permissions
false
io.file.buffer.size
131702
5、配置文件系統(tǒng) hdfs-site.xml
編輯文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml
,修改為如下:
dfs.namenode.name.dir
file:/home/hadoop/name
dfs.datanode.data.dir
file:/home/hadoop/data
dfs.replication
2
dfs.webhdfs.enabled
true
dfs.nameservices
cluster1
6、配置計(jì)算框架 mapred-site.xml
編輯文件/usr/local/hadoop/etc/hadoop/mapred-site.xml
,修改為如下:
mapreduce.framework.name
yarn
mapred.local.dir
/home/hadoop/data
mapreduce.admin.map.child.java.opts
-Xmx256m
mapreduce.admin.reduce.child.java.opts
-Xmx4096m
mapred.child.java.opts
-Xmx512m
mapred.task.timeout
1200000
true
dfs.hosts.exclude
slaves.exclude
mapred.hosts.exclude
slaves.exclude
7、配置計(jì)算框架 yarn-site.xml
編輯文件/usr/local/hadoop/etc/hadoop/yarn-site.xml
,修改為如下:
yarn.resourcemanager.hostname
namenode01
yarn.resourcemanager.address
${yarn.resourcemanager.hostname}:8032
yarn.resourcemanager.scheduler.address
${yarn.resourcemanager.hostname}:8030
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
yarn.resourcemanager.resource-tracker.address
${yarn.resourcemanager.hostname}:8031
yarn.resourcemanager.admin.address
${yarn.resourcemanager.hostname}:8033
yarn.scheduler.maximum-allocation-mb
983040
yarn.resourcemanager.scheduler.class
yarn.resourcemanager.resource-tracker.address
${yarn.resourcemanager.hostname}:8031
yarn.resourcemanager.admin.address
${yarn.resourcemanager.hostname}:8033
yarn.scheduler.maximum-allocation-mb
8182
yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
yarn.log-aggregation-enable
true
yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
yarn.scheduler.maximum-allocation-vcores
512
yarn.scheduler.minimum-allocation-mb
2048
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
yarn.nodemanager.resource.cpu-vcores
12
yarn.nodemanager.resource.memory-mb
8192
yarn.nodemanager.vmem-check-enabled
false
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-pmem-ratio
2.1
yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage
98.0
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.auxservices.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
8、將配置文件復(fù)制到其他服務(wù)節(jié)點(diǎn)
cd /usr/local/hadoop/etc/hadoop
scp * datanode01:/usr/local/hadoop/etc/hadoop
scp * datanode02:/usr/local/hadoop/etc/hadoop
scp * datanode03:/usr/local/hadoop/etc/hadoop
chown -R hadoop:hadoop /usr/local/hadoop
chmod 755 /usr/local/hadoop/etc/hadoop
四、Hadoop 啟動(dòng)
1、格式化 HDFS(在NameNode01執(zhí)行)
hdfs namenode -format
hadoop-daemon.sh start namenode
2、重啟 Hadoop(在NameNode01執(zhí)行)
stop-all.sh
start-all.sh
五、檢查 Hadoop
1、檢查JPS進(jìn)程
[root@namenode01 ~]# jps
17419 NameNode
17780 ResourceManager
18152 Jps
[root@datanode01 ~]# jps
2227 DataNode
1292 QuorumPeerMain
2509 Jps
2334 NodeManager
[root@datanode02 ~]# jps
13940 QuorumPeerMain
18980 DataNode
19093 NodeManager
19743 Jps
[root@datanode03 ~]# jps
19238 DataNode
19350 NodeManager
14215 QuorumPeerMain
20014 Jps
2、HDFS 的 WEB 界面
訪問(wèn) http://192.168.1.200:50070/
3、YARN 的 WEB 界面
訪問(wèn) http://192.168.1.200:8088/
六、MapReduce的WordCount驗(yàn)證
1、上傳需要處理的文件到 hdfs。
[root@namenode01 ~]# hadoop fs -put /root/anaconda-ks.cfg /anaconda-ks.cfg
2、進(jìn)行 wordcount
[root@namenode01 ~]# cd /usr/local/hadoop/share/hadoop/mapreduce/
[root@namenode01 mapreduce]# hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /anaconda-ks.cfg /test
18/11/17 00:04:45 INFO client.RMProxy: Connecting to ResourceManager at namenode01/192.168.1.200:8032
18/11/17 00:04:45 INFO input.FileInputFormat: Total input paths to process : 1
18/11/17 00:04:45 INFO mapreduce.JobSubmitter: number of splits:1
18/11/17 00:04:45 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1541095016765_0004
18/11/17 00:04:46 INFO impl.YarnClientImpl: Submitted application application_1541095016765_0004
18/11/17 00:04:46 INFO mapreduce.Job: The url to track the job: http://namenode01:8088/proxy/application_1541095016765_0004/
18/11/17 00:04:46 INFO mapreduce.Job: Running job: job_1541095016765_0004
18/11/17 00:04:51 INFO mapreduce.Job: Job job_1541095016765_0004 running in uber mode : false
18/11/17 00:04:51 INFO mapreduce.Job: map 0% reduce 0%
18/11/17 00:04:55 INFO mapreduce.Job: map 100% reduce 0%
18/11/17 00:04:59 INFO mapreduce.Job: map 100% reduce 100%
18/11/17 00:04:59 INFO mapreduce.Job: Job job_1541095016765_0004 completed successfully
18/11/17 00:04:59 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=1222
FILE: Number of bytes written=241621
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=1023
HDFS: Number of bytes written=941
HDFS: Number of read operations=6
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
Job Counters
Launched map tasks=1
Launched reduce tasks=1
Data-local map tasks=1
Total time spent by all maps in occupied slots (ms)=1758
Total time spent by all reduces in occupied slots (ms)=2125
Total time spent by all map tasks (ms)=1758
Total time spent by all reduce tasks (ms)=2125
Total vcore-milliseconds taken by all map tasks=1758
Total vcore-milliseconds taken by all reduce tasks=2125
Total megabyte-milliseconds taken by all map tasks=1800192
Total megabyte-milliseconds taken by all reduce tasks=2176000
Map-Reduce Framework
Map input records=38
Map output records=90
Map output bytes=1274
Map output materialized bytes=1222
Input split bytes=101
Combine input records=90
Combine output records=69
Reduce input groups=69
Reduce shuffle bytes=1222
Reduce input records=69
Reduce output records=69
Spilled Records=138
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=99
CPU time spent (ms)=970
Physical memory (bytes) snapshot=473649152
Virtual memory (bytes) snapshot=4921606144
Total committed heap usage (bytes)=441450496
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
wRONG_LENGTH=0
wRONG_MAP=0
wRONG_REDUCE=0
File Input Format Counters
Bytes Read=922
File Output Format Counters
Bytes Written=941
3、查看結(jié)果
[root@namenode01 mapreduce]# hadoop fs -cat /test/part-r-00000
# 11
#version=DEVEL 1
$6$kRQ2y1nt/B6c6ETs$ITy0O/E9P5p0ePWlHJ7fRTqVrqGEQf7ZGi5IX2pCA7l25IdEThUNjxelq6wcD9SlSa1cGcqlJy2jjiV9/lMjg/ 1
%addon 1
%end 2
%packages 1
--all 1
--boot-drive=sda 1
--bootproto=dhcp 1
--device=enp1s0 1
--disable 1
--drives=sda 1
--enable 1
--enableshadow 1
--hostname=localhost.localdomain 1
--initlabel 1
--ipv6=auto 1
--isUtc 1
--iscrypted 1
--location=mbr 1
--onboot=off 1
--only-use=sda 1
--passalgo=sha512 1
--reserve-mb='auto' 1
--type=lvm 1
--vckeymap=cn 1
--xlayouts='cn' 1
@^minimal 1
@core 1
Agent 1
Asia/Shanghai 1
CDROM 1
Keyboard 1
Network 1
Partition 1
Root 1
Run 1
Setup 1
System 4
Use 2
auth 1
authorization 1
autopart 1
boot 1
bootloader 2
cdrom 1
clearing 1
clearpart 1
com_redhat_kdump 1
configuration 1
first 1
firstboot 1
graphical 2
ignoredisk 1
information 3
install 1
installation 1
keyboard 1
lang 1
language 1
layouts 1
media 1
network 2
on 1
password 1
rootpw 1
the 1
timezone 2
zh_CN.UTF-8 1
七、Hadoop 的使用
查看fs幫助命令: hadoop fs -help
查看HDFS磁盤(pán)空間: hadoop fs -df -h
創(chuàng)建目錄: hadoop fs -mkdir
上傳本地文件: hadoop fs -put
查看文件: hadoop fs -ls
查看文件內(nèi)容: hadoop fs –cat
復(fù)制文件: hadoop fs -cp
下載HDFS文件到本地: hadoop fs -get
移動(dòng)文件: hadoop fs -mv
刪除文件: hadoop fs -rm -r -f
刪除文件夾: hadoop fs -rm –r
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
文章名稱:Hadoop部署之Hadoop(三)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://fisionsoft.com.cn/article/ceehsh.html