hadoop 在 Linux下的安装配置与集群配置(3台机)

 

 

注:本文的主要目的是为了记录自己的学习过程,方便与大家做交流。转载请注明出处

http://blog.csdn.net/kokjuis/article/details/59523427

 

最近在搭建文件系统,用的是hadoop2.7.3,在Linux下做了集群。在这里做个记录,方便自己以后查看,同时希望对大家有一些帮助。

 

先介绍一下我目前使用的集群环境。我这里用的是虚拟环境。先介绍下硬件条件和系统环境吧。

CPU:Inter Core I7-6700    3.4Ghz  四核心八线程

内存 :16G

硬盘 :128G ssd+1T hdd

系统 :win10 

总的来说,我现在这台机子的性能是相当不错的。运行3个虚拟机还是很轻松的。

 

一、安装hadoop之前准备的条件:

1、安装虚拟机环境

因为我这里是用虚拟机模拟集群环境的,所以要安装个虚拟机。我这里用的是 Oracle VM VirtualBox。你也可以用Vmware WorkStation,我用VirtualBox相对体积小巧,更加简易一点,Vmware WorkStation功能丰富点,不过都没有问题的,都能满足需要。至于怎么安装就不多说了,跟普通软件一样,直接下载下来安装就可以了。

 

2、在虚拟机上安装Linux系统。

hadoop一般是运行在Linux平台之上的,也可以运行在windows下,但是在linux上实施比较稳定,不易出错,在windows安装hadoop集群会相对麻烦一些。我这里用虚拟机安装的系统是 ubantu 16.04 LTS ,ubantu的桌面操作舒服一些,你可以用centos, redhat, fedora这些版本的Linux系统,都没有问题的。这里就简单说一下怎么安装,具体也可以百度上搜一下,有很多。安装过程很简单。需要照这步骤创建3个虚拟系统

 

点新建

 

会弹出一个选项,选择Linux系统 ubantu 64位,自己先下载好64位版本的ubantu安装包。内存可以自己设置,内存多的可以设置大一点,少的可以设置小一点,这个以后也可以改的。然后选择现在创建虚拟硬盘。

 

选择虚拟硬盘放在哪个路径,分配大小,这里的虚拟硬盘就是你虚拟系统里面的硬盘大小,然后选VDI类型,固定大小,点创建。

 

 

创建完以后就会出来一个虚拟机了,此时还没有系统,还需要为虚拟机安装Ubantu系统。

 

先做一些设置,其实也不用怎么设置了,主要把显存放到最大,这样流畅一点,最后是添加一个IDE光驱,选择下载好的ubantu系统文件安装就可以了。很简单。

 

这里需要注意的是要把网络连接方式设置成桥接网卡,这样是最接近真实网络环境的,如果用NAT的话,是无法做到集群的。因为NAT网络只能访问外部,外部不能访问虚拟机,所以不行。

 

 

 

二、集群规划

主机名ip安装的软件进程
master192.168.10.184jdk1.7.0_79、hadoop 2.3.7namenode ressourcemanager
slave1192.168.10.185jdk1.7.0_79、hadoop 2.3.7datanode secondnamenode
slave2192.168.10.186jdk1.7.0_79、hadoop 2.3.7datanade

1、配置ubantu网络。

先将ubantu网络设置成静态IP。

 

 

2、取消dash。

在终端输入命令:sudo dpkg-reconfigure dash    在选择项中选No。

