前言

本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功。需要注意的是本文限于篇幅和时间的限制,也是为了突出重点,一些很基础的操作就不再详细介绍,如果是完全不懂linux,建议先看一下Linux的基础教程,再来进行hadoop配置。同时建议,hadoop安装版本不宜很高。第一次写这么长的博客,希望对大家有所帮助,如果有帮到你,可以在评论区夸夸我哦。哈哈。(原文是在word里编辑的,虽然排版不好看,但是图片都很清晰,重要代码也有背景标注,但是上传到博客里就只剩文字了,图片我一个个复制上去,图片压缩的有些模糊,大家谅解一下)

1 安装linux

篇幅限制,不再介绍,网上很多教程。

2添加一个用户

useradd hduser

passwd *****

2配置用户具有root权限

(1)查看并修改sudoers的文件权限:

首先在root用户下修改 /etc/sudoers 文件权限,将 只读 改为 可以修改

修改权限命令   chmod 777 /etc/sudoers

修改前:

修改后:

(2)修改sudoers配置文件

命令 vim /etc/sudoers

添加 haduer权限信息

(3)将sudosers访问权限恢复440

命令 chmod 440 /etc/sudoers

3创建文件夹module、software

(1)将账户切换为新建用户hduser ,并在/opt目录下创建文件夹module、software文件夹

module文件夹用于存放解压后的文件,software文件夹用于存放原始的压缩文件

命令 su hduser

sudo mkdir module

sudo mkdir software

(2)创建后修改module、software文件夹的所有者为hduser

修改文件或文件夹所有者命令 sudo chown hduser:hduser module/ software/

原有的rh空文件夹可以删掉(也可以不删)

命令 sudo rm -rf rh

4安装JDK

(1)删除原有openJDK(如果有的话)

查询命令 rpm -qa | grep java

卸载命令 sudo rpm -e 软件名称

(我这个机器没发现openJDK就不展示了,但是大多数的linux默认都存在openJDK,需要卸载后再安装Oracle的JDK)

(2)安装JDK

JDK安装有两种方式,一种直接yum安装,方便快捷,前提是连着网。

首先执行查看可安装jdk版本的命令 yum -y list java*

然后选择自己需要的jdk版本进行安装,比如安装JDK1.8,输入命令

yum install -y java-1.8.0-openjdk-devel.x86_64

然后等待安装完成即可,输入java -version查看安装完成后的jdk版本

这个jdk安装目录可以在 usr/lib/jvm下找到

第二种就是手动安装了,也是本文采用的方法

首先在Oracle官网下载jdk,注意下载linux版本,我使用的是jdk-8u144-linux-x64.tar.gz

将jdk复制到Linux中,并将其移动到/opt/software目录下

移动命令sudo mv “当前jdk压缩包的路径” /opt/software

解压到/opt/module目录下

解压命令tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

解压完成后配置jdk环境变量

命令sudo vim /etc/profile

在文件尾部追加jdk路径,并保存

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

生效配置文件命令 source /etc/profile

输入java -version查看是否成功

5安装hadoop

从官网下载Hadoophttps://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/

然后的安装步骤和安装jdk步骤基本一样。

将hadoop-2.7.2.tar.gz复制到Linux中,并移动到/opt/softwate目录下

移动命令sudo mv /hadoop-2.7.2.tar.gz  /opt/software/

解压到/opt/module命令 tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

配置hadoop环境变量 sudo vim /etc/profile

在文件末尾添加

##HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

保存退出后,生效配置文件 source /etc/profile

验证是否成功 hadoop version

6修改主机静态IP

(1)命令 vim /etc/udev/rules.d/70-persistent-net.rules

复制本机的物理IP地址00:0c:29:8f:28:40

(2)命令sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0    (etho为本机的名字,可以修改,上面的截图最后一个就是这个名字)

将HDADDR的IP改为之前复制的那个IP(如果没这个HDADDR项,那就跳过,不用改了)

将BOOTPROTO项改为static静态获取,将ONBOOT改为yes,那么开机自动生效

