Hadoop概念以及安装

news/2025/10/13 1:14:46/文章来源:https://www.cnblogs.com/chucz/p/19137578

Hadoop概论

  • Hadoop是一个由 Apache基金会所开发的分布式系统基础架构。
  • 主要解决,海量数据的存储和海量数据的分析计算问题。
  • 广义上来说, Hadoop通常是指一个更广泛的概念 Hadoop生态圈。

1598657164471-c41e495f-2637-45dd-9cfc-a8eb18807367.png

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

  • Apache版本最原始(最基础)的版本,对于入门学习最好。
  • Cloudera内部集成了很多大数据框架对应产品CDH。用的最多,方便
  • Hortonworks文档较好。对应产品HDP。
  1. 高可靠性: Hadoop底层维护多个数据副本,所以即使 Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。

2)高扩展性:在集群间分配任务数据,可便的扩展数以千计的节点。

3)高效性:在 MapReduce的思想下, Hadoop是并行工作的,以加快任务处理速度。

4)高容错性:能够自动将失败的任务重新分配

Hadoop组成

计算+资源调度+存储

1.x中MapReduce负责计算和资源调度

2.x中MapReduce负责计算,Yarn负责资源调度,解耦

1603092694922-e02b5a67-5c8e-48dd-b414-d0d5f743cd25.png

HDFS

存储

Hadoop Distributed File System

  • NameNode:nn,文件元数据。文件名,目录结构,属性,文件所在dn列表
  • DataNode:dn,实际存储块数据。块数据以及校验和
  • Secondary NameNode:不是nn的热备,是nn的助手,不能顶替nn,

YARN

资源调度(资源指的是CPU内存等等)

每个知道自己的集群在干什么事情。

  • RM:常驻进程Resource Manager 处理客户端请求,监控每一个Node Manager,启动或者监控AM, 资源调度和分配
  • NM:常驻进程Node Manager,每一个节点负责人。处理RM和AM的指令
  • AM:有任务才创建ApplicationMaster,任务临时主管,决定任务需要多少资源并且申请资源。数据切分资源分配给任务,任务监控容错
  • Container:有任务才创建。节点资源的抽象。CPU内存网络硬盘的多维度资源

1598657547061-a13053c6-db35-4992-acdb-1366824ace36.png

MapReduce

MapReduce将计算过程分为两个阶段:Map和Reduce

1)Map阶段并行处理输入数据

2)Reduce阶段对Map结果进行汇总

1598657908855-4dd854a7-1182-46a6-b450-eb6044defe9a.png

Hadoop环境搭建

创建备用虚拟机

这里使用的链接克隆的虚拟机,更方便

镜像下载:https://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/

三台虚拟机内存4G,硬盘50G

最小安装

自带vi编辑器,没有vim

修改静态IP: 《paralles》

yum install lsof
lsof -i:22

如果处于监听。直接使用ssh连接,没有则安装(有可以跳过)

sudo yum –y install openssh-server openssh-clients
sudo systemctl start sshd
sudo systemctl status sshd# systemctl stop sshd
sudo systemctl enable sshd
# sudo systemctl disable sshd

需要配置允许远程root登录(有可以跳过)

sudo vim /etc/ssh/sshd_config

1603246319473-275997e2-015b-41cc-b709-7d428d2888ca.png

之后先远程连接,虚拟机自己的界面不可以复制粘贴!!

配置国内镜像源(否则安装依赖太慢)

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
vim /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
# 清除缓存
yum clean all
# 生存缓存
yum makecache
sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 创建deltaqin用户
sudo useradd deltaqin
sudo passwd 000000# 配置用户具有root权限
vi sudo
# 修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
deltaqin   ALL=(ALL)     ALL
shutdown -h now

至此,基础环境搭建完成,

设置如下,开机的时候直接后台运行,使用ssh连接

1603248755354-09908f07-f907-485c-9706-b48ad086bce8.png

设置之后重启parallels。创建快照

