Hadoop3.0通用版集群安装高可靠详细教程【包括零基础】

简介: Hadoop3.0通用版集群安装高可靠详细教程【包括零基础】

hadoop3.0【GA版】集群安装与hadoop2.x集群安装还是有一定区别的。通过比较发现,hadoop3.x中除了yarn中增加的可定义资源【Hadoop3.0: YARN Resource自定义资源配置说明http://www.aboutyun.com/forum.php?mod=viewthread&tid=23626】,其它配置项基本都是相同的。但是在常用配置里面,却有比较大的不同。因为很多如果不配置,在2.x中不会报错,但是在3.x中会出问题。比如:虚拟内存的检测,如果不配置,那么在2.x中一般不会出现问题,但是在3.x则成为常用配置。缺少此配置项yarn.nodemanager.vmem-check-enabled,可能会出现下面问题。

Container  is running beyond virtual memory limits. Current usage: 44.5 MB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory
used. Killing container

所以需要加上

<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

当然解决方法比较多,大家也可以调整其它参数。

这里只是举例,其它的大家可以尝试。为了照顾一些零基础的同学,下面从零开始搭建集群。

首先通过虚拟机安装centos7.不会可参考下面文章

VMware workstation安装linux(ubuntu)配置详解

http://www.aboutyun.com/forum.php?mod=viewthread&tid=6424

centos7下载:

链接: https://pan.baidu.com/s/1eTj2fb8 密码: rmjw

1.网络配置


bfa3ed79e2f9f5db748bbd96ecb2db82.jpg

步骤3弹出内容:

1d59a8072e42bbcd3511a44964135af7.jpg

如上图,我们按照配置即可。对于手动、自动、仅本地,这里选择需要按住鼠标不动,才能选择对应的内容。其中:网关不要使用192.168.1.1,这样可能上不了网。对于虚拟机的网络可参考此篇文章:

虚拟机三种网络模式该如何上网指导

http://www.aboutyun.com/forum.php?mod=viewthread&tid=6700

2.jdk1.8\hadoop环境变量设


安装包:链接: https://pan.baidu.com/s/1pKVVNdx密码: d3s7

配置JDK

在~/.bashrc里面加入JAVA_HOME、JRE_HOME、HADOOP_HOME、PATH、CLASSPATH:

export JAVA_HOME="/usr/hadoop3.0-yarn/jdk1.8"
export HADOOP_HOME="/usr/hadoop-3.0.0"
export JRE_HOME="$JAVA_HOME/jre"
export PATH="$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export CLASSPATH="./:$JAVA_HOME/lib:$JRE_HOME/lib"

生效:

source ~/.bashrc

分发到slave1和slave2上

scp ~/.bashrc aboutyun@slave1:~/
scp ~/.bashrc aboutyun@slave2:~/

执行生效

补充:

source命令的作用就是用来执行一个脚本

更多补充:

#####################################################

补充1:source与./a.sh 不同之处

你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行 echo $KKK ,发现没有值,如果你用source来执行,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同它就是在本shell中执行的,所以可以看到结果

补充2:Linux环境变量配置文件的区别:

(1) /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。

(3) ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。