添加IPADDR项并设置为192.168.115.161(当然你完全可以设置为其他的静态IP)

添加GATEWAY项并设置为192.168.115.2(这个为网关,根据你的IP设置相应的网关,前三个如:192.168.115和设置的IP前三个要一样,最后一位一般都设为2)

添加DNS1并设置为

7修改主机名称

命令 sudo vim /etc/sysconfig/network

为hadoop201  (你也可以设为其他名字)

保存后,可以输入hostname查看本机的主机名(hostname在重启后生效,当然也有其他生效方式,reboot重启最简单)

 

8配置hosts文件

配置hosts文件,方便以后的集群操作

输入命令 sudo vim /etc/hosts

在文件末尾追加

192.168.115.161 hadoop201

(集群最少要有三个节点,我就顺便把要装的其他的节点也加上了)

9关闭防火墙

关闭防火墙,方便远程操控(不同版本命令有所不同,可以上网百度一下, centos6和centos7命令有些区别)

关闭防火墙命令:systemctl stop firewalld.service

关闭开机启动:systemctl disable firewalld

执行完以上8步骤后可以reboot重启一下,这样基础的准备工作就完成了。

如果使用的是虚拟机的话,就将配置好的一个虚拟机完全克隆一下,克隆2个新节点,克隆完成后只需要修改新节点的静态IP和修改hostname名就行了(使用克隆节点修改静态IP时,注意vim /etc/udev/rules.d/70-persistent-net.rules编辑时要删掉多余的之前的IP设置,并将文件末尾NAME=”eth1”这样的名字改为NAME=”eth0”)

如果是真实主机的话,就重复上述8个步骤,再新建两个节点

有三个节点后,下面开始进行集群配置

10配置集群

建议使用root账号登录

首先在第一台机器上配置

(1)配置hadoop-env.sh

首先进入/opt/module/hadoop-2.7.2目录下  cd /opt/module/hadoop-2.7.2

修改JAVA_HOME路径

命令  vim etc/hadoop/hadoop-env.sh

(2)配置core-site.xml

命令与上面相似vim etc/hadoop/core-site.xml

<!-- 指定HDFS中NameNode的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop101:9000</value>

</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->

<property>

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

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

(3)配置hdfs.site.xml

<!-- 指定HDFS副本的数量 -->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

上述配置在第一台机器上完成后,其他机器暂时不用管

11 SSH无密登录配置

(1)生成公钥私钥

在第一台机器上使用 hduser账号登录

修改配置vim /etc/ssh/sshd_config

找到以下三行,去除注释保存

#RSAAuthentication yes

#PubkeyAuthentication yes

#PermitRootLogin yes

然后在任意目录下输入命令 ssh-keygen -t rsa

回车3次,生成公钥和私钥

(2)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop201

ssh-copy-id hadoop202

ssh-copy-id hadoop203

(分发密钥过程中需要输入yes和对应目标机器的密码)

hadoop201刚刚使用的是hduser账号生成和分发的密钥,切换账号为root再进行一次生成密钥和分发密钥

同样在即将配置为yarn节点的hadoop202主机采用hduser账号配置无密登录到hadoop201、hadoop202、hadoop203节点

以上操作是为了后续集群群起做铺垫

(3)编写xsync脚本(用于文件同步)

hadoop201上,在在/home/atguigu目录下创建bin目录,并在bin目录下xsync创建文件,

文件内容如下:

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi

#2 获取文件名称

p1=$1

fname=`basename $p1`

echo fname=$fname

#3 获取上级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

#4 获取当前用户名称

user=`whoami`

#5 循环

for((host=201; host<204; host++)); do

echo ------------------- hadoop$host --------------

rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

done

然后修改脚本 xsync 具有执行权限    命令  chmod 777 xsync

12同步文件

首先将xsync脚本文件分发到其他节点

命令 xsync /home/hduser/bin

注意:如果将xsync放到/home/atguigu/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。

