一、CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式)

前言

官方镜像下载地址: CentoshadoopJava
Centos为CentOS-7-x86_64-DVD-2009
Hadoop为hadoop-3.3.1.tar.gz
Java为jdk-8u301-linux-x64.tar.gz
PS:Hadoop3.X Java最低版本为1.8
纯原生态安装,非CDH和HDP,或是Ambari

预先设置

修改主机名

修改 /etc/sysconfig/network中的hostname

vi /etc/sysconfig/network中的hostname

或者这样

hostnamectl set-hostname Hadoop
#secureCRT 中ctrl+D

修改/etc/hosts文件

vi /etc/hosts

vi /etc/hosts
# 这里我除了修改127.0.0.1里的localhost.localdomain,还把其它服务器的ip和对应名称添加进来
127.0.0.1   localhost hadoop1 localhost4 localhost4.localdomain4
::1         localhost hadoop1 localhost6 localhost6.localdomain6
192.168.100.10 hadoop1
192.168.100.20 hadoop2
192.168.100.30 hadoop3

重启服务器

关闭防火墙

# 关闭
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld

创建hadoop用户

# 创建用户并使用 /bin/bash 作为shell
$ useradd -m hadoop -s /bin/bash

# 给hadoop用户设置密码,若提示密码无效,不用管,接着输入一次即可
$ passwd hadoop

# 给hadoop增加执行权限
$ visudo
#98行  输入 :98 跳转至98行,增加一行 hadoop  ALL=(ALL) ALL
$ root ALL=(ALL) ALL
$ hadoop ALL=(ALL) ALL

SSH安装免密登陆

单机免密登陆——linux配置ssh免密登录

检查是否安装SSH

systemctl status sshd

已安装会显示ssh服务的状态(actving),否则,执行下面命令安装

# -y表示全部同意,不用每次都按y
yum install openssh-clients -y
yum install openssh-server -y

测试是否可用

#按提示确认连接后,输入当前用户密码即可,初始没有密码会提示创建密码
ssh localhost

设置无密码登录

#~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表 “/home/hadoop/”
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys  # 加入授权
chmod 600 ./authorized_keys    # 修改文件权限

此时再用 ssh localhost 命令,无需输入密码就可登陆

linux环境配置Java变量

查找当前是否有java安装目录
如果有则卸除自带的Java环境

[root@localhost ~]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
[root@localhost ~]# which java
/usr/bin/java
[root@localhost ~]# ls -lrt /usr/bin/java 
lrwxrwxrwx. 1 root root 22 Aug  6  2020 /usr/bin/java -> /etc/alternatives/java
[root@localhost ~]# ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Aug  6  2020 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre/bin/java

额外知识
安装目录在 /usr/lib/jvm
1.通过rpm等方式安装的jdk,我们在 profile 文件里是没有看到环境变量配置的。我们调用java命令时可以正常执行,是他们是严格安装linux对环境变量的路径要求进行安装,并将相关命令链接到 /usr/bin 目录下,当我们在任意位置执行时,系统都会到 /usr/bin 下来执行。

/usr/bin 可执行的命令安装目录
/usr/lib 程序所使用的库函数保存位置
/usr/share/doc 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

使用 yum install java-1.8.0-openjdkl.x86_64 默认是只有jre的,jps,jstat等命令是不存在的,这个时候还需要安装开发包,找到后缀是devel的,执行 yum install java-1.8.0-openjdk-devel.x86_64 即可。
再加个 卸载java

rpm -qa | grep jdk
# 会出来一个类似下面这个的
copy-jdk-configs-3.3-10.el7_5.noarch

# 执行卸载
yum -y remove copy-jdk-configs-3.3-10.el7_5.noarch

如果没有Java环境,则

配置Java环境变量

一种是全局,修改 /etc/profile 文件,
一种是当前角色,修改 ~/.bash_profile 文件。

在文件中增加下面内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

保存退出后,执行 source /etc/profile(如果是当前角色,刷新对应的bash_profile) 刷新环境变量

安装Hadoop-3.3.0.tar.gz

上传至服务器,或者从服务器中下载
找个目录解压,比如/opt下

# -C 是指定解压目录
tar -zxvf hadoop-3.3.0.tar.gz -C /opt

解压完检查hadoop是否可用

#切换到hadoop的安装目录执行, 成功则显示版本信息
$ cd /opt/hadoop-3.3.0
$ ./bin/hadoop version

这里我们可以将hadoop也加入环境变量,就不需要每次到bin目录下执行

# 编辑profile文件
vi /etc/profile
# 增加hadoop环境变量
export HADOOP_HOME=/opt/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 保存后刷新下环境变量
source /etc/profile

运行

单机非分布式

主要用来调试时使用。
Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
这里 我们试验的是 grep .