(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

(6) ~/.bash_profile: 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

摘自:csdn xyqzki

#####################################################

3.配置sudo无密码执行:


1.首先切换到root:

su root

2. sudo chmod a+w /etc/sudoers

3.通过vi命令编辑

4.添加如下内容:

aboutyun ALL=(ALL)       NOPASSWD: ALL

5.恢复权限

sudo chmod a-w /etc/sudoers或则

sudo chmod 440 /etc/sudoers

二者操作是一样的

856f483fcd10dff6e8fea0069cee2580.jpg

补充:

1.sudo解释

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt、reboot、su等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。

2.权限说明

这两个对于初学者很容易混肴,这里ch,其实是change的简写,它们的含义分别是:

chown-》change own改变所有者

chmod-》change mod(mod不知道是否为简写)改变文件权限

一、chown 命令

用途:更改文件的所有者或组。命令由单词change owner组合而成。

使用示例:

1,更改文件的所有者:

chown jim program.c

文件 program.c 的所有者更改为 jim。作为所有者,jim 可以使用 chmod 命令允许或拒绝其他用户访问 program.c。

2,更改目录的所有者:

chown -R john:build /tmp/src

将目录 /tmp/src 中所有文件的所有者和组更改为用户 john 和组 build

- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。

- v 显示chown命令所做的工作。

(eg.chown –R root:root rootfs               将rootfs文件夹及其子录的权限和组均改为root

chown –R liufan:liufan-desktop rootfs      将目录rootfs文件夹及子目录的所有者和组更改为用户liufan和组liufan-desktop )

二、chmod 命令

用途:改变文件或目录的访问权限。

该命令有两种用法:

一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

1,文字设定法

chmod [who] [+ | - | =] [mode] 文件名

命令中各选项的含义为:

操作对象who可是下述字母中的任一个或者它们的组合:

    u 表示“用户(user)”,即文件或目录的所有者。

    g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

    o 表示“其他(others)用户”。

    a 表示“所有(all)用户”。它是系统默认值。

操作符号可以是:

    + 添加某个权限。

    - 取消某个权限。

    = 赋予给定权限并取消其他所有权限(如果有的话)。

设置mode所表示的权限可用下述字母的任意组合:

    r 可读。

    w 可写。

    x 可执行。

    X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

    s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

    t 保存程序的文本到交换设备上。

    u 与文件属主拥有一样的权限。

    g 与和文件属主同组的用户拥有一样的权限。

    o 与其他用户拥有一样的权限。

文件名:以空格分开的要改变权限的文件列表,支持通配符。

在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example

使同组和其他用户对文件 example 有读权限。

2,数字设定法

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。

所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

数字设定法的一般形式为:

chmod [mode] 文件名

3.vi编辑器

vi比较重要的命令.

插入命令:按下a键,或则i

退出命令::q

退出命令:wq

强制退出::!q

查找命令:/+查找内容(按下/键然后输入查找内容)

更多参考

linuxvi编辑器

http://www.aboutyun.com/forum.php?mod=viewthread&tid=6450

4.NTP设置

centos7 ntp默认配置的,master使用默认同步网络服务器即可。

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

对于slave节点则同步master,对于出现的

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

注释掉,然后替换下面内容

server master iburst

验证ntp:

ntpq -p

a07316049520454bf85a76c048215b1b.jpg

关于ntp信息,更多参考

让你真正明白Linux NTP(包括历史、参数解释、安装配置)

http://www.aboutyun.com/forum.php?mod=viewthread&tid=11395

5.防火墙

关闭防火墙

sudo systemctl stop firewalld

开机禁用防火墙

sudo systemctl disable firewalld

关闭SElinux

SELINUX=disable

6.虚拟机克隆

网卡更换mac地址,防止重复:按照下面步骤点击弹出对应对话框,最后点击生成,点击确定。

b86dc03bf77df05e072b9b16706230ed.jpg

克隆后修改内容

master为例

a.修改hostnme

sudo vi /etc/hostname

eb311fee58323e28ba69130b007b680d.png

b.修改hosts

127.0.0.1          localhost.localdomainlocalhost

::1              localhost6.localdomain6localhost6

192.168.1.10 master

192.168.1.20 slave1

192.168.1.30 slave2

c1cc4578b5b9af5431b462ee283bd651.png

slave1slave2配置

相同:hosts配置相同

不同:hostname不同,分别为slave1和slave2

修改ip地址:

操作通上面网络配置部分。

ssh配置

第一步:产生密钥

$ ssh-keygen -t dsa -P ''

第二步:导入authorized_keys

$ cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

其它的同样的内容,最后三个节点id_dsa.pub追加到authorized_keys

然后分发到三个节点。

比如master分发到slave1:

scp ~/.ssh/authorized_keysaboutyun@slave1:~/.ssh

最后三台机器的id_dsa.pub都追加到authorized_keys,这样达到三者彼此相互免密钥登陆

同时注意权限:

~/.ssh需要是700权限

chmod 700 ~/.ssh

authorized_keys需要是644权限

chmod 644 ~/.ssh/authorized_keys

如果权限不对,可能造成ssh无密码失败。

更多ssh可参考

云技术基础:集群搭建SSH的作用及这些命令的含义

http://www.aboutyun.com/forum.php?mod=viewthread&tid=6977

7.指定slave

.$HADOOP_HOME/etc/hadoop/works

6315b9738433fd5e01e80fc2d60488c3.jpg

8.配置文件

/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
    </property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/hadoop3.0/tmp</value>
    </property>
</configuration>

uri: fs.defaultFS

hadoop.tmp.dir:临时路径

创建临时路径:

sudo mkdir -p /usr/hadoop3.0/tmp

注意授权,否则会格式化失败

sudo chown -Raboutyun:aboutyun /usr/hadoop3.0/

etc/hadoop/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
       <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
</property>
       <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
</configuration>

dfs.replication:hadoop副本的数目

dfs.permissions.enabled:如果为true,则在HDFS中启用权限检查。 如果“false”,权限检查被关闭,如果缺少此配置,可能在远程开发中会连接失败。

新的默认的文件块大小,字节。你可以使用后缀k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa)(比如:128k, 512m, 1g等等)或则提供完整的字节大小((比如134217728为128 MB).)

etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.admin.user.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/hadoop-3.0.0</value>
    </property>
</configuration>
<property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/hadoop-3.0.0</value>
    </property>
</configuration>

mapreduce.framework.name:可以为local, classic 或则 yarn.

local表示本地运行,classic表示经典mapreduce框架,yarn表示新的框架。

mapreduce.admin.user.env:如果map和reduce任务访问本地库(压缩等),则必须保留原始值。

当此值为空时,设置执行环境的命令将取决于操作系统:

Linux:LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native.

