国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通過虛擬化技術(shù)在Linux系統(tǒng)下搭建Hadoop集群的研究與實(shí)現(xiàn)

2016-11-16 14:45黃楠
電腦知識與技術(shù) 2016年25期
關(guān)鍵詞:虛擬化

黃楠

摘要:本文從節(jié)約成本和簡化搭建過程出發(fā),介紹了通過VMware Workstation和CentOS 6.5在單機(jī)環(huán)境下,搭建分布式Hadoop集群的方法,并給出了詳細(xì)的搭建步驟,最后對搭建好的平臺進(jìn)行了測試,測試結(jié)果表明建立在虛擬機(jī)上的Hadoop集群已經(jīng)可以正常運(yùn)行,可在上面進(jìn)行實(shí)驗和應(yīng)用開發(fā)。

關(guān)鍵詞:Hadoop;VMware;虛擬化

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)25-0175-06

1 概述

目前,大數(shù)據(jù)已經(jīng)成為研究的熱點(diǎn),大數(shù)據(jù)的解決方案種類繁多,其中Hadoop作為 Apache基金會的一個開源項目,已經(jīng)積累了大量用戶,在業(yè)界也得到了廣泛的認(rèn)可,一些知名企業(yè)如百度、阿里巴巴、 谷歌、騰訊和facebook等,紛紛將 Hadoop應(yīng)用于商業(yè)領(lǐng)域。傳統(tǒng)的Hadoop集群是基于物理節(jié)點(diǎn)搭建的,雖然理論上組建一個 Hadoop集群不需要昂貴的高性能計算機(jī),僅需一些廉價的計算機(jī)即可[1,2],但如采用傳統(tǒng)技術(shù)搭建Hadoop集群,就不得不面對一些問題:①構(gòu)建集群需要大量的物理設(shè)備以及足夠的實(shí)驗場地②物理機(jī)的性能得不到充分利用;③基于物理機(jī)的Hadoop集群組建后,如需增加節(jié)點(diǎn),就要增加新的物理機(jī),需要更大的場地,而且集線器、交換機(jī)等物理設(shè)備也要相應(yīng)增加,布置起來比較錯綜復(fù)雜。面對這些問題,如何在?本文對這個問題進(jìn)行探討,介紹一下在單機(jī)環(huán)境中,使用VMware Workstation 10和CentOS 6.5搭建Hadoop分布式集群并進(jìn)行簡單的測試。

2 Hadoop簡介

Hadoop是一種分析和處理大數(shù)據(jù)的軟件平臺,是Apache的一個用Java語言所實(shí)現(xiàn)的開源軟件框架,在大量計算機(jī)組成的集群當(dāng)中實(shí)現(xiàn)了對海量數(shù)據(jù)進(jìn)行分布式計算。Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce,HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce為海量的數(shù)據(jù)提供了計算。大數(shù)據(jù)在Hadoop處理的流程可以參照圖1來進(jìn)行理解:數(shù)據(jù)是通過Hadoop的集群處理后得到的結(jié)果。[3]

Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker組成,如圖2所示:

NameNode:記錄文件是如何被拆分成block以及這些block都存儲到了那些DateNode節(jié)點(diǎn),同時也保存了文件系統(tǒng)運(yùn)行的狀態(tài)信息。

DataNode:存儲被拆分的blocks。

Secondary NameNode:幫助NameNode收集文件系統(tǒng)運(yùn)行的狀態(tài)信息。

JobTracker:當(dāng)有任務(wù)提交到Hadoop集群時,負(fù)責(zé)Job的運(yùn)行,負(fù)責(zé)調(diào)度多個TaskTracker。

TaskTracker:負(fù)責(zé)某一個map或者reduce任務(wù)。

3 搭建Hadoop虛擬實(shí)驗平臺

3.1準(zhǔn)備與安裝環(huán)境

服務(wù)器準(zhǔn)備:安裝虛擬機(jī)和linux,虛擬機(jī)推薦使用vmware;PC可以使用workstation,配置低的話可選擇Cygwin,模擬linux環(huán)境;服務(wù)器可以使用ESXi,在管理上比較方便。ESXi還可以通過拷貝鏡像文件復(fù)制虛擬機(jī),復(fù)制后自動修改網(wǎng)卡號和ip非常快捷。 如果只是實(shí)驗用途,硬盤大約預(yù)留20-30G空間。

操作系統(tǒng):CentOS 6.5 ,分區(qū)可以選擇默認(rèn),安裝選項默認(rèn)即可,注意選項里應(yīng)包括ssh , vi (用于編輯配置文件) , perl等(有些腳本里包含perl代碼需要解析)。

JAVA環(huán)境:到Oracle官網(wǎng)下載java jdk安裝包,并且進(jìn)行安裝。