新建克隆

1603249062527-48339b53-4ab8-4552-be6e-62fae5c1cdbc.png

连接之后更换静态IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 换一个即可
# 重启再连接
reboot
# 修改主机名称
sudo hostnamectl --static set-hostname hadoop101
# 配置主机名称映射
sudo vim /etc/hosts

1598665207071-0f8274e4-35d0-4b7e-bb6c-91ab4aa90d4b.png

# 重启虚拟机
reboot

当前机器再创建快照之后克隆两台,相关配置:

# 主机名
sudo hostnamectl --static set-hostname hadoop102
# 静态IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 生效
reboot
# 同样另一台机器
sudo hostnamectl --static set-hostname hadoop103
vim /etc/sysconfig/network-scripts/ifcfg-eth0
reboot

最终效果

1603249676557-acf6fc85-424b-4936-8332-04ec0cec048e.png1603249782289-74f146a7-2cde-4564-8520-38007d743e9e.png

在/opt目录下创建安装文件夹

在/opt目录下创建module、software文件夹,修改module、software文件夹的所有者cd

sudo mkdir /opt/module /opt/software
sudo chown deltaqin:deltaqin /opt/module /opt/software

1603249911939-5191e5a2-7cda-47e3-859e-2cdef37d1096.png

安装JDK

卸载现有****JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

# java安装包上传之后
mkdir -p /usr/java/latest
tar -zxf software/jdk-8u212-linux-x64.tar.gz -C /usr/java/latest# 不建议直接编辑profile文件,可以自己定义一个profile文件sudo vim /etc/profile.d/my_env.sh
# 添加如下内容
#JAVA_HOME
export JAVA_HOME=/usr/java/latest/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/binsource /etc/profile
java -version

安装Hadoop

hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面

# 进入到Hadoop安装包路径下
cd /opt/software/
# 解压安装文件到/opt/module下面
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
# 将Hadoop添加到环境变量
pwd
/opt/module/hadoop-3.1.3
# 打开/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh# 在profile文件末尾添加JDK路径:(shitf+g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin# 保存后退出,让修改后的文件生效
source /etc/profile# 测试是否安装成功
hadoop version
Hadoop 3.1.3# Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。Linux 系统中欲写入硬盘的资料有的
# 时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的
# 资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料
# 强制写入硬盘中。
sync
sudo reboot

1598668061102-95e987da-c7a3-47bb-9194-a247f9022f37.png

ssh配置免密登录

无密登录****配置

1598668716054-6e13a762-fe25-4a44-beab-4ff33ff1a289.png

生成公钥和私钥:

(只是针对当前用户生成,不同用户需要再次生成)

su deltaqin
ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

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

ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103

出现:

The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.

RSA key fingerprint is cf:1e🇩🇪d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.

Are you sure you want to continue connecting (yes/no)?

解决方案如下:直接输入yes

注意

还需要在hadoop102采用deltaqin账号,配置一下无密登录到hadoop101hadoop102hadoop103;否则不能用101登录其他服务器

还需要在hadoop103采用deltaqin账号,配置一下无密登录到hadoop101hadoop102、hadoop103服务器上。否则不能用103登录其他服务器

配置完之后就可以做到真正的三个机器互通

ssh hadoop103

.ssh文件夹下(~/.ssh)的文件功能解释

known_hosts 记录ssh访问过计算机的公钥(public key)
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过的无密登录此服务器公钥

快速分发文件到所有节点--编写集群分发脚本xsync

scp(secure copy)安全拷贝(不用)

scp可以实现服务器与服务器之间的数据拷贝

scp    -r  $pdir/$fname  $user@hadoop$host:$pdir/$fname
# 命令 递归  要拷贝的文件路径/名称   目的用户@主机:目的路径/名称

在hadoop101上,将hadoop101中/opt/module目录下的软件拷贝到hadoop102上。

scp -r /opt/module  root@hadoop102:/opt/module