因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,如果不关闭。启动时hadoop时会报“Syntax error: “(” unexpected”错误。

 

 

3、修改/etc/hosts 文件

终端输入命令  sudo gedit /etc/hosts

配置好各个节点的信息,前面是节点的ip。后面是节点的名称,名称就是你的主机名称。

 

 

注意:每个节点都做上面的步骤。

 

 

三、安装JDK

下载jdk1.7.0_79。其他版本也没有问题。然后解压到 /opt/  目录下。配置好环境变量

 

 

 

# 修改配置文件,在终端输入 sudo gedit /etc/profile
# 在最后下添加
export JAVA_HOME=/opt/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

# 刷新配置文件source /etc/profile


注意:JDK每个节点都要安装。

 

 

 

 

 

四、建立hadoop运行帐号

即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:

 

 

sudo groupadd hadoop    //设置hadoop用户组
sudo useradd –s /bin/bash –d /home/had –m had –g hadoop –G admin   //添加一个had用户,此用户属于hadoop用户组,且具有admin权限。
sudo passwd 123456 //设置用户had登录密码
su had//切换到had用户中

 

 

 

如果没有 admin组,可以自己添加一个   sudo groupadd admin

 

上述3个虚机结点均需要进行以上步骤来完成hadoop运行帐号的建立。

 

五、配置ssh免密码登录

 

 

1、注意将防火墙关掉:

#关闭防火墙
sudo systemctl stop firewalld.service
#关闭开机启动
sudo systemctl disable firewalld.service
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2、免密码登录:

 

SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数

据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。

 

cd ~/.ssh
ssh-keygen -t rsa

 

  • 1
  • 2
  • 1
  • 2

这里上个回车就ok,会在当前目录生成两个文件,一个公钥一个私钥

这里写图片描述

将公钥拷贝到其它机器上,实现免密码登录

ssh-copy-id 192.168.10.184
ssh-copy-id  192.168.10.185
ssh-copy-id  192.168.10.186
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

这样会在slave1 的~/.ssh/目录下生成一个authorized_keys 就可以实现master免登录到slave1,如下:

ssh 192.168.10.185

在单机结点上用ssh进行登录,看能否登录成功。能登录成功后注销退出,过程如下:

 

 

如果出现 ssh: connect to host localhost port 22: Connection refused 这个问题,解决方法如下:

 

错误原因:
1.sshd 未安装
2.sshd 未启动

3.防火墙

4需重新启动ssh 服务

 
解决方法:
1.确定安装sshd:  

 

[html]  view plain  copy
 
  1. $ sudo apt-get install openssh-server    

2.启动sshd: 

 

 

[html]  view plain  copy
 
  1. $ sudo net start sshd    

3.检查防火墙设置,关闭防火墙:

 

 

[html]  view plain  copy
 
  1. $ sudo ufw disable     

检验方法:
输入命令:

 

 

[html]  view plain  copy
 
  1. $ ssh localhost    

 

若成功,则表示安装成功,且连接通过;

 

六、安装hadoop:

 

 

1、解压下载好的hadoop安装包到  /home/had/  目录下

 

 

2、修改配置文件,这些配置文件全部位于 /home/had/hadoop-2.7.3/etc/hadoop 文件夹下:

 

 

hadoop-env.sh

这里写图片描述

core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.10.184:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/had/hadoop-2.7.3/tmp</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

hdfs-site.xml

<configuration>

    <!-- 设置namenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>192.168.10.184:50070</value>
    </property>

    <!-- 设置secondarynamenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>192.168.10.185:50090</value>
    </property>

    <!-- 设置namenode存放的路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/had/hadoop-2.7.3/data/namenode</value>
    </property>

    <!-- 设置hdfs副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 设置datanode存放的路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/had/hadoop-2.7.3/data/datanode</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

mapred-site.xml 
必须先创建mapred-site.xml,因为目录下并没有mapred-site.xml ,手动创建也可以,用下面的命令也可以。

mv mapred-site.xml.template mapred-site.xml
  • 1
  • 1
<configuration>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

yarn-site.xml

<configuration>
    <!-- 设置 resourcemanager 在哪个节点-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <!-- reducer取数据的方式是mapreduce_shuffle -->
    <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>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

masters 
新建一个masters的文件,这里指定的是secondary namenode 的主机

192.168.10.185
  • 1
  • 1

slaves

192.168.10.185
192.168.10.186

2、第一次得格式化

./bin/hdfs namenode -format

 

3、然后复制hadoop到其他主机

scp -r hadoop-2.7.3 192.168.10.185:~

scp -r hadoop-2.7.3192.168.10.186:~

通过上面的命令,其他节点也都安装好了hadoop。不用每个节点都手动安装

 

七、启动hadoop

 

1、启动dfs

./sbin/start-dfs.sh
  • 1
  • 1

2、启动yarn

 

./sbin/start-yarn.sh


3、查看

 

在终端输入命令 jps  查看进程。

 

master

这里写图片描述

slave1

这里写图片描述

slave2

这里写图片描述

4、通过浏览器测试hdfs:

192.168.10.184:50070
  • 1
  • 1

这里写图片描述

注意这里有数据才是成功。

5、通过浏览器测试yarn:

192.168.10.184:8088
  • 1
  • 1

这里写图片描述

可以看到一切正常。2个节点。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值