Hadoop--三台虚拟机搭建全分布模式

设备:

三台虚拟机:master0,slave1,slave2

192.168.56.132  master0

192.168.56.131  slave1

192.168.56.133  slave2

 

软件版本:

hadoop-2.9.0.tar.gz

jdk-8u201-linux-x64.tar.gz

链接: https://pan.baidu.com/s/1Bog6Hc77VOCUVCf1S3foaA 提取码: 22y4 

 

搭建过程:

1)节点间免密登录

  • 为3台虚拟机的配置静态IP地址( 参照[2] )
  • 各节点间使用 root 用户实现免密登录

1.1 配置静态IP地址

    首先要给3台虚拟机master0、salve1、slave2配置静态IP地址,因为每次启动虚拟机,VMWare都为虚拟机系统分配动态 IP,那么各节之间的地址-域名就无法固定,hadoop运行时就无法访问salve1,slave2节点。

输入命令:

sudo vi /etc/network/interfaces

master0配置如下,slave1,slave2根据各自情况配置:

#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33

iface ens33 inet static

#ip地址
address 192.168.56.132   
netmask 255.255.255.0

#网关,一般是ip地址前三位加上.2
gateway 192.168.56.2

dns-nameservers 8.8.8.8

配置完成后重启网络:

sudo service networking restart

 

1.2 配置免密登录

关于免密登录的原理,在鸟哥的linux教程中讲的很详细。(http://linux.vbird.org/linux_server/0310telnetssh.php#ssh_nopasswd

以master0为例,其它节点的操作相同。

步骤1:在hosts文件中配置好各子节点的ip地址以及名称

 

步骤2:要想用root用户ssh登录这台机器(master0),必须修改ssh的配置文件。

登录root用户 

su root

打开 /etc/ssh/ 路径下,sshd_config文件

gedit /etc/ssh/sshd_config

 

步骤3:在root用户下输入如下命令:

ssh-keygen -t rsa

以下这一步是关键!!!

ssh-copy-id -i ~/.ssh/id_rsa.pub root@machine*

(machine* 代表设备的名字,这里要输入3次)

即master0这台机器上输入三次命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@master0

ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1

ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2

得到以上结果,证明master0可以免密登录master0。

 

至此,master0可以免密登录localhost,slave1,slave2。

【slave1,slave2的操作和master0一模一样】

 

2)Hadoop和Java的安装

 

可以在windows下载 hadoop-2.9.0.tar.gz  和  jdk-8u201-linux-x64.tar.gz ,然后通过xshell传到master0上。

步骤1

在Ubuntu下解压 hadoop:

sudo tar zxvf hadoop-2.9.0.tar.gz -C /usr/local/hadoop

将java安装到 /usr/lib/jdk 目录下

sudo tar zxvf jdk-8u201-linux-x64.tar.gz -C  /usr/lib/jdk

 

步骤2   登录root用户并修改 /etc/profile

vim ~/.barshrc

添加如下

#jdk 环境配置

export Java_HOME=/usr/lib/jdk/jdk1.8.0_201 

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

 

#Hadoop环境

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.0

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

  • 最后在终端输入

sudo source ~/.bashrc

环境变量生效,至此hadoop和java的环境搭建完毕。

{关于配置环境变量的一点体会}

在Linux下安装程序,最后都需要配置环境变量,才可以方便使用。各种教程中会出现修改 profile 文件或 bashrc文件,那么这两种不同的配置方法到底有什么不同呢?

请看两者的差异。参考https://www.cnblogs.com/probemark/p/5886766.html 

• bashrc和profile的差异

从上面的英文描述可以知道,bashrc和profile的差异在于:
1. bashrc是在系统启动后就会自动运行。
2. profile是在用户登录后才会运行。
3. 进行设置后,可运用source bashrc命令更新bashrc,也可运用source profile命令更新profile。

 

#可以通过 hadoop检查是否安装成功

hadoop

 

#通过java -version 检查是否安装成功