在hadoop103上,将hadoop101服务器上的/opt/module目录下的软件拷贝到hadoop103上。

sudo scp -r root@hadoop101:/opt/module root@hadoop103:/opt/module

注意:拷贝过来的/opt/module目录别忘了在hadoop102hadoop103修改所有文件的,所有者和所有者组

sudo chown deltaqin:deltaqin -R /opt/module

# 将hadoop101中/etc/profile文件拷贝到hadoop102的/etc/profile上。
sudo scp /etc/profile root@hadoop102:/etc/profile# 将hadoop101中/etc/profile文件拷贝到hadoop103的/etc/profile上。
sudo scp /etc/profile root@hadoop103:/etc/profile

注意:拷贝过来的配置文件别忘了source一下/etc/profile,


rsync远程同步工具(不用)

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

rsync  -av  $pdir/$fname  $user@hadoop$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称
选项 功能
-a 归档拷贝
-v 显示复制过程

把hadoop101机器上的/opt/software目录同步到hadoop102服务器的root用户下的/opt/目录

rsync -av /opt/software/ hadoop102:/opt/software

xsync集群分发脚本(用)

循环复制文件到所有节点的相同目录下

rsync  -av   /opt/module root@hadoop103:/opt/

期望脚本:xsync要同步的文件名称

cd /home/deltaqin
vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
doecho ====================  $host  ====================#3. 遍历所有目录,挨个发送for file in $@do#4 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done
# 修改脚本 xsync 具有执行权限
chmod +x xsync# 将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/# 同步需要的文件
sudo xsync /opt/
sudo xsync /usr/java/
sudo xsync /bin/xsync
sudo xsync /etc/profile.d/my_env.sh # 在接收服务器测试
source /etc/profile
hadoop version

配置集群****

注意:NameNode和SecondaryNameNode不要安装在同一台服务器

注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

节点分布

hadoop101 hadoop102 hadoop103
HDFS
NameNode
DataNode

DataNode
SecondaryNameNode
DataNode
YARN
NodeManager
ResourceManager
NodeManager

NodeManager

core-site.xml 核心配置文件

# 核心配置文件
cd /opt/module/hadoop-3.1.3/etc/hadoop/
# 配置core-site.xml
vim core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop101:8020</value></property><property><name>hadoop.data.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property><property><name>hadoop.proxyuser.deltaqin.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.deltaqin.groups</name><value>*</value></property>
</configuration>

hdfs-site.xml HDFS配置文件

vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.data.dir}/name</value></property><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.data.dir}/data</value></property><property><name>dfs.namenode.checkpoint.dir</name><value>file://${hadoop.data.dir}/namesecondary</value></property><property><name>dfs.client.datanode-restart.timeout</name><value>30</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop103:9868</value></property>
</configuration>

yarn-site.xml yarn配置文件

vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop102</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>

mapred-site.xml MapReduce配置文件

vim mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

配置workers

vim workers 
hadoop101
hadoop102
hadoop103

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

# 在集群上分发配置好的Hadoop配置文件
sudo xsync /opt/module/hadoop-3.1.3/etc/hadoop/
# 查看文件分发情况
cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

集群单点启动(不用)

# 如果集群是第一次启动,需要格式化NameNode
hdfs namenode -format# 在hadoop101上启动NameNode
hdfs --daemon start namenode
# 完成后执行jps命令,看到如下结果(进程号可能不同):
3461 NameNode# 在hadoop101、hadoop102以及hadoop103上执行如下命令(三台都要执行)
hdfs --daemon start datanode

集群群起(用)

基础是配置好ssh的无密登录

配置好workers

启动集群

格式化NN

