Hadoop安装部署

Hadoop的本质是​​同时解决大数据量存储和计算问题​​的分布式计算框架,其核心目标是通过分布式架构实现海量数据的高效存储与并行处理。

一、通过HDFS文件系统解决海量数据存储问题

分块存储【默认每个文件大小128MB】与容错性【复制多个副本存储在不同节点】

横向扩展能力【可线性扩展PB级别、适合处理非结构化和半结构化数据】

高吞吐量访问【计算节点优先处理本地存储的数据,减少网络传输开销】

二、并行处理框架(MapReduce和YARN)

MapReduce编程模型【支持并行计算、分类、聚合】

资源调度与管理YARN【统一管理集群资源、支持多任务共享集群】

与生态工具的结合【HiveSparkHBase、扩展计算场景、离线分析到实时处理全链路】

三、分布式集群

主从架构设计【HDFS采用NameNodeDataNode主从结构、YARN通过ResourceManagerNodeManager实现资源调度、高可用】

经济性与灵活性【普通硬件集群、降低硬件成本、支持动态扩展】

容错与自动恢复 【数据副本机制、任务重试策略、自动处理故障节点】

首先,需要安装部署hadoop

环境准备

节点IP

主机名

资源

核心角色

辅助角色

192.168.8.210

hadoop-node1

cpu:8core

mem:32GB

disk:200GB

​NameNode​

​(HDFS主节点)

ResourceManager(YARN主节点)

192.168.8.211

hadoop-node2

cpu:8core

mem:32GB

disk:200GB

DataNode(数据存储)

NodeManager(资源管理)

192.168.8.212

hadoop-node3

cpu:8core

mem:32GB

disk:200GB

DataNode(数据存储)

NodeManager(资源管理)

#关闭防火墙(三个节点执行)

systemctl stop firewalld

systemctl disable firewalld

#时间同步(主节点执行、其他节点同步)

yum install ntp -y

systemctl start ntpd

systemctl enable ntpd

#主机名与host映射(三个节点执行)

#修改主机名

hostnamectl set-hostname hadoop-node1 # 各节点按实际IP修改

vi /etc/hosts

192.168.8.210 hadoop-node1

192.168.8.211 hadoop-node2

192.168.8.212 hadoop-node3

终端重新登录生效

groupadd hadoop

useradd -m -g hadoop -d /home/hadoop hadoop

passwd hadoop

加入wheel组具备sudo权限

usermod -aG wheel hadoop

su – hadoop

#SSH免密登录(主节点生成,分发到其他节点)

ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa

ssh-copy-id hadoop-node1

ssh-copy-id hadoop-node2

ssh-copy-id hadoop-node3

安装JDK (三个节点)

yum install java-1.8.0-openjdk-devel -y

Hadoop组件安装

下载并解压hadoop

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

或者

https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

mkdir /soft (每个节点执行)

将介质上传到主节点/soft ,在主节点执行如下命令:

scp /soft/hadoop-3.3.6.tar.gz 192.168.8.211:/soft

scp /soft/hadoop-3.3.6.tar.gz 192.168.8.212:/soft

mkdir /apps

tar -zxvf /soft/hadoop-3.3.6.tar.gz -C /apps

chown -R hadoop:hadoop /apps/hadoop-3.3.6

环境变量设置

在三个节点执行,

su – hadoop

vi ~/.bashrc

export HADOOP_HOME=/apps/hadoop-3.3.6

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source ~/.bashrc

核心配置文件修改(所有节点执行)

core-site.xml

vi /apps/hadoop-3.3.6/etc/hadoop/core-site.xml

添加如下信息

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoo/tmp</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hadoop.security.authentication</name>
<value>simple</value>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>10000</value>
</property>
<property>
<name>ipc.client.socket.timeout</name>
<value>60000</value>
</property>
<property>
<name>hadoop.rpc.protection</name>
<value>authentication</value>
</property>
</configuration>

fs.defaultFS 指定hdfs的默认访问地址

hadoop.tmp.dir 指定Hadoop存储临时文件的目录

hadoop.security.authorization 是否启用Hadoop的权限检查

hadoop.security.authentication 指定Hadoop的身份验证方式(simplekerberos)

ipc.client.connect.timeout 客户端尝试连接服务端的Socket超时时间,单位毫秒

ipc.client.socket.timeout 客户端与服务端之间Socket连接超时时间,单位毫秒

hadoop.rpc.protection 集群中节点间RPC通信的保护级别(authenticationintegrityprivacy)

hdfs-site.xml

注:如果hadoop-node1只做namenode,不要配置dfs.datanode.data.dir参数