java -version

 

tips:当一台机器安装好hadoop和java之后,可以通过scp将它们传到其它机器。但不推荐这么做,因为把hadoop传输过去,实在太慢了。还不如自己安装。

scp -r /usr/local/hadoop/  root@slave1:/usr/local/hadoop

 

 

3)配置Hadoop文件

    不需要每台机器都配置hadoop文件,只需要配置好master0上的hadoop文件,然后通过scp命令全部传到slave1,slave2上即可。

 

hadoop配置下主要注意配置文件路径的问题

主要包括:hadoop根目录下 /etc/hadoop 里面的xml配置文件

 配置这5个文件:hadoop-env.sh , hdfs-site.xml, mapred-site.xml , core-site.xml , yarn-site.xml

   #注意!!!一下master0需要替换成,自己设置的主节点的名字。

 

     配置文件1:hadoop-env.sh

export Java_HOME=/usr/lib/jdk/jdk1.8.0_201

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.0

export PATH=$PATH:/usr/local/hadoop/hadoop-2.9.0/bin

 

 配置文件2:core-site.xml

<configuration>

   <property>

#注意!!!这里的master0需要替换成,自己设置的主节点的名字。

        <name>fs.default.name</name>
        <value>hdfs://master0:8020</value>

    </property>
    
<property>
        
<name>io.file.buffer.size</name>

        <value>131072</value>

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/home/hadoop/tmp</value>

    </property>

    <property>

        <name>hadoop.proxyuser.hadoop.hosts</name>

        <value>*</value>

    </property>

    <property>

        <name>hadoop.proxyuser.hadoop.group</name>

        <value>*</value>

    </property>

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

</configuration>

 

配置文件3:hdfs-site.xml

<configuration>

    <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>master0:9000</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/home/hadoop/dfs/name</value>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/home/hadoop/dfs/data</value>

    </property>

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

</configuration>

 

配置文件4:mapred-site.xml

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

    <property>

        <name>mapred.job.tracker</name>

        <value>master0:9001</value>

    </property>

    <property>

        <name>mapred.job.tracker.http.address</name>

        <value>master0:50030</value>

    </property>

    <property>

        <name>mapreduce.jobhistory.address</name>

        <value>master0:10020</value>

    </property>

    <property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>master0:19888</value>

    </property>

</configuration>

 

配置文件5:yarn-site.xml

<configuration>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>master0:8032</value>

    </property>

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>master0:8030</value>

    </property>

    <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>master0:8031</value>

    </property>

    <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>maste0r:8033</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>maste0r:8088</value>

    </property>

</configuration>

注意!如果是master节点需要添加多一个slaves文件指定slave

配置文件6:slaves (选)

 slave1 192.168.56.131

slave2 192.168.56.133 

最后通过scp命令将配置文件传到每一个节点上。

scp -r /usr/local/hadoop/hadoop-2.9.0/etc/hadoop root@slave*:/usr/local/hadoop/hadoop-2.9.0/etc/hadoop

slave*表示其它节点,以上命令的意思是,将/usr/local/hadoop/hadoop-2.9.0/etc/hadoop 目录下的全部文件传到,slve*的/usr/local/hadoop/hadoop-2.9.0/etc/hadoop中。

 

5)测试hadoop运行情况

文件配置完成后,打开终端窗口,输入

hadoop namenode -format

 

若结果如下,没有JAVA报错,即说明hadoop namenode节点初始化成功。

 

打开终端利用cd命令进入hadoop启动命令文件如下:

cd /usr/local/hadoop/hadoop-2.7.3/sbin

键入如下命令启动hadoop集群。

./start-all.sh

终端出现如下结果,说明集群启动成功

通过jps查看节点启动情况。

 

参考:

[1]
作者:NullSpider
链接:https://juejin.im/post/5a17d24d6fb9a0452577cdfb
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

[2]

作者:KayleZhuang

链接:https://blog.csdn.net/seiulaomi/article/details/64920287

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值