热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7hadoop3.3.1安装(单机分布式、伪分布式、分布式)

@目录前言预先设置修改主机名关闭防火墙创建hadoop用户SSH安装免密登陆单机免密登陆——linux配置ssh免密登录linux环境配置Java变量配置Java环境变量安装Had

@

目录

  • 前言
  • 预先设置
    • 修改主机名
    • 关闭防火墙
    • 创建hadoop用户
    • SSH安装免密登陆
      • 单机免密登陆——linux配置ssh免密登录
    • linux环境配置Java变量
      • 配置Java环境变量
  • 安装Hadoop-3.3.0.tar.gz
  • 运行
    • 单机非分布式
    • 伪分布式
      • 1.修改配置文件
      • 2.格式化NameNode
      • 3.开启 NaneNode 和 DataNode 进程
      • 4. 操作集群
      • 5. 启动yarn(伪分布式也可以不启动)
      • 6.运行测试实例
      • 7. 配置日志保存在HDFS
    • 分布式
      • 规划
      • 修改配置文件
      • 单点启动
        • 启动服务如果出现这样的错误
        • 解决方案一
        • 解决方案二:
      • 按规划启动对应服务
      • 群集启动
    • Shell定时采集数据到HDFS
      • 配置环境变量
      • 准备日志存放目录和待上传文件
      • 设置日志文件上传的路径
      • 实现文件上传
  • 启动命令汇总说明
  • Hadoop 3 端口号的改变

前言

官方镜像下载地址: Centos,hadoop,Java
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



hadoop.tmp.dir
/opt/data/hadoop/tmp



fs.defaultFS
hdfs://hadoop2:9000


#修改配置文件 hdfs-site.xml,
#搭建集群后,hadoop本身自带了一个webUI访问页面


dfs.replication
1


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/*

在浏览器中查看:《CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式)》

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

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

  1. 修改配置文件 mapred-site.xml:

#修改内容如下



mapreduce.framework.name
yarn


mapreduce.application.classpath
$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*


  1. 修改配置文件 yarn-site.xml:




yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME


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


yarn.log-aggregation-enable
true



yarn.log-aggregation.retain-seconds
604800

注意:开启日志聚集功能,需要重新启动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



fs.defaultFS
hdfs://hadoop1:9000



hadoop.tmp.dir
/opt/data/hadoop/tmp

  1. hdfs-site.xml



dfs.replication
3



dfs.namenode.http-address
hadoop1:9870



dfs.namenode.secondary.http-address
hadoop3:9868

  1. yarn-site.xml



yarn.nodemanager.aux-services
mapreduce_shuffle



yarn.resourcemanager.hostname
hadoop2



yarn.log-aggregation-enable
true



yarn.log-aggregation.retain-seconds
604800

  1. mapred-site.xml



mapreduce.framework.name
yarn

  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


推荐阅读
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • Kafka入门指南
    本文将详细介绍如何在CentOS 7上安装和配置Kafka,包括必要的环境准备、JDK和Zookeeper的配置步骤。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文介绍了Hadoop的核心组件,包括高可靠性和高吞吐量的分布式文件系统HDFS、分布式的离线并行计算框架MapReduce、作业调度与集群资源管理框架YARN以及支持其他模块的工具模块Common。 ... [详细]
  • 如何在Windows上使用Gitee创建远程仓库
    本文详细记录了在Windows系统上使用Gitee创建远程仓库的步骤,帮助解决无法注册GitHub的问题。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • Zookeeper作为Apache Hadoop生态系统中的一个重要组件,主要致力于解决分布式应用中的常见数据管理难题。它提供了统一的命名服务、状态同步服务以及集群管理功能,有效提升了分布式系统的可靠性和可维护性。此外,Zookeeper还支持配置管理和临时节点管理,进一步增强了其在复杂分布式环境中的应用价值。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
author-avatar
我负天下人0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有