(1)在hadoop201上操作,将hosts文件分发给其他节点(如果是虚拟机克隆的话,hosts里面有节点信息就不用分发了)

xsync /etc/hosts

(2)配置slaves

首先进入目录 cd /opt/module/hadoop-2.7.2/  下

命令 vim etc/hadoop/slaves

在文件中增加下列内容

hadoop102

hadoop103

hadoop104

(注意:slaves文件内不允许有空格,如果有的话会导致一些节点群起失败)

(注意2:配置slaves文件的前提是hosts文件已经有了这些节点的信息)

分发slaves配置文件 xsync etc/hadoop/slaves

13集群配置

还是在hadoop201上操作,然后把文件分发给其他节点,以减少工作量

(1)集群部署规划

Hadoop201

Hadoop202

Hadoop203

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

(2)配置集群

首先 cd /opt/module/hadoop-2.7.2/  进入hadoop安装目录下

配置core-site.xml

命令 vim etc/hadoop/core-site.xml

在文件中编写如下配置

<!-- 指定HDFS中NameNode的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop201:9000</value>

</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->

<property>

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

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

配置hadoop-env.sh

命令 vim etc/hadoop/hadoop-env.sh

修改JAVA_HONE路径 export JAVA_HOME=/opt/module/jdk1.8.0_144  (较详细操作看第10小节)

配置hdfs-site.xml

命令 vim etc/hadoop/hdfs-site.xml

在文件中编写如下配置

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->

<property>

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

<value>hadoop203:50070</value>

</property>

配置yarn-env.sh

命令vim etc/hadoop/yarn-env.sh

修改JAVA_HOME目录(去掉注释修改目录)

export JAVA_HOME=/opt/module/jdk1.8.0_144 (详情参考第10小节)

配置yarn-site.xml

命令vim etc/hadoop/yarn-site.xml

在文件中增加下列配置

<!-- Reducer获取数据的方式 -->

<property>

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

<value>mapreduce_shuffle</value>

</property>

<!-- 指定YARN的ResourceManager的地址 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop202</value>

</property>

配置mapred-env.sh

(参考第10小节)

配置mapred-site.xml

首先修改文件名称 cp etc/hadoop/mapred-site.xml.template  etc/hadoop/mapred-site.xml

再进行配置命令vim etc/hadoop/mapred-site.xml

在文件中加入下列配置

<!-- 指定MR运行在Yarn上 -->

<property>

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

<value>yarn</value>

</property>

(3)集群文件配置好后分发配置文件

命令xsync /opt/module/hadoop-2.7.2/

14集群群起

终于来到了激动人心的环节,集群群起(也就是一下启动整个集群)

(1)如果集群是第一次启动,需要格式化namenode (在格式化前,一定要停止上次启动的所有namenode和datanode进程,然后再删除hadoop安装目录下的data和log数据)

格式化命令 bin/hdfs namenode -format

每个节点都格式化一遍

(注意不要随便格式化集群哦)

(2)启动HDFS

在hadoop201上群起HDFS

群起命令 sbin/start-dfs.sh

查看当前节点启动的项目

命令 jps

然后在hadoop202上启动yarn

群起命令 sbin/start-yarn.sh

集群完全启动后各节点的状态如下

这样整个集群就成功启动了

如果要停止集群

在hadoop201上停止集群的hdfs命令 sbin/stop-dfs.sh

在hadoop202上停止集群yarn命令 sbin/stop-yarn.sh

15浏览器查看集群状态

(前提浏览器那个主机的hosts有这些节点的信息,不然就老老实实输入ip地址,如:把hadoop201替换为192.168.115.161)

在浏览器中输入http://hadoop201:50070查看namenode状态

输入http://hadoop201:50075查看namenode状态

输入http://hadoop203:50075查看secondarynamenode状态

后续:

hadoop集群搭建完后,真正生产环境中还需要同步集群时间,操作集群时一般都是通过远程终端(如xshell、SecureCRT等终端软件ssh登录)操控,这些大家可以查看一下相关博客,还是比较简单的。