如果集群是第一次启动,需要在hadoop101节点格式化NameNode(注意格式化之前,一定要停止上次启动的所有namenode和datanode进程,然后再删除datalog数据,见最后的常见问题

hdfs namenode -format

1603281183177-37bfa6c8-d540-42ad-af82-782fb0842d30.png上面输出没有报错就可以

启动HDFS

sbin/start-dfs.sh

启动hadoop,报错Error JAVA_HOME is not set and could not be found

在hadoop-env.sh中,再显示地重新声明一遍JAVA_HOME

export JAVA_HOME=/usr/local/java/jdk1.8.0_271

启动YARN

在配置了ResourceManager的节点(hadoop102启动YARN

sbin/start-yarn.sh

Web端查看SecondaryNameNode

http://hadoop103:9868/status.html

http://hadoop101:9870/dfshealth.html#tab-datanode

  • 如果打不开网页:查看hdfs-site.xml里面的配置,看看端口写错没,我的是9868,不是50090

  • 如果网页不显示详细内容:https://blog.csdn.net/qq_43771096/article/details/106127227

1598675045910-43a0740b-bbc4-4273-8897-5d60407b023d.png

在102上执行:(注意生成deltaqin的秘钥,而不是root否则permission denied)

1598675288582-9d4de59d-c567-4500-8ae0-e612e9e16201.png

1598685715788-bac09f14-e21d-40cb-ae9b-f803da7dbbe8.png

如果101里面缺少NameNode。说明创建失败,可以重新执行hdfs namenode -format查看错误原因,我的是权限不足,因此执行sudo chmod -R a+w /opt/module/hadoop-3.1.3/data。给了权限之后再次执行即可成功

1598675423252-c77d1911-02ea-49f8-9061-d4a5c774dbd8.png

1598675398542-92637049-fbdf-4ac5-a1cf-ec09b2bcd7f0.png

集群启动/停止方式总结

各个服务组件逐一启动/停止

# 分别启动/停止HDFS组件
hdfs –daemon start/stop namenode/datanode/secondarynamenode
# 启动/停止YARN
yarn --daemon start/stop  resourcemanager/nodemanager

各个模块分开启动/停止(配置ssh是前提)常用

# 整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh
# 整体启动/停止YARN
start-yarn.sh/stop-yarn.sh

配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

配置mapred-site.xml

vi mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop101:10020</value>
</property><!-- 历史服务器web端地址 -->
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop101:19888</value>
</property>

分发配置,启动

# 分发配置
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
# 在hadoop101启动历史服务器
mapred --daemon start historyserver
# 查看历史服务器是否启动
jps

查看JobHistory

http://hadoop101:19888/jobhistory

配置日志的聚集

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

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager

配置yarn-site.xml

vim yarn-site.xml
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>
<property>  <name>yarn.log.server.url</name>  <value>http://hadoop101:19888/jobhistory/logs</value>  
</property>
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>
# 分发配置
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml# 关闭NodeManager 、ResourceManager和HistoryServer
# 在102上执行: 
stop-yarn.sh# 在101上执行: 
mapred --daemon stop historyserver# 启动NodeManager 、ResourceManager和HistoryServer
# 在102上执行:
start-yarn.sh# 在101上执行:
mapred --daemon start historyserver

查看日志

http://hadoop101:19888/jobhistory

http://hadoop101:9870/ 主要页面

http://hadoop102:8088/cluster/nodes

下面两个图都一致就基本对了

1598690801601-452a5736-ce00-4dd3-9b98-f006e8c980c0.png

1598690776161-b97471a4-780a-4453-9da1-15bb1dd3735b.png

编写脚本查看集群状态

grep -v 排除输出

vim jpsall
#!/bin/bash
for i in hadoop101 hadoop102 hadoop103
doecho "=============     $i      ================"ssh $i "jps" | grep -v Jps
done
chmod +x jpsall
sudo mv jpsall /bin/
jpsall

报错

已经安装jdk,配置好jdk的环境变量,且本机执行jps命令没有问题!

1605076459289-959d9f8c-5b31-44ef-9eaa-0b4ec869d7a1.png

三台机器都执行一下

sudo ln -s /usr/local/java/jdk1.8.0_271/bin/jps /usr/local/bin/jps

之后在101:

xsync /bin/jpsall

就可以了

1603282314289-ec7a7917-9542-4af6-9a5d-fcac6512a85a.png

常见错误

无法访问此网站connection refused:端口号不对

DNS PROBE FINISHED NXDOMAIN:本机host配置不对

用户不对

1603281444155-f20afdf2-1cce-4186-bf36-69b198a35ba6.png

切换到相应用户即可

最后找不到问题解决:格式化重启

删除data以及logs文件夹

rm -rf data logs

格式化

在hadoop101节点格式化NameNode(注意格式化之前,一定要停止上次启动的所有namenode和datanode进程,然后再删除datalogs数据)

hdfs namenode -format

1603281055344-f8f4005f-44e2-42a2-9de2-d7b1daff0bb0.png

start-dfs.sh

此时启动,如果提示失败,无法写data以及logs,需要改变一下这两个文件夹的权限,自己自动创建的时候 就会变成root用户的。

注意是递归给权限。

chown -R deltaqin:deltaqin logs data
stop-dfs.sh
start-dfs.sh
start-yarn.sh

集群时间同步(选做)

关键是时间一致,不是时间准确

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。


主时间服务器配置(必须root用户)

# 在所有节点关闭ntp服务和自启动
sudo systemctl status ntpd
su
systemctl stop ntpd
systemctl disable ntpd
# 修改ntp配置文件
vim /etc/ntp.conf
# 修改内容如下
# 修改1(授权自己网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

1598691070013-6aa509b2-9872-43ad-98cb-393b5cd56a87.png

# 修改2(集群在局域网中,不使用其他互联网上的时间)
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 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# 添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10# 修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
# 增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes# 重新启动ntpd服务
systemctl start ntpd# 设置ntpd服务开机启动
systemctl enable ntpd

1598691235199-efbff1aa-c76f-488f-9f4e-6cdb23e1435b.png

其他机器配置(必须root用户)

在其他机器配置10分钟与时间服务器同步一次

crontab -e
# 编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop101# 修改任意机器时间
date -s "2017-9-11 11:11:11"# 十分钟后查看机器是否与时间服务器同步
date

说明:测试的时候可以将10分钟调整为1分钟,节省时间。

看端口

netstat -nltp

1603283268475-fc7ffe27-788f-4d05-a54b-4c0629f666d8.png

netstat -nltp |grep 4380

1603283317709-70ec5c3c-eb08-43f2-89e5-c8e5e6780f48.png

iotop:磁盘读写性能

top:系统进程

tree

free -h 查看内存

df -h 磁盘分区大小

du -h . 查看当前文件夹所占的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

presto配置

presto启动时默认配置文件目录在安装目录下的etc下每个节点的配置 在etc下创建node.properties文件,配置如下: node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/pres…

Hadoop--MapReduce

dr.who是通过http连接的默认用户,可以直接在配置文件里面修改为当前用户,重启之后就可以使用当前用户在页面里面对文件进行相关操作。 MapReduce概述 分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应…

Hadoop--yarn

Yarn资源调度器 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。 Y****arn基本架构 YARN主要由ResourceM…

AI元人文构想框架体系

AI元人文构想框架体系 一、核心概念与理论基础 1.1 基本定义 AI元人文构想:一种革命性AI发展范式,旨在构建能够理解、协调并增强人类复杂价值体系的新型人工智能系统。其核心特征包括:从"优化工具"转变…

[DAX/数据分析表达式/Power BI] DAX 查询视图语言 = `Data Analysis eXpressions`(数据分析表达式) = 编程式数据分析语言

0 序Power BI1 概述:DAX 查询视图语言 = Data Analysis eXpressions(数据分析表达式) = 编程式数据分析语言 for Power BI / SSAS / ... DAX是什么?DAX 全称 Data Analysis eXpressions(数据分析表达式); 其是面向 …

Hadoop--HDFS-HA高可用

high avilability HA****概述 1)所谓HA(High Availablity),即高可用(7*24小时不中断服务)。 2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。 3)Hadoop2.…