vi /apps/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

添加如下信息:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hdfs/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop-node1:50070</value>
</property>
<property>
<name>dfs.namenode.https-address</name>
<value>hadoop-node1:50470</value>
</property>
</configuration>

mapred-site.xml

vi /apps/hadoop-3.3.6/etc/hadoop/mapred-site.xml

添加如下信息:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

yarn-site.xml

vi /apps/hadoop-3.3.6/etc/hadoop/yarn-site.xml

添加如下信息:

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 启用MapReduce -->
</property>
</configuration>

hadoop-env.sh

vi /apps/hadoop-3.3.6/etc/hadoop/hadoop-env.sh

添加如下行:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

export HDFS_NAMENODE_USER=hadoop

export HDFS_DATANODE_USER=hadoop

export HDFS_SECONDARYNAMENODE_USER=hadoop

export YARN_RESOURCEMANAGER_USER=hadoop

export YARN_NODEMANAGER_USER=hadoop

export HADOOP_DATANODE_SETPRIORITY=false

在三个节点执行

su – hadoop

echo $HADOOP_HOME

/apps/hadoop-3.3.6

echo “hadoop-node2” >> $HADOOP_HOME/etc/hadoop/workers

echo “hadoop-node3” >> $HADOOP_HOME/etc/hadoop/workers

cat workers

仅仅看到如下信息:

hadoop-node2

hadoop-node3

scp -r /apps/hadoop-3.3.6/etc/hadoop/* hadoop-node2://apps/hadoop-3.3.6/etc/hadoop/

scp -r /apps/hadoop-3.3.6/etc/hadoop/* hadoop-node3://apps/hadoop-3.3.6/etc/hadoop/

服务启动与验证

三个节点执行

mkdir -p /apps/hadoop-3.3.6/logs

chown -R hadoop:hadoop /apps/hadoop-3.3.6/logs

mkdir -p /data/hadoop/tmp

mkdir -p /data/hdfs/namenode

mkdir -p /data/hdfs/datanode

chown -R hadoop:hadoop /data/hadoop/tmp

chown -R hadoop:hadoop /data/hdfs/namenode

chown -R hadoop:hadoop /data/hdfs/datanode

格式化HDFS(在主节点执行,仅执行一次)

su – hadoop

hdfs namenode -format

在主节点执行

[hadoop@hadoop-node1 ~]$ start-dfs.sh

Starting namenodes on [hadoop-node1]

Starting datanodes

Starting secondary namenodes [hadoop-node1]

[hadoop@hadoop-node1 ~]$ start-yarn.sh

Starting resourcemanager

Starting nodemanagers

[hadoop@hadoop-node1 ~]$ jps

[hadoop@hadoop-node1 ~]$ jps

4804 ResourceManager

7252 NameNode

4936 NodeManager

7386 DataNode

7627 SecondaryNameNode

7771 Jps

数据节点执行

[hadoop@hadoop-node2 ~]$ jps

26098 DataNode

26181 Jps

25547 NodeManager

[hadoop@hadoop-node3 ~]$ jps

25969 Jps

25894 DataNode

25367 NodeManager

如果namenode节点不显示DataNode进程和NodeManager进程,namenode节点需要修改如下配置文件

vi /apps/hadoop-3.3.6/etc/hadoop/hdfs-site.xml 去掉dfs.datanode.data.dir参数

然后重启dfs, stop-dfs.sh && stop-yarn.sh

jps 查看进程停止情况,如果还存在进程,可以使用kill -9 pid杀掉

start-dfs.sh && start-yarn.sh

再通过jps查看进程显示正常

Hadoop命令行工具

#查看进程状态

jps #包括:NameNode/SecondaryNameNode/DataNode/ResourceManager/NodeManager

HDFS集群报告

hdfs dfsadmin -report #查看集群整体状态,节点健康情况、磁盘使用等

hdfs fsck / #检查HDFS文件系统损坏情况

yarn node -list #查看所有NodeManager节点状态

yarn application -list #查看运行的应用

日志监控

主要看$HADOOP_HOME/logs下面的*namenode*.log*datanode*.log*resourcemanager*.log*nodemanager*.log

第三方监控工具【后续发布…】

1. Ganglia(分布式监控系统)

用于监控集群节点的硬件指标(CPU、内存、磁盘 I/O、网络等)和 Hadoop 组件指标。

2. Zabbix(企业级监控平台)

支持监控 Hadoop 集群的各项指标,并提供报警功能。

3. Prometheus + Grafana(云原生监控)

适合容器化或分布式集群的监控,支持灵活的指标查询和可视化。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容