3.2實(shí)驗環(huán)境

硬件環(huán)境:Vmware 10 ,三臺Linux虛擬機(jī):CentOS 6.5, 安裝介質(zhì):cdh5.4.0。

三臺虛擬機(jī)配置如表1:

3.3安裝與配置三臺虛擬機(jī)

3.3.1準(zhǔn)備三臺虛擬機(jī)

打開虛擬軟件VMware WorkStation。

點(diǎn)擊“文件”->“打開”,找到虛擬機(jī)所在目錄,打開裝有CentOS6.5的虛擬機(jī)。

通過克隆生成新的虛擬機(jī),如圖3。

3.3.2操作系統(tǒng)網(wǎng)絡(luò)配置

確認(rèn)三臺虛擬機(jī)為不同MAC地址,選擇“NAT模式”的網(wǎng)絡(luò)連接方式,如圖4。

打開虛擬機(jī),按照表1設(shè)置IP地址,然后通過“ifconfig”命令查看網(wǎng)絡(luò)地址,如圖5。

設(shè)置完后,root用戶用“service network restart”命令重啟網(wǎng)絡(luò)。

根據(jù)表1修改三臺主機(jī)的主機(jī)名,修改后系統(tǒng)需重新啟動,編輯/etc/sysconfig/network,HOSTNAME=master或slave。

修改/etc/hosts,所有主機(jī)添加如下內(nèi)容:

192.168.xx.101 master

192.168.xx.102 slave1

192.168.xx.103 slave2

3.3.3 ssh無密碼登錄配置

三臺主機(jī)確保關(guān)閉防火墻,#chkconfig iptables,#services iptables stop。

關(guān)閉SElINUX,修改/etc/selinux/config中的SELINUX=””為disable。

在所有主機(jī)生成密鑰并配置SSH無密碼登錄主機(jī)

#ssh-keygen -t rsa

在master生成認(rèn)證文件,然后授權(quán)并將文件拷貝到slave1

#cat ~/.ssh/id_rsa.pub >>~ /.ssh/authorized_ keys

# chmod 600 authorized_keys

#scp ~/.ssh/authorized_ keys slave 1:~/.ssh/

在slave1上添加公鑰信息,然后授權(quán)并將文件拷貝到slave2

#cat ~/.ssh/id_rsa.pub >>~ /.ssh/authorized_ keys

# chmod 600 authorized_keys

#scp ~/.ssh/authorized_ keys slave 2:~/.ssh/

在slave2上添加公鑰信息,然后授權(quán)并將文件拷貝到master和slave1

#cat ~/.ssh/id_rsa.pub >>~ /.ssh/authorized_ keys

# chmod 600 authorized_keys

#scp ~/.ssh/authorized_ keys master:~/.ssh/

#scp ~/.ssh/authorized_ keys slave 1:~/.ssh/

測試是否實(shí)現(xiàn)三臺主機(jī)間的無密碼登錄

#ssh master

#ssh slave1

3.3.4 配置JAVA環(huán)境

三臺主機(jī)分別上傳jdk文件到桌面并執(zhí)行配置

mkdir /usr/java

mv ~/Desktop/jdk-7u71-linux-x64.gz /usr/java/

cd /usr/java

tar -xvf jdk-7u71-linux-x64.gz

在master配置環(huán)境變量,在/root/.bashrc文件添加如下內(nèi)容

export JAVA_HOME=/usr/java/jdk1.7.0_71

export PATH=$PATH:$JAVA_HOME/bin

生效并發(fā)送到另外兩臺主機(jī)

#source .bashrc

#scp .bashrc slave1: ~

#scp .bashrc slave2: ~

驗證

#java -version

3.3.5配置集群時間同步

選擇master作為時間同步服務(wù)器,修改master的/etc/ntp.conf,添加

restrict 192.168.x.O mask 255.255.255.0 notrap nomodify

server 127.127.1.0 #local clock

啟動服務(wù)

#service ntpd start

#chkconfig ntpd on

在slave1和slave2上添加定時任務(wù),執(zhí)行#crontab -e命令,添加如下內(nèi)容

0 1 * * * root /usr/sbin/ntpdate master >> /root/ntpdate.log 2>&1

3.3.6 配置yum源

設(shè)置虛擬機(jī)master,使用ISO鏡像文件,如圖6。

在master上掛載光驅(qū)

#mkdir /media/cdh5

#mount -o loop -t iso9660 /dev/cdrom /media/cdh5

在master上創(chuàng)建文件/etc/yum.repos.d/cloudera-cdh5.repo,添加

[cloudera-cdh5]

name=Clouderas Distribution for Hadoop, Version 5