Hadoop--HDFS

注意机器启动过之后,同步的时候不要同步data文件夹一次写入,多次读出,不支持文件修改。适合数据分析,不适合网盘应用 分布式存储,文件系统。 优点:高容错性。多复制,丢失自动恢复 适合大数据,数据以及文件规模…

10月——算法竞赛回坑杂记

说起来上次打比赛已经是好久以前了呢。初中、高中作为OIer的生涯就这么糊里糊涂的结束了,似乎连一个正经的告别都没写。谁叫广大附离家那么远呢,只记得当时比完赛回到家光顾着玩了,第二天一早又懒得补上。说起来也好…

20232308 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1. 本周学习内容缓冲区溢出缓冲区溢出原理:本质是数组的生长方向与栈的生长方向相反,且数组调用没有进行越界检查。 返回地址覆盖:掌握如何通过缓冲区溢出覆盖栈上的返回地址,以控制程序的执行路径。 返…

20232307 2025-2026-1 《网络与系统攻防技术》实验一

20232307 2025-2026-1 《网络与系统攻防技术》实验一20232307 2025-2026-1 《网络与系统攻防技术》实验一 一、实验内容 1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。 2.利用foo函数的Bof漏洞,…

Redis知识点汇总

Redis快速回忆 核心数据结构字符串 小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。哈希购物车列表集合有序集合位图 Bitmap 虽然基于String类型,但是可以直接操作位一个字节8位表示一个用户是数据使用的时候把握…

