hadoop 2.7.3在ubantu Linux下的集群(3台机)

来源:互联网 发布:网络购彩 恢复了吗 编辑:程序博客网 时间:2024/06/07 06:40

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

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 ressourcemanagerslave1192.168.10.185jdk1.7.0_79、hadoop 2.3.7datanode secondnamenodeslave2192.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_79export PATH=$JAVA_HOME/bin:$PATHexport 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 ~/.sshssh-keygen -t rsa
  • 1
  • 2
  • 1
  • 2

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

这里写图片描述

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

ssh-copy-id 192.168.10.184ssh-copy-id  192.168.10.185ssh-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.185192.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个节点。








0 0
原创粉丝点击