baseurl=file:///media/cdh5/cdh/5.4.0/

gpgcheck=O

enabled= 1

在slave1和slave2上創(chuàng)建文件/etc/yum.repos.d/cloudera-cdh5.repo,添加

[cloudera-cdh5]

name=Clouderas Distribution for Hadoop, Version 5

baseurl=http://master/media_cdh5/cdh/5.4.0/

gpgcheck=O

enabled= 1

在master上啟動web服務(wù)

#service httpd start

#chkconfig httpd on

在master上創(chuàng)建相應(yīng)軟連接并測試

#ln -s /media/cdh5 /var/www/html/media_cdh5

#yum clean all

#yum list |grep hadoop-hdfs

3.3.7安裝HDFS

在master上安裝

yum install -y hadoop hadoop-hdfs hadoop-client hadoop-doc \

hadoop-debuginfo hadoop-hdfs-namenode \

hadoop-hdfs-secondarynamenode

在slave1和slave2節(jié)點(diǎn)上安裝

yum install -y hadoop hadoop-hdfs hadoop-client hadoop-doc \

hadoop-debuginfo hadoop-hdfs-datanode

3.3.8安裝YARN

在master上安裝

yum install -y hadoop-yarn hadoop-yarn-resourcemanager

在slave1和slave2節(jié)點(diǎn)上安裝

yum install hadoop-yarn hadoop-yarn-nodemanager hadoop-mapreduce -y

3.3.9配置HAdoop環(huán)境變量

在master配置環(huán)境變量,在/root/.bashrc文件添加如下內(nèi)容

#HADOOP

export HADOOP_HOME=/usr/lib/hadoop

export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

export HADOOP_COMMON_HOME=${HADOOP_HOME}

export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn

export HADOOP_LIBEXEC_DIR=${HADOOP_HOME}/libexec

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

執(zhí)行如下命令使配置生效,并發(fā)送到slave1和slave2

#source .bashrc

#scp .bashrc slave1: ~

#scp .bashrc slave2: ~

Hadoop有兩類重要的配置文件:

只讀默認(rèn)的配置文件:core-default.xml, hdfs-default.xml, yarn-default.xml,mapred-default.xml。

手工配置文件($HADOOP_HOME/etc/hadoop/目錄下): core-site.xml,hdfs-site.xml,yarn-site.xml, mapred-site.xml。

另外,還有幾個重要的Hadoop環(huán)境配置文件:yarn-env.sh,slaves。

在master上修改yarn-env.sh和slave文件,配置yarn的運(yùn)行環(huán)境

#vi $HADOOP_HOME/etc/hadoop/yarn-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_71/

#vi $HADOOP_HOME/etc/hadoop/slaves

slave1

slave2

修改core-site.xml文件

#vi $HADOOP_HOME/etc/hadoop/core-site.xml

fs.defaultFS

hdfs://master:9000

修改hdfs-site.xml文件

#vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

dfs.replication

3

dfs.permissions.superusergroup

hadoop

dfs.namenode.name.dir

file:///data/dfs/nn

dfs.datanode.data.dir

file:///data/dfs/dn

在master節(jié)點(diǎn)手動創(chuàng)建dfs.namenode.name.dir的本地目錄

#mkdir -p /data/dfs/nn

在slave1和slave2節(jié)點(diǎn)手動配置創(chuàng)建dfs.datanode.data.dir的本地目錄

#mkdir -p /data/dfs/dn

在所有主機(jī)上修改所有者權(quán)限

#chown -R hdfs:hdfs /data/dfs

下面列出一些需要關(guān)注的資源分配參數(shù),如表2。

配置yarn-site.xml文件

增加

yarn.resourcemanager.address

master:8032

yarn.resourcemanager.scheduler.address

master:8030

yarn.resourcemanager.resource-track.address

master:8031

yarn.resourcemanager.admin.address

master:8033

yarn.resourcemanager.webapp.address

master:8088

yarn.resourcemanager.hostname

master

修改

Where to aggregate logs to.

yarn.nodemanager.remote-app-log-dir

/var/log/hadoop-yarn/apps

配置mapred-site.xml

mapreduce.framework.name

yarn

復(fù)制配置到其他節(jié)點(diǎn),復(fù)制.bashrc和hadoop配置文件到slave1和slave2

#scp .bashrc slave1: ~

#scp .bashrc slave2: ~

#scp -r /etc/hadoop/conf slave1:/etc/hadoop/

#scp -r /etc/hadoop/conf slave2:/etc/hadoop/

在master節(jié)點(diǎn)上進(jìn)行格式化

#sudo -u hdfs hadoop namenode –format

3.3.10啟動HDFS集群

在master上啟動

#service hadoop-hdfs-namenode start