乐理 -05 乐音 乐级

乐音 一直发生在某个频率不发生变化的称为乐音噪音 没有固定的频率像鼓之类的称为 噪音乐器 乐音体系音列 多个 有序乐级

Redis实现分布式锁以及Redis客户端比较

对比 1、redisTemplate是基于某个具体实现的再封装,比如说springBoot1.x时,具体实现是jedis;而到了springBoot2.x时,具体实现变成了lettuce。封装的好处就是隐藏了具体的实现,使调用更简单,但是有人测试过jedis效…

一致性哈希原理

数据服务器如何组织:设计时候保证高频中低频都有数量。否则就是忙的忙死闲的闲死 逻辑层服务器:增加和减少机器的时候代价很小 数据层服务器:增加和减少机器的时候代价是全量的 取模服务器个数的问题--缓存雪崩 取模…

缓存和数据库数据的一致性

缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的 问题 Redis 的 qps 可以达到 10 万每秒,对于一般体量的互联网公司,一台机器就够了。但不论是什么业务,都不得不面对一个棘手的问题:那就是 Redis 和…

Redis不同数据类型代码场景实践

string 博客不好的实现 jedis.set("key1", "value1"); jedis.get("key1"); jedis.del("lock_test"); jedis.incr("blog_id_counter"); Long key = jedis.incrBy(&q…

上下文与this指向

var name = window​​ const person1 = { ​ name: person1,​foo1: function() {​console.log(this.name) ​ }, ​ foo2: () => {console.log(this.name) ​ },​foo3: function() { ​ return function…

[数据库] Microsoft SQL Server 数据库

1 概述: Microsoft SQL Server SQL Server 数据库SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的【主要功能】就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,…

02 | 在环境中使用Airsim插件

02 | 在环境中使用Airsim插件参考 https://zhuanlan.zhihu.com/p/619214564 中 我们只需要随意下载一个小一点的场景工程就可以然后按照文章中的内容进行。注意需要用到我们上一个文章中介绍的 plugins 文件夹

01 | UE5.3+Airsim+VS2022+Windows10(无人机仿真环境)

01 | UE5.3+Airsim+VS2022+Windows10(无人机仿真环境)配置步骤 vs2022 的安装和配置可以多装;少装也没事后面打开 vs2022 配置项目会进行提示桌面开发套件NET 桌面开发游戏开发单个组件安装 UE5.3不要下载在 C 盘,…