使用vagrant搭建hadoop環(huán)境

環(huán)境準(zhǔn)備

  1. 下載vagrant和virtualbox,并安裝
  1. 虛擬機(jī)配置
  • 1臺(tái)master: memory 2048m 硬盤(pán)20G
  • 2臺(tái)slave: memory 1024m 硬盤(pán)10G

安裝步驟

  1. 從官網(wǎng)下載centos鏡像:
    vagrant box add centos/7
    

如果box下載速度慢揽咕,可以拷貝控制臺(tái)上的下載鏈接用迅雷等下載工具下載到本地
box下載.png
  1. 創(chuàng)建vagrantfile所在文件夾,并創(chuàng)建兩個(gè)文件Vagrantfile和init.sh
    mkdir /project
    touch VagrantFile
    touch init.sh
    

其中VagrantFile是vagrant的啟動(dòng)配置文件套菜, init.sh是初始環(huán)境的安裝腳本

  1. 編輯VagrantFile文件亲善, 內(nèi)容如下
Vagrant.configure("2") do |config|
    config.vm.define :master1, primary: true do |master|
        master.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", "hadoop-master1", "--memory", "512"]
       end
       master.vm.box = "centos/7"
       master.vm.hostname = "hadoop-master1"
       master.vm.network :private_network, ip: "192.168.10.10"
    end

   (1..2).each do |i|
    config.vm.define "slave#{i}" do |node|
        node.vm.box = "centos/7"
        node.vm.hostname = "hadoop-slave#{i}"
        node.vm.network :private_network, ip: "192.168.10.1#{i}"
        node.vm.provider "virtualbox" do |vb|
          vb.memory = "1024"
        end
     end
   end

  #manage hosts file 
  config.hostmanager.enabled = true
  config.hostmanager.manage_host = true
  config.hostmanager.manage_guest = true

   #provision
   config.vm.provision "shell", path: "init.sh", privileged: false
end

可以看到, 我們一共創(chuàng)建了4個(gè)虛擬機(jī)環(huán)境 逗柴,分別是master1, slave1, slave2, slave3

  1. 啟動(dòng)虛擬機(jī)蛹头, 驗(yàn)證配置是否正確
vagrant up

啟動(dòng)過(guò)程中如果有打印如下信息, 不需要理會(huì)

slave3: Warning: Connection aborted. Retrying...
slave3: Warning: Connection reset. Retrying...
slave3: Warning: Connection aborted. Retrying...
slave3: Warning: Connection reset. Retrying...

正常啟動(dòng)后戏溺,我們就可以使用以下命令登錄到虛擬機(jī)了

vagrant ssh master1

我們可以運(yùn)行以下命令渣蜗, 測(cè)試host-manager

[vagrant@hadoop-master1 /]$ ping hadoop-slave1
PING hadoop-slave1 (192.168.10.11) 56(84) bytes of data.
64 bytes from hadoop-slave1 (192.168.10.11): icmp_seq=1 ttl=64 time=0.453 ms
64 bytes from hadoop-slave1 (192.168.10.11): icmp_seq=2 ttl=64 time=0.377 ms
64 bytes from hadoop-slave1 (192.168.10.11): icmp_seq=3 ttl=64 time=0.429 ms
64 bytes from hadoop-slave1 (192.168.10.11): icmp_seq=4 ttl=64 time=0.387 ms

可以看到, 我們并沒(méi)有配置host文件旷祸,主機(jī)可以自動(dòng)標(biāo)識(shí)

  1. 使用securecrt做為ssh客戶(hù)端
    一般情況下耕拷, 我們習(xí)慣使用securecrt等工具進(jìn)行主機(jī)的操作,但是如果你直接使用securecrt的時(shí)候托享,會(huì)報(bào)找不到public key的問(wèn)題:


    securecrt問(wèn)題.png

這個(gè)時(shí)候骚烧,我們可以做如下配置