$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/*

伪分布式

1.修改配置文件

Hadoop 的配置文件位于 安装目录下 /etc/hadoop/ 中

[root@hadoop1 hadoop]# pwd
/opt/hadoop-3.3.0/etc/hadoop

伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml

#修改配置文件hadoop-env.sh

 # set to the root of your Java installation
export JAVA_HOME=/usr/local/java/jdk1.8.0_301

#修改配置文件 core-site.xml
<configuration>
	<!--指定Hadoop运行时产生文件的存储目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/tmp</value>
    </property>
    <!--指定HDFS中NameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop2:9000</value>
    </property>
</configuration>

#修改配置文件 hdfs-site.xml, 
#搭建集群后,hadoop本身自带了一个webUI访问页面
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
2.格式化NameNode
./bin/hdfs namenode -format
3.开启 NaneNode 和 DataNode 进程
./sbin/start-dfs.sh

#启动完成后,可以通过命令 jps 来判断是否成功启动
[hadoop@localhost hadoop-3.3.0]$ jps
32081 NameNode
32561 Jps
32234 DataNode

#停止
./sbin/stop-dfs.sh

如果出现
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
解决方法:
方法一、
在Hadoop安装目录下找到sbin文件夹
在里面修改四个文件

1、对于start-dfs.sh和stop-dfs.sh文件,添加下列参数:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2、对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

然后重新启动
建议第二种(推荐,实用)

cd /opt/hadoop-3.3.0/etc/hadoop
vim /hadoop-env.sh
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

日志文件输出在 安装目录下的logs文件夹中。
可以访问web页面,前面配置过的 http://localhost:9870/

4. 操作集群
  1. 在HDFS系统上创建一个input文件夹
./bin/hdfs dfs -mkdir -p /user/test/input
  1. 将测试文件内容上传到文件系统上
./bin/hdfs dfs -put input/core-site.xml  /user/test/input/
  1. 查看上传的文件是否正确
./bin/hdfs dfs -ls /user/test/input/

./bin/hdfs dfs -cat /user/test/input/core-site.xml

  1. 运行mapReduce程序
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /user/test/input/core-site.xml /user/test/output/

./bin/hdfs dfs -cat /user/test/output/*

在浏览器中查看:在这里插入图片描述

5. 启动yarn(伪分布式也可以不启动)

上述通过 ./sbin/start-dfs.sh 启动 Hadoop,是启动 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

  1. 修改配置文件 mapred-site.xml:
#修改内容如下
<configuration>
		<!--指定MR运行在YARN上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>
  1. 修改配置文件 yarn-site.xml:
<configuration>
		<!--Reducer获取数据的方式-->
    <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_MAPRED_HOME</value>
    </property>
</configuration>

PS:这里不需要配置resourceManagerName.hostname。
3. 启动 YARN
启动前必须保证NameNode和DataNode已经启动:

# 启动YARN
./sbin/start-yarn.sh    

# 停止
./sbin/stop-yarn.sh

这里可以访问 ResourceManager - http://localhost:8088/
4. 开启历史服务器
在Web中查看任务运行情况 - http://localhost:19888/

mapred --daemon start historyserver

关闭

./sbin/stop-all.sh
# 历史进程要单独关闭
mapred --daemon stop historyserver
6.运行测试实例
  $ bin/hdfs dfs -mkdir /user
  $ bin/hdfs dfs -mkdir /user/input
  # 将配置文件作为输入文件
  $ bin/hdfs dfs -put etc/hadoop/*.xml /user/input   
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /user/input/core-site.xml /user/output/

  $ bin/hdfs dfs -cat /user/output/*

  # Hadoop 运行程序时,输出目录不能存在
  $ bin/hdfs dfs -rm -r /user/output

7. 配置日志保存在HDFS

应用运行完成以后,将程序运行日志信息上传到HDFS系统上,方便的查看到程序运行详情,方便开发调试。

修改配置文件 yarn-site.xml

    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!--日志保留时间设置7天-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
重新执行上面的wordcount,然后在JobHistory里面可以找到相应的日志。
http:localhost:8088

分布式

准备好三台服务器,按照前面的前置操作(注意SSH免密要配置好),下载安装的步骤准备好。(如果是Vmware则关机克隆)
注意!!!三台均要配置SSH免密
此处使用ssh-copy-id命令,可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

[root@hadoop1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.20
[root@hadoop1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.30
#另外同理

Linux手册——ssh-copy-id

规划
hadoop1hadoop2hadoop3
HDFSNameNodeSecondaryNameNode
DataNodeDataNodeDataNode
YARNResourceManager
NodeManagerNodeManagerNodeManager
#### 集群:修改主机名
[root@192.168.100.10 ~] hostnamectl set-hostname hadoop1
[root@192.168.100.20 ~] hostnamectl set-hostname hadoop2
[root@192.168.100.30 ~] hostnamectl set-hostname hadoop3

如果在SecureCRT中,可以用Ctrl+D重新登陆就可显示为hadoop主机名

修改配置文件

hadoop-env.sh、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers

位置在hadoop文件路径/etc/hadoop
定位52行,配置自己的jdk路径即可

  1. hadoop-env.sh
cd /opt/{hadoop}/etc/hadoop
# 指定jdk路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
  1. core-site.xml
    <!--指定HDFS中NameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
		<!--指定HDFS中NameNode的地址-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/tmp</value>
    </property>
  1. hdfs-site.xml
    <!--指定备份数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop1:9870</value>
	</property>
	<!--指定辅助名称节点-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop3:9868</value>
    </property>
  1. yarn-site.xml
    <!--Reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--指定resourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</value>
    </property>
		<!--日志聚集功能开启-->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!--日志保留时间设置7天-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
  1. mapred-site.xml
    <!--指定MR运行在YARN上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  1. workers 添加主从节点【都要添加】删除localhost
hadoop1
hadoop2
hadoop3

在hadoop3.2之前workers还是为slaves
主节点修改【Hadoop1】传送给其他两个节点

单点启动

先格式化NameNode,在hadoop1上执行

hdfs namenode -format

注意,尽量少格式化NameNode

在master节点启动start.sh

sh /export/servers/hadoop-3.3.1/sbin/start-all.sh 
#或者进入sbin路径
./start-all.sh
启动服务如果出现这样的错误

Starting namenodes on [hadoop1]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop3]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.

解决方案一
vi /etc/profile
#输入如下命令,在环境变量中添加下面的配置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

生效

source /etc/profile
解决方案二:

将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
按规划启动对应服务
# hadoop1
bin/hdfs --daemon start namenode
bin/hdfs --daemon start datanode

bin/yarn --daemon start nodemanager

如果dataNode节点未启动成功或者是启动自动宕掉
一、清理hadoop数据temp文件
二、重新把初次得namenode clusterID
通过日志查看,得到/var/data/hadoop/dfs/data/current

# hadoop2
bin/hdfs --daemon start datanode

bin/yarn --daemon start resourcemanager
bin/yarn --daemon start nodemanager
# hadoop3
bin/hdfs --daemon start datanode
bin/hdfs --daemon start secondarynamenode

bin/yarn --daemon start nodemanager

这里要把/etc/hosts里面的127.0.01的映射注释掉,在没有注释掉的时候启动时节点之间不能连接。

群集启动

直接在NameNode节点执行 sbin/start-dfs.sh

# hadoop1
sbin/start-dfs.sh

# hadoop2,hadoop3 这里单独去启动了dataNode
bin/hdfs --daemon start datanode


# hadoop2
sbin/start-yarn.sh 

# hadoop1,hadoop3
bin/yarn --daemon start nodemanager

Shell定时采集数据到HDFS

找到对应的data/logs。不存在则提前创建

配置环境变量

该目录下创建upload2HDFS.sh 脚(jio)本文件。写入java环境变量,主要是为了提高系统的可靠性,哪怕没有配置环境变量也能运行

vi upload2HDFS.sh

输入命令

export JAVA_HOME = "你的jdk安装路径"
export JRE_HOME = ${JAVA_HOME}/jre
export CLASSPATH = .:{JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH = ${JAVA_HOME}/bin:$PATH

export HADOOP_HOME = "你的Hadoop路径"
export PATH = ${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
准备日志存放目录和待上传文件
##需要提前创建好文件目录
#日志存放的目录
log_src_dir = "自定义" #/export/data/logs/log
#待上传存放的目录
log_toupload_dir = "自定义/toupload" #/export/data/log/toupload
设置日志文件上传的路径

命名格式以时间结尾、并输出打印信息

#设置日期
date1=`date-d last-day + %Y_%m_%d`
#日志文件上传到hdfs的根目录
hdfs_root_dir=/data/clickLog/$date1/
#打印环境变量信息
echo "envs: hadoop_home: $AHDOOP_HOME"
#读取日志文件的目录,判断是否有需要上传的文件
echo "log_src_dir:"$log_src_dir
实现文件上传
ls $log_src_dir | while read fileName
do
  if [[ "$fileName"==access.log.* ]];then
      date = `date + %Y%d_%H_%M_%S`
      #将文件移动到待上传目录并重命名
      echo "moving $log_src_dir$fileName to
                   $log_toupload_dir"xxxxx_click_log_$fileName"date"
      mv $log_src_dir$fileName
                     $log_toupload_dir"xxxxx_click_log_$fileName"date
      #将待上传的文件path写入一个列表文件willDoing,
      echo $log_toupload_dir"xxxxx_click_log_$fileName"date >>
                             $log_toupload_dir"willDoing."date
  fi
done               

最后将文件从待上传目录传至HDFS中

#找到列表文件willDoing
ls $log_toupload_dir | grep will | grep -v "_COPY_" | grep -v "_HOME_" | while
read line
do
    #打印信息
    echo "toupload is in file:"$line
    #将待上传文件列表willDoing改名为willDoing_COPY_
    mv $log_toupload_dir$line $log_toupload_dir$line"_COPY_"
    # 读列表文件willDoing_COPY_的内容(一个一个的待上传文件名)
    # 此处的line就是列表中的一个待上传文件的path
    cat $log_toupload_dir$line"_COPY_" | while read line
    do
        #打印信息
        echo "puting...$line to hdfs path...$hdfs_root_dir"
        hadoop fs -mkdir -p $hdfs_root_dir
        hadoop fs -put $line $hdfs_root_dir
    done
    mv $log_toupload_dir$line"_COPY_" $log_toupload_dir$line"_DONE_"
done

现在每天12点执行一次,Linux crontab表达式执行定时任务

0 0 * * * /shell/upload2HDFS.sh

上述Crontab6个参数,分时日月周命令组成

启动命令汇总说明

sbin/start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager
sbin/stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager

sbin/start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode
sbin/stop-dfs.sh 停止Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode

sbin/start-yarn.sh 启动ResourceManager、NodeManager
sbin/stop-yarn.sh 停止ResourceManager、NodeManager

# 单独启动/停止的
bin/hdfs --daemon start namenode
bin/hdfs --daemon start datanode
bin/hdfs --daemon start secondarynamenode

bin/yarn --daemon start resourcemanager
bin/yarn --daemon start nodemanager

mapred --daemon start historyserver 
mapred --daemon stop historyserver  

--------------------------------------------------------------------------

# 旧版本的命令
sbin/hadoop-daemons.sh start namenode 单独启动NameNode守护进程

sbin/hadoop-daemons.sh stop namenode 单独停止NameNode守护进程

sbin/hadoop-daemons.sh start datanode 单独启动DataNode守护进程

sbin/hadoop-daemons.sh stop datanode 单独停止DataNode守护进程

sbin/hadoop-daemons.sh start secondarynamenode 单独启动SecondaryNameNode守护进程

sbin/hadoop-daemons.sh stop secondarynamenode 单独停止SecondaryNameNode守护进程

sbin/yarn-daemon.sh start resourcemanager 单独启动ResourceManager

sbin/yarn-daemons.sh start nodemanager  单独启动NodeManager

sbin/yarn-daemon.sh stop resourcemanager 单独停止ResourceManager

sbin/yarn-daemons.sh stopnodemanager  单独停止NodeManager

sbin/mr-jobhistory-daemon.sh start historyserver 手动启动jobhistory

sbin/mr-jobhistory-daemon.sh stop historyserver 手动停止jobhistory

云服务器
虚拟机和配置网卡 建议使用NAT模式

Hadoop 3 端口号的改变

分类应用Haddop 2.x portHaddop 3 port
NNPortsNamenode80209820
NNPortsNN HTTP UI500709870
NNPortsNN HTTPS UI504709871
SNN portsSNN HTTP500919869
SNN portsSNN HTTP UI500909868
DN portsDN IPC500209867
DN portsDN500109866
DN portsDN HTTP UI500759864
DN portsNamenode504759865
## Hadoop 3 新特征
  • 基于JDK1.8(最低版本要求)
  • 剔除过期的API和实现,废弃hftp转为webhfs替代
  • Classpath isolation:新增的防止不同版本 jar 包冲突
  • Shell重写 (修复了Hadoop2脚本的bug,启动时的脚本命令也有不同,建议运行Hadoop3的脚本,大概有三分之一的地方不一样)
  • 支持HDFS的擦除编码 Erasure Encoding:默认EC策略可以节省50%的存储空间,同时还可以承受更多的存储故障(还在Haddoop2的基础上增加恢复功能)
  • DataNode 内部添加了负载均衡 Disk Balancer,磁盘之间的负载均衡(假定有3台服务器的磁盘都满了数据,数据存储在DataNode当中,可以在买一块磁盘插入,但其他磁盘还是满的,新磁盘是空的,这就产生了数据倾斜,所以Hadoop3提供了 Disk Balancer 磁盘平衡器自动帮我们将满磁盘分配到其他磁盘当中)
  • MapReduce任务级本地优化
  • MapReduce内存参数自动推断
    • mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts (在Hadoop2中是需要配置这两项,但在3中就会根据任务执行级别自动推断所需要的内存,所以3比2要快)
    • 基于 cgroup 的内存隔离和 IO Disk 隔离
    • 支持更改分配容器的资源 Container resizing

参考:https://blog.csdn.net/qq_35975685/article/details/84311627

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李好秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值