windows:PATH =%PATH%;%HADOOP_COMMON_HOME%\\bin.

yarn.app.mapreduce.am.env:可以设置AM【AppMaster】端的环境变量

注意:如果上面缺少配置,可能会造成mapreduce失败。

etc/hadoop/yarn-site.xml:

<configuration>
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master </value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
   <value> JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ</value>
    </property>
</configuration>

yarn.resourcemanager.hostname :RM的主机名。

yarn.nodemanager.env-whitelist:容器可能会覆盖的环境变量,而不是使用NodeManager的默认值。

yarn.nodemanager.aux-services :NodeManager上运行的附属服务

9.安装包分发

scp -r /usr/hadoop3.0 aboutyun@slave1:/usr/

scp -r /usr/hadoop3.0 aboutyun@slave2:/usr/

10.格式化nemenode:

hdfs namenode -format

11.启动集群

start-dfs.sh

start-yarn.sh

访问页面:

http://192.168.1.10:8088

16e082200e911b2e2034b1a71e5d993f.jpg

http://192.168.1.10:9870

f05e0bd07d0ecd0d948a7fa44934aa4e.jpg

12.运行wordcount:

对于wordcount需要创建文件,并上传至hdfs,它的运行跟hadoop2.x没有什么区别的。可参考

hadoop2.2使用手册2:如何运行自带wordcount

http://www.aboutyun.com/forum.php?mod=viewthread&tid=7713

做完准备工作,运行命令,并查看结果

hadoop jar /usr/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jarwordcount /data/wordcount /output/wordcount

d9c0cec33ae722cb25ba0d01300f86e6.jpg

查看结果

45e83e09ab4420b1b4bbf20931a79d6b.jpg

13.遇到问题:

产生错误:

Container[pid=31333,containerID=container_1515487818814_0001_01_000004] is runningbeyond virtual memory limits. Current usage: 93.0 MB of 1 GB physical memoryused; 2.5 GB of 2.1 GB virtual memory used. Killing container.

解决办法:

禁用虚拟机内存检测

<property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
   </property>

参考资料:

hadoop3.0集群安装知识1

http://www.aboutyun.com/forum.php?mod=viewthread&tid=23725

Hadoop3.0集群安装知识2

http://www.aboutyun.com/forum.php?mod=viewthread&tid=23732

Hadoop3.0集群安装知识3

http://www.aboutyun.com/forum.php?mod=viewthread&tid=23745

hadoop3.x常用配置与hadoop2.x有哪些不同

http://www.aboutyun.com/forum.php?mod=viewthread&tid=23759

目录
相关文章
|
3月前
|
分布式计算 Hadoop Java
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
本文是一份详细的Hadoop集群搭建指南,基于Hadoop 3.3.4版本和CentOS 8操作系统。文章内容包括虚拟机创建、网络配置、Java与Hadoop环境搭建、克隆虚拟机、SSH免密登录设置、格式化NameNode、启动Hadoop集群以及通过UI界面查看Hadoop运行状态。同时,还提供了常见问题的解决方案。
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
|
4月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(二)
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(二)
|
4月前
|
分布式计算 Ubuntu Hadoop
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(一)
Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)(一)
|
6月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储Hbase高可靠性
【6月更文挑战第2天】
111 2
|
7月前
|
弹性计算 分布式计算 Hadoop
Linux(阿里云)安装Hadoop(详细教程+避坑)
Linux(阿里云)安装Hadoop(详细教程+避坑)
1830 3
|
7月前
|
存储 分布式计算 安全
Hadoop的HDFS的特点高可靠性
【5月更文挑战第11天】Hadoop的HDFS的特点高可靠性
189 1
|
6月前
|
分布式计算 Hadoop 大数据
【大数据】Hadoop下载安装及伪分布式集群搭建教程
【大数据】Hadoop下载安装及伪分布式集群搭建教程
278 0
|
7月前
|
存储 分布式计算 Hadoop
hadoop的高可靠性
【4月更文挑战第13天】Hadoop实现高可靠性主要依靠冗余数据存储(每个数据块有多个副本分存于不同节点)、校验和验证(确保数据完整性)及数据备份与故障恢复机制(自动复制和重新分配任务)。这些机制保证了Hadoop在大规模数据处理中的可靠性与完整性。
145 1
|
7月前
|
分布式计算 Hadoop Docker
百度搜索:蓝易云【Docker搭建Hadoop集群教程。】
这只是一个简单的示例教程,用于在Docker中搭建Hadoop集群。实际上,搭建和配置一个完整的Hadoop集群涉及到更多的步骤和详细的配置。你可以通过进一步研究Hadoop文档和参考资料来了解更多关于Hadoop集群的配置和管理的内容。
100 6
百度搜索:蓝易云【Docker搭建Hadoop集群教程。】
|
7月前
|
分布式计算 Hadoop 关系型数据库
使用Sqoop将数据导入Hadoop的详细教程
使用Sqoop将数据导入Hadoop的详细教程