如果要转载的话,大家注明一下转载链接即可。

大数据学习之旅2——从零开始搭hadoop完全分布式集群的更多相关文章

  1. hadoop学习笔记(六):hadoop全分布式集群的环境搭建

    本文原创,如需转载,请注明作者以及原文链接! 一.前期准备: 1.jdk安装        不要用centos7自带的openJDK2.hostname    配置       配置位置:/etc/s ...

  2. 大数据学习笔记03-HDFS-HDFS组件介绍及Java访问HDFS集群

    HDFS组件概述 NameNode 存储数据节点信息及元文件,即:分成了多少数据块,每一个数据块存储在哪一个DataNode中,每一个数据块备份到哪些DataNode中 这个集群有哪些DataNode ...

  3. 新闻网大数据实时分析可视化系统项目——3、Hadoop2.X分布式集群部署

    (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 1.基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 2.基于 ...

  4. hadoop学习第二天-了解HDFS的基本概念&&分布式集群的搭建&&HDFS基本命令的使用

    一.HDFS的相关基本概念 1.数据块 1.在HDFS中,文件诶切分成固定大小的数据块,默认大小为64MB(hadoop2.x以后是128M),也可以自己配置. 2.为何数据块如此大,因为数据传输时间 ...

  5. hadoop学习笔记(五)hadoop伪分布式集群的搭建

    本文原创,如需转载,请注明作者和原文链接 1.集群搭建的前期准备   见      搭建分布式hadoop环境的前期准备---需要检查的几个点 2.解压tar.gz包 [root@node01 ~]# ...

  6. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  7. hadoop学习之hadoop完全分布式集群安装

    注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...

  8. hadoop学习通过虚拟机安装hadoop完全分布式集群

    要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个had ...

  9. Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建

    hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...

随机推荐

  1. docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)

    本篇基于centos7服务器进行部署开发 一.拉取redis镜像,使用如下命令 docker pull redis 1.查看镜像是否拉取成功,使用如下命令 docker images 显示如下则证明拉 ...

  2. NetCore + Mysql CodeFirst 生成数据库

    首先定义领域的模型类,然后配置下面的一些东西,最后执行类 1. 新建Context 继承自 DbContext public class EFProjectContext : DbContext { ...

  3. 利用jenkins实现自动构建、部署,提升团队开发效率

    一大早就被群里的同学刷银川下雪的消息,看着我都发冷,突觉一阵凉风裹身,是不是该考虑秋裤了. 偏离主题,正文走起...... 使用jenkins目标:利用其结合maven完成自动构建,并部署到tomca ...

  4. Java设计模式学习笔记(四) 抽象工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...

  5. Java学习笔记之---集合

    Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...

  6. LINUX安装源码软件经典三部曲

    这几天一直在搞suse下的mplyaer.ffmpeg等源码编译安装,总结出源码软件安装三部曲,网上称为经典三部曲. 这三步分别为: 1. ./configure [options] 2. make ...

  7. 快速掌握mongoDB(二)——聚合管道和MapReduce

    上一节简单介绍了一下mongoDB的增删改查操作,这一节将介绍其聚合操作.我们在使用mysql.sqlserver时经常会用到一些聚合函数,如sum/avg/max/min/count等,mongoD ...

  8. Windows OS添加USB3.0驱动!

    原因:现在的win7.win2008等一些早期的系统在安装时无法使USB鼠标和键盘... 1.  素材(dism64工具.UltraISO工具.U盘一个) 2.  先使用UltrISO工具制作一个wi ...

  9. HTML表单部分学习笔记

    第一部分: <!-- action :指定处理提交表单的格式 method :指定提交表单的http方法 enctype:指明用来把表单提交给服务器时的互联网媒体形式 --> <fo ...

  10. ElasticSearch7.2安装

    1.环境 Java -version:java11 centos: 7.2 elasticsearch: 7.2 2.获取压缩包 wget https://artifacts.elastic.co/d ...