@

目录

前言

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

规划

hadoop1 hadoop2 hadoop3
HDFS NameNode SecondaryNameNode
DataNode DataNode DataNode
YARN ResourceManager
NodeManager NodeManager NodeManager
#### 集群:修改主机名
[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 port Haddop 3 port
NNPorts Namenode 8020 9820
NNPorts NN HTTP UI 50070 9870
NNPorts NN HTTPS UI 50470 9871
SNN ports SNN HTTP 50091 9869
SNN ports SNN HTTP UI 50090 9868
DN ports DN IPC 50020 9867
DN ports DN 50010 9866
DN ports DN HTTP UI 50075 9864
DN ports Namenode 50475 9865
## 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

CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式)的更多相关文章

  1. ZooKeeper:win7上安装单机及伪分布式安装

    zookeeper是一个为分布式应用所设计的分布式的.开源的调度服务,它主要用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用,协调及其管理的难度,提高性能的分布式服务. 本章的目的:如何 ...

  2. hadoop搭建伪分布式集群(centos7+hadoop-3.1.0/2.7.7)

    目录: Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本2.查看IP地址3.修改主机名为hadoop4.修改 /etc/hosts5.关闭防火墙6.关闭SE ...

  3. Hadoop安装-单机-伪分布式简单部署配置

    最近在搞大数据项目支持所以有时间写下hadoop随笔吧. 环境介绍: Linux: centos7 jdk:java version "1.8.0_181 hadoop:hadoop-3.2 ...

  4. Hadoop三种安装模式:单机模式,伪分布式,真正分布式

    Hadoop三种安装模式:单机模式,伪分布式,真正分布式 一 单机模式standalone单 机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守 ...

  5. Hadoop单机和伪分布式安装

    本教程为单机版+伪分布式的Hadoop,安装过程写的有些简单,只作为笔记方便自己研究Hadoop用. 环境 操作系统 Centos 6.5_64bit   本机名称 hadoop001   本机IP ...

  6. 网站用户行为分析——Hadoop的安装与配置(单机和伪分布式)

    Hadoop安装方式 Hadoop的安装方式有三种,分别是单机模式,伪分布式模式,伪分布式模式,分布式模式. 单机模式:Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可运行.非分布 ...

  7. hadoop安装教程,分布式配置 CentOS7 Hadoop3.1.2

    安装前的准备 1. 准备4台机器.或虚拟机 4台机器的名称和IP对应如下 master:192.168.199.128 slave1:192.168.199.129 slave2:192.168.19 ...

  8. Hadoop2.6.0安装—单机/伪分布

    目录 环境准备 创建hadoop用户 更新apt 配置SSH免密登陆 安装配置Java环境 安装Hadoop Hadoop单机/伪分布配置 单机Hadoop 伪分布Hadoop 启动Hadoop 停止 ...

  9. hadoop2.7【单节点】单机、伪分布、分布式安装指导

    问题导读 1.从本文部署实际部署,总结本地模式.伪分布.分布式的区别是什么?2.单机是否是伪分布?3.本地模式是否可以运行mapreduce? 来源:about云 http://www.aboutyu ...

随机推荐

  1. 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 百篇博客分析OpenHarmonyOS | v2.07

    百篇博客系列篇.本篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核 ...

  2. 关于open falcon 与nightingale 的一些调研

    针对 open-falcon 与 nightingale 的调研 一.open-falcon 1.1 组件介绍 1.1.1 agent > agent用于采集机器负载监控指标,比如cpu.idl ...

  3. CF848E-Days of Floral Colours【dp,分治NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/CF848E 题目大意 \(2n\)个花排成一个圆环,\(n\)种颜色每种两个,要求两个相同颜色之间最小距离为\(1, ...

  4. vulnhub靶机-Me and My Girlfriend: 1

    vulnhub靶机实战 1.靶机地址:https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 2.先看描述(要求) 通过这个我们可以知道我们 ...

  5. Java数据类型详解!Java秘诀,Java入门基础

    Java的基本数据类型算是Java学习的基础之一,经常会听到大家提起.那么你到底有没有真正理解和掌握数据类型呢? Java 语言支持的数据类型分为两种:基本数据类型和引用数据类型!本文主要针对这两大数 ...

  6. CF1092F Tree with Maximum Cost(dfs+dp)

    果然我已经菜到被\(div3\)的题虐哭了 qwq 首先看到这个题,一个比较显然的想法就是先从1号点开始\(dfs\)一遍,然后通过一些奇怪的方式,再\(dfs\)一遍得到其他点的贡献. 那么具体应该 ...

  7. python os.walk处理树状目录结构的文件

    在项目工作中,时常需要用到处理文件的方法,尤其是在windows环境下的树状目录结构 os.walk恰好能完美的处理这种树状目录结构文件,能高效地帮助我们得到我们需要处理的文件 目录结构: Deskt ...

  8. LiveVideoStackCon2021 北京站专访:从上云到创新,视频云的新技术、新场景

    伴随着视频技术的进步和标准的迭代,视频产业从模拟进入到数字时代,完成了从电影电视到互联网的媒介转换,并且衍生出了超高清.3D.AR/VR 等多种创新形态.特别是在后疫情的当下,我们可以看到音视频技术领 ...

  9. Java:并发笔记-02

    Java:并发笔记-02 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 3. 共享模型之管程-1 本章内容-1 共享问题 synchronized 线程安全分 ...

  10. Noip模拟57 2021.9.20

    规律总结:联考必爆炸 T1 2A 没$A$掉的大水题,但是是真的不知道$000$前面的$00$也算先导$0$,以后要长记性,这种东西不能再错了 再打三遍: $000$前面的$00$也算先导$0$ $0 ...