#service hadoop-hdfs-secondarynamenode start

在slave1和slave2上啟動

#service hadoop-hdfs-datanode start

通過jsp命令查看進(jìn)程,確認(rèn)HDFS集群是否成功啟動

登錄web控制臺,查看HDFS集群狀態(tài),http://192.168.6.101:50070,如圖7

3.3.11創(chuàng)建HDFS目錄

創(chuàng)建/temp臨時目錄,并設(shè)置權(quán)限為1777

#sudo –u hdfs hadoop fs –mkdir –p /tmp/hadoop-yarn

#sudo –u hdfs hadoop fs –chmod –R 1777 /tmp

創(chuàng)建/user用戶目錄,并設(shè)置權(quán)限為777

#sudo –u hdfs hadoop fs –mkdir /user

#sudo –u hdfs hadoop fs –chmod 777 /user

創(chuàng)建yarn.nodemanager.remote-app-log-dir目錄

#sudo –u hdfs hadoop fs –mkdir –p /var/log/hadoop-yarn/apps

#sudo –u hdfs hadoop fs –chown yarn:mapred /var/log/hadoop-yarn/apps

#sudo –u hdfs hadoop fs –chmod 1777 /var/log/hadoop-yarn/apps

#sudo –u hdfs hadoop fs –chmod 1777 /tmp/hadoop-yarn

3.3.12啟動YARN集群

在master上啟動

#service hadoop-yarn-resourcemanager start

在slave1和slave2上啟動

#service hadoop-yarn-nodemanager start

通過jsp命令查看進(jìn)程,確認(rèn)YARN集群是否成功啟動

通過Web控制臺,查看ResourceManager狀態(tài),http://192.168.6.101:8088,如圖8。

通過Web控制臺,查看NodeManager狀態(tài),http://192.168.6.102:8042,如圖9。

4 測試Hadoop集群

在master上執(zhí)行

#sudo –u hdfs hadoop fs –mkdir –p /input/wordcount

#mkdir /tmp/input

#echo “hello hadoop hello word xiaonan” > /tmp/input/test1.txt

#sudo –u hdfs hadoop fs –put /tmp/input/*.txt /input/wordcount

#sudo –u hdfs hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /input/wordcount /output/wc01

執(zhí)行結(jié)果如圖10所示。

5 總結(jié)

測試結(jié)果顯示,建立在虛擬機(jī)上的Hadoop集群已經(jīng)可以正常運(yùn)行,可在上面進(jìn)行實(shí)驗和應(yīng)用開發(fā)。本文從簡化搭建過程和充分利用機(jī)器性能出發(fā),在單機(jī)上通過虛擬化軟件,虛擬出三臺Linux主機(jī),搭建了分布式Hadoop集群。在搭建過程中,有幾點(diǎn)需要注意:虛擬機(jī)安裝時,就要配置好主機(jī)的靜態(tài)IP和主機(jī)名,這樣可以方便后面的操作;當(dāng)安裝或運(yùn)行時發(fā)生錯誤,可以查看相應(yīng)的log文件,這會對找出問題很有幫助。

參考文獻(xiàn):

[1] 付偉,嚴(yán)博,吳曉平.云計算實(shí)驗平臺建設(shè)關(guān)鍵技術(shù)研究[J].實(shí)驗室研究與探索,2013(11):78-81.

[2] 張興旺,李晨暉,秦曉珠.構(gòu)建于廉價計算機(jī)集群上的云存儲的研究與初步實(shí)現(xiàn)[J].情報雜志,2011(11):166-171,182.

[3](美)Tom White.Hadoop權(quán)威指南[M].2版.周敏奇,王曉玲,金澈清,等.譯.北京:清華大學(xué)出版社,2011:9-12.

猜你喜歡
虛擬化
基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺的設(shè)計與實(shí)現(xiàn)
對基于Docker的虛擬化技術(shù)的幾點(diǎn)探討
虛擬化技術(shù)在計算機(jī)技術(shù)創(chuàng)造中的應(yīng)用
存儲虛擬化還有優(yōu)勢嗎?
桑日县| 海南省| 巴彦淖尔市| 华蓥市| 鄂州市| 团风县| 延吉市| 绥化市| 油尖旺区| 湘阴县| 科技| 安阳市| 浪卡子县| 建宁县| 独山县| 新源县| 肥西县| 兴国县| 博兴县| 博白县| 屯昌县| 江北区| 乌兰县| 克拉玛依市| 城固县| 和政县| 阳西县| 惠安县| 综艺| 庆城县| 左贡县| 新乡县| 承德县| 新兴县| 杭锦旗| 石狮市| 右玉县| 扬中市| 胶州市| 长沙县| 怀化市|