1.下載安裝puttygen
https://the.earth.li/~sgtatham/putty/latest/w64/puttygen.exe
2.打開(kāi)Putty Key Generator,點(diǎn)擊"Load"按鈕闰围,然后選擇主機(jī)的privatekey, 路徑為.vagrant\machines\master1\virtualbox\private_key赃绊。
3.Load成功后,選擇菜單中的"Conversions”—>"Export OpenSSH key"
4.然后會(huì)彈出保存文件對(duì)話(huà)框羡榴,選擇一個(gè)你需要的名字碧查,比如"openssh-key",保存到~/.ssh目錄中去
注意:這一步保存的文件名不能有任何后綴,按照原文作者所述校仑,如果用了比如openssh-key.pub的公鑰文件忠售,則SecureCRT會(huì)在同樣目錄下尋找名為"openssh-key"的私鑰
5.在puttygen的界面者冤,還需要選擇save public key,保存publickey到~/.ssh目錄中
6.這樣档痪, 我們同時(shí)生成了新的公鑰和私鑰

打開(kāi)securecrt涉枫,登好主機(jī)IP和用戶(hù)名后,需要做如下操作:


securecrt設(shè)置.png

這樣腐螟,就可以使用securecrt進(jìn)行登錄了

  1. 編寫(xiě)provision文件
    前面安裝vagrant的時(shí)候說(shuō)到愿汰,provision的作用是幫助我們進(jìn)行主機(jī)環(huán)境的初始化工作,現(xiàn)在我們來(lái)編寫(xiě)init.sh乐纸,具體內(nèi)容根據(jù)實(shí)際情況進(jìn)行刪減衬廷。在provision里,我只是安裝了linux環(huán)境必需的一些組件汽绢,具體hadoop集群需要的組件我會(huì)使用ansible進(jìn)行安裝吗跋。
sudo yum install -y epel-release

sudo yum install -y  lrzsz.x86_64
sudo yum install -y nmap-ncat.x86_64
sudo yum install -y net-tools
sudo yum install -y vim-enhanced.x86_64
sudo yum install -y sshpass

編寫(xiě)完后,運(yùn)行命令進(jìn)行生效

vagrant provision
  1. 設(shè)置ssh互信
    參考編寫(xiě)ssh互信腳本
    在ssh登錄過(guò)程中宁昭,可能會(huì)報(bào)Permission denied (publickey,gssapi-keyex,gssapi-with-mic)跌宛,解決方法如下:vim /etc/ssh/sshd_config, 修改如下配置為yes
PubkeyAuthentication yes
PasswordAuthentication yes

重啟systemctl restart sshd

  1. 安裝JDK
yum install -y java-1.8.0-openjdk-devel

安裝完Jdk后, 記得要到hadoop-env.sh中配置java_home

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
  1. hadoop配置文件
    一共需要配置4個(gè)文件积仗, core-site.xml hdfs-site.xml yarn-site.xml mappr-site.xml workers, 以上文件路徑都位于etc/hadoop/中
  • core-site.xml
<configuration>
<!-- 設(shè)置 resourcemanager 在哪個(gè)節(jié)點(diǎn)-->
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop-master1</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>192.168.10.10:8088</value>
         </property>
         <!-- reducer取數(shù)據(jù)的方式是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • hdfs-site.xml
<configuration>
        <!-- 設(shè)置namenode的http通訊地址 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop-master1:50090</value>
        </property>
        <!-- 設(shè)置hdfs副本數(shù)量 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
         <!-- 設(shè)置namenode存放的路徑 -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/vagrant/hadoop-3.0.3/tmp/dfs/name</value>
        </property>
         <!-- 設(shè)置datanode存放的路徑 -->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/vagrant/hadoop-3.0.3/tmp/dfs/data</value>
        </property>
        <property>
          <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
          <value>false</value>
        </property>
