使用vagrant搭建hadoop环境

环境准备

  1. 下载vagrant和virtualbox,并安装
  1. 虚拟机配置
  • 1台master: memory 2048m 硬盘20G
  • 2台slave: memory 1024m 硬盘10G

安装步骤

  1. 从官网下载centos镜像:
    vagrant box add centos/7
    

如果box下载速度慢,可以拷贝控制台上的下载链接用迅雷等下载工具下载到本地
box下载.png
  1. 创建vagrantfile所在文件夹,并创建两个文件Vagrantfile和init.sh
    mkdir /project
    touch VagrantFile
    touch init.sh
    

其中VagrantFile是vagrant的启动配置文件, init.sh是初始环境的安装脚本

  1. 编辑VagrantFile文件, 内容如下
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

可以看到, 我们一共创建了4个虚拟机环境 ,分别是master1, slave1, slave2, slave3

  1. 启动虚拟机, 验证配置是否正确
vagrant up

启动过程中如果有打印如下信息, 不需要理会

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

正常启动后,我们就可以使用以下命令登录到虚拟机了

vagrant ssh master1

我们可以运行以下命令, 测试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

可以看到, 我们并没有配置host文件,主机可以自动标识

  1. 使用securecrt做为ssh客户端
    一般情况下, 我们习惯使用securecrt等工具进行主机的操作,但是如果你直接使用securecrt的时候,会报找不到public key的问题:


    securecrt问题.png

这个时候,我们可以做如下配置

1.下载安装puttygen
https://the.earth.li/~sgtatham/putty/latest/w64/puttygen.exe
2.打开Putty Key Generator,点击"Load"按钮,然后选择主机的privatekey, 路径为.vagrant\machines\master1\virtualbox\private_key。
3.Load成功后,选择菜单中的"Conversions”—>"Export OpenSSH key"
4.然后会弹出保存文件对话框,选择一个你需要的名字,比如"openssh-key",保存到~/.ssh目录中去
注意:这一步保存的文件名不能有任何后缀,按照原文作者所述,如果用了比如openssh-key.pub的公钥文件,则SecureCRT会在同样目录下寻找名为"openssh-key"的私钥
5.在puttygen的界面,还需要选择save public key,保存publickey到~/.ssh目录中
6.这样, 我们同时生成了新的公钥和私钥

打开securecrt,登好主机IP和用户名后,需要做如下操作:


securecrt设置.png

这样,就可以使用securecrt进行登录了

  1. 编写provision文件
    前面安装vagrant的时候说到,provision的作用是帮助我们进行主机环境的初始化工作,现在我们来编写init.sh,具体内容根据实际情况进行删减。在provision里,我只是安装了linux环境必需的一些组件,具体hadoop集群需要的组件我会使用ansible进行安装。
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

编写完后,运行命令进行生效

vagrant provision
  1. 设置ssh互信
    参考编写ssh互信脚本
    在ssh登录过程中,可能会报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个文件, core-site.xml hdfs-site.xml yarn-site.xml mappr-site.xml workers, 以上文件路径都位于etc/hadoop/中
  • core-site.xml
<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<!-- 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取数据的方式是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • hdfs-site.xml
<configuration>
        <!-- 设置namenode的http通讯地址 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop-master1:50090</value>
        </property>
        <!-- 设置hdfs副本数量 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
         <!-- 设置namenode存放的路径 -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/vagrant/hadoop-3.0.3/tmp/dfs/name</value>
        </property>
         <!-- 设置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取数据的方式是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节点中进行配置,workdrs中默认配置为localhost,此时为伪分布式配置

  1. 配置环境变量
export HADOOP_HOME=/home/vagrant/hadoop-3.0.3
  1. 同步hadoop文件夹到slave节点相同路径下
  2. 启停集群
    启动运行sbin/start-all.sh, 停止运行sbin/stop-all.sh
    访问namenode的web管理界面: http://hadoop-master1:9870
    访问yarn的web管理界面: http://192.168.10.10:8088
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • (搭建集群部分借鉴了kiwenlau/hadoop-cluster-docker中的内容,不过那里的基础环境是Ub...
    ProteanBear阅读 3,813评论 0 12
  • 终极算法 关注微信号每天收听我们的消息终极算法为您推送精品阅读 前言 Hadoop 在大数据技术体系中的地位至关...
    Yespon阅读 129,588评论 12 168
  • 使用搭建部署分布式集群一:环境准备: 1:首先要有一个Centos7操作系统,可以在虚拟机中安装。 2:在cent...
    yaoshiyou阅读 296评论 0 1
  • 谁的错 你说红椒比青椒辣 我问红苹果比青苹果甜吗? 我们都不争错,谁争都不对。 共享单车 你想好了,要骑着共享单车...
    倩何人换取阅读 342评论 0 4
  • 红颜无罪 只怪君醉红颜 命途多舛 只求各自安好 三生石上持琵琶 一曲离殇为谁奏 如今相思谁断肠 笼外安知笼内痛
    flyawayfly阅读 111评论 1 1