Hadoop集群搭建

        前言:搭建hadoop集群的博文很多,不能总是每次搭建时都花时间搜索一篇适合自己机器、文章简练清晰的教程,笔者也是描述自己搭建Hadoop集群的详细过程,以备日后使用。

一、准备及所需环境

        Centos 6.5(目前大多数生产环境使用的较稳定版本)

        JDK 1.8.x 

        Vmvare Workstation

二、开始搭建

一般分布式集群都有多种搭建模式,Hadoop搭建的四种模式说明 :    

     本地模式:只是用于本地开发调试

    伪分布模式:同一台机器上各个进程上运行Hadoop的各个模块,各个模块是在各个进程上分开运行,但在一台机器。

    完全分布式模式:生产环境采用的模式,Hadoop运行在服务器集群上,企业会做HA,以实现高可用。

    Hadoop HA:HA是指高可用,解决Hadoop单点故障问题。

本地模式和伪分布模式都不适用于新手体验分布式的特点,没有太大意义,HA是企业级操作,遂本文以搭建完全分布式。

三台虚拟机分别为:

master:192.168.163.145

worker1:192.168.163.146

worker2:192.168.163.147

在这之前我们在Vmware中,点击编辑中虚拟机网络配置,查看NAT设置,记住子网IP和子网掩码,以及网关IP,会在配置网络时用到。


1.现在创建第一台虚拟机:


建议安装新建一个安装目录,并把每台虚拟机单独放在一个文件里,类似这样,不然所有虚拟机磁盘文件混在一起,非常乱。


2.安装一路下一步,可能会要求你创建一个用户,这里我们先创建一个hadoop用户,密码自设,完成后打开虚拟机,这时候网络应该是不通的。由于我们选用的是NAT模式,可以共享宿主机的网络,但如果虚拟机网络设置为DHCP的话,IP会有租期,时间一到,DHCP会重新给你分配IP,这样就后期配的所有环境带来很大麻烦,所以我们设置为固定IP。

刚才记住的网关,子网掩码,以及DNS都配置上去, Address填写你自己网段下的没使用过的ip,我这里使用192.168.163.145


配置完成后,可以打开火狐浏览器看是否连上外网,也可命令行ping www.baidu.com


成功,至此网络配置结束。

3.修改Hostname及配置Hosts

    两种方式:

    临时修改hostname: hostname master,这种方式重启就会失效,不建议。


  永久修改:#vim /etc/sysconfig/network


配置 #vim /etc/hosts

 另外两台机器虽然还没有创建,但在这直接配置好。


4.关闭防火墙

查看防火墙状态。

# service iptables status

临时关闭:# service iptables stop   

永久关闭:# chkconfig iptables off(建议),重启生效

禁用掉selinux

# vim /etc/sysconfig/selinux


reboot,查看防火墙状态


5.安装JDK

首先为了大家linux环境下权限以及文件目录的整洁,建议大家以root用户在根目录下创建app目录并将所有权限赋给hadoop用户。


切回hadoop身份,下载好Oracle的jdk 1.8.x版本,传入虚拟机/app下

为了方便下面将开始使用xshell 5 连接 master进行操作


#tar -xzvf jdk1.8.0_141.tar.gz

添加到环境变量 #vim ~/etc/bash_profile

JAVA_HOME=/app/java/jdk1.8.0_141

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

保存退出 # source ~/.bash_profile

查看#java -version

为了方便,给hadoop增加sudo权限

#chmod u+w /etc/sudoers



6.克隆其他两个节点

右键克隆,创建完整克隆,新建文件夹worker1、worker2


打开worker1、worker2

依次改变ip 192.168.163.146、147


由于克隆将第一台机器的mac地址也保留了下来,所以将Auth eth1的mac地址复制到system eth0中的mac地址里,重启网卡

配置Hostname及hosts

worker1 、worker2 方法同上

7.安装Hadoop

在第一台机器上安装,hadoop官网下载hadoop2.7.0,如果下载过慢,可以选择国内的服务器,如清华大学镜像、中国科学技术大学镜像,阿里云,163等。

配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数,不配置hadoop找不到。

$ vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh,配置JAVA_HOME,运行#which hadoop

    

进入hadoop配置文件

配置core-site.xml

<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
</property>
</configuration>

配置hdfs-site.xml

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/hdfs/data</value>
</property>
<property>
       <name>dfs.namenode.checkpoint.dir</name>
       <value>/data/hadoop/hdfs/namesecondary</value>
</property>                        
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.block.size</name>
<value>67108864</value>
</property>
</configuration>

配置yarn-site.xml

<configuration>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property>
    <name>yarn.nodemanager.localizer.address</name>
    <value>0.0.0.0:8040</value>
  </property>
  <property>
    <name>yarn.nodemanager.webapp.address</name>
    <value>0.0.0.0:8042</value>
  </property>
  <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.nodemanager.local-dirs</name>
    <value>/data/hadoop/data/yarn/local</value>
  </property>
  <property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>/data/hadoop/data/yarn/log/userlogs</value>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>256</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>1024</value>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>2</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>1024</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>2</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.resource.mb</name>
      <value>512</value>
        <description>The amount of memory the MR AppMaster needs.</description>
        </property>

</configuration>

配置slaves集群


至此hadoop配置基本完成,接下来要三台机器需要通信,配置ssh

8.配置SSH通信

    首先每一台机器上生成自己的公钥

    $ ssh-keygen -t rsa ,一直回车,全部默认,到当前hadoop用户下的.ssh文件夹里查看


在worker1和worker2分别运行

scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub1

scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub2

然后在master节点上运行

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_rsa.pub1 >> ~/.ssh/authorized_keys

cat ~/.ssh/id_rsa.pub2 >> ~/.ssh/authorized_keys

然后将authorized_keys分发到worker1和worker2

chmod 600 authorized_key

scp ~/.ssh/authorized_keys hadoop@worker1:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys hadoop@worker2:~/.ssh/authorized_keys


至此ssh通信配置完成。


创建hadoop的临时目录,三台机器均做。

$sudo  -p mkdir /data/hadoop

同时给目录的所有者赋给hadoop用户,这部很重要,不然hadoop在格式化创建临时目录时会有权限问题

$sudo chown -R hadoop:hadoop /data

8.启动并验证

$hdfs namenode -format


不能有报错信息,且输出了namenode的临时文件以及一些文件信息。

启动hadoop集群

$ cd $HADOOP_HOME/sbin

你可以使用 $hadoop-daemon.sh start namenode

                  $hadoop-daemon.sh start datanode

或者           $start-dfs.sh

这里有可能会遇到问题


这是因为ssh连接检查出现了问题,也可以忽略不管,也可以$vim /etc/ssh/ssh_config

                                                                                          将GSSAPIAuthentication yes  改为 no

结束进程stop-dfs.sh重新启动

$jps 查看进程




$start-yarn.sh 启动yarn进程,查看进程




你也可以使用已经不建议使用的start-all.sh 和 stop-all.sh 一劳永逸。

至此hadoop集群启动完成,我们可以测试一下hdfs能否使用

$hdfs dfs -mkdir /user/guoyg

$hdfs dfs -ls /

$echo "hadoop,spark,scala,java" >>test

$hdfs dfs -put test.txt /user/guoyg/

$hdfs dfs -ls /user/guoyg


打开浏览器,linux和宿主机都可以,输入master节点的50070端口 :192.168.163.145:50070可看到如下:



查看192.168.163.145:8088应用程序管理界面


运行hadoop自带的exmaple计算圆周率。

$hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3 jar pi 5 5



结果为3.680000000000000000

至此hadoop完全分布式配置完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值