</configuration>
  • yarn-site.xml
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop-master1</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>192.168.10.10:8088</value>
         </property>
         <!-- reducer取數(shù)據(jù)的方式是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • mapred-site.xml
<configuration>
        <!-- 通知框架MR使用YARN -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>
  • workers
hadoop-slave1
hadoop-slave2

worker文件只需要在master節(jié)點(diǎn)中進(jìn)行配置疆拘,workdrs中默認(rèn)配置為localhost,此時(shí)為偽分布式配置

  1. 配置環(huán)境變量
export HADOOP_HOME=/home/vagrant/hadoop-3.0.3
  1. 同步hadoop文件夾到slave節(jié)點(diǎn)相同路徑下
  2. 啟停集群
    啟動(dòng)運(yùn)行sbin/start-all.sh, 停止運(yùn)行sbin/stop-all.sh
    訪問(wèn)namenode的web管理界面: http://hadoop-master1:9870
    訪問(wèn)yarn的web管理界面: http://192.168.10.10:8088
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寂曹,一起剝皮案震驚了整個(gè)濱河市哎迄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隆圆,老刑警劉巖漱挚,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異渺氧,居然都是意外死亡旨涝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)阶女,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颊糜,“玉大人,你說(shuō)我怎么就攤上這事秃踩〕挠悖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵憔杨,是天一觀的道長(zhǎng)鸟赫。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么抛蚤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任台谢,我火速辦了婚禮,結(jié)果婚禮上岁经,老公的妹妹穿的比我還像新娘朋沮。我一直安慰自己,他們只是感情好缀壤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布樊拓。 她就那樣靜靜地躺著,像睡著了一般塘慕。 火紅的嫁衣襯著肌膚如雪筋夏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天图呢,我揣著相機(jī)與錄音条篷,去河邊找鬼。 笑死蛤织,一個(gè)胖子當(dāng)著我的面吹牛赴叹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞳筏,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼稚瘾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了姚炕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丢烘,失蹤者是張志新(化名)和其女友劉穎柱宦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體播瞳,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掸刊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赢乓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忧侧。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖牌芋,靈堂內(nèi)的尸體忽然破棺而出蚓炬,到底是詐尸還是另有隱情,我是刑警寧澤躺屁,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布肯夏,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驯击。R本人自食惡果不足惜烁兰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徊都。 院中可真熱鬧沪斟,春花似錦、人聲如沸暇矫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)袱耽。三九已至杀餐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朱巨,已是汗流浹背史翘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冀续,地道東北人琼讽。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像洪唐,于是被迫代替她去往敵國(guó)和親钻蹬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • (搭建集群部分借鑒了kiwenlau/hadoop-cluster-docker中的內(nèi)容凭需,不過(guò)那里的基礎(chǔ)環(huán)境是Ub...
    ProteanBear閱讀 3,840評(píng)論 0 12
  • 終極算法 關(guān)注微信號(hào)每天收聽(tīng)我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 129,866評(píng)論 12 168
  • 使用搭建部署分布式集群一:環(huán)境準(zhǔn)備: 1:首先要有一個(gè)Centos7操作系統(tǒng)问欠,可以在虛擬機(jī)中安裝。 2:在cent...
    yaoshiyou閱讀 306評(píng)論 0 1
  • 誰(shuí)的錯(cuò) 你說(shuō)紅椒比青椒辣 我問(wèn)紅蘋(píng)果比青蘋(píng)果甜嗎? 我們都不爭(zhēng)錯(cuò)枯怖,誰(shuí)爭(zhēng)都不對(duì)注整。 共享單車(chē) 你想好了,要騎著共享單車(chē)...
    倩何人換取閱讀 346評(píng)論 0 4
  • 紅顏無(wú)罪 只怪君醉紅顏 命途多舛 只求各自安好 三生石上持琵琶 一曲離殤為誰(shuí)奏 如今相思誰(shuí)斷腸 籠外安知籠內(nèi)痛
    flyawayfly閱讀 112評(píng)論 1 1