ubuntu18.04下hadoop3.0.2+spark2.4.3分布式集群配置及测试

本文介绍在Ubuntu18.04系统下,进行Hadoop3.0.2和Spark2.4.3分布式集群的配置及测试。涵盖集群基本环境搭建,包括版本、用户、安装目录和环境变量设置;添加集群用户及实现免密登录;详细阐述Hadoop和Spark集群的配置过程,并对两个集群进行启动、文件操作、WebUI查看及单词统计等测试。

ubuntu18.04下hadoop3.0.2+spark2.4.3分布式集群配置及测试

背景:

这学期课设要用sparkmlib的聚类和分类算法做一个文本分类模型,前期环境上做了很多工作,现在做一下总结,本来网上的资料足够多了,但是水平参此不齐,很容易掉进坑里,加上自己也有很多发现,所以还是写一篇吧。
对了,有一点就是大家在查资料还是用谷歌吧,尽量去看一下比较官方的资料,比如官方文档,大学实验室,机构等的那种,记得货比三家,抱着质疑的态度,理解了再采用,少走一些弯路,我在学习的过程中经常看厦门大学实验室的这个网站,感觉还不错。
不足之处,请多多指正!

1.集群基本环境

1.1.版本

 ubuntu18.04  jdk1.8.0_211   hadoop-3.0.2  spark-2.4.3-bin-hadoop2.7  scala-2.11.8

1.2.用户

注意分布式的集群每个机器要有一个统一的用户
此次我的主机名为aiden,即管理节点;同学的为wang1234,即数据节点:
hadoop@adien(master)
hadoop@wang1234(slaves)
本文就以这两台主机为例
/etc/hosts为

127.0.0.1	localhost
#127.0.1.1	aiden
192.168.43.200 aiden
192.168.43.155 wang1234

1.3.软件安装目录和环境变量

软件安装目录和环境变量也要一样(不知道叫软件合适不合适…),如果你是一个人作分布式,配好一个分发给节点,这个问题是不存在的。我们小组8个人刚开始是先自己搞自己的,结果最后在测试的时候会有类似于JAVA_HOME */ */ * / NOT EXISTS 等之类的情况,我们把上述目录统一以后,环境变量统一以后就ok了,不过不知道还有其他的解决办法没有,因为后续还有东西做,就先不管了。

1.3.1.安装目录

我们的结构:软件统一放在/opt/bigdata下面:
在这里插入图片描述
在这里插入图片描述

1.3.2. 环境变量

hadoop用户下 ~/.bashrc添加

#java
export JRE_HOME=${JAVA_HOME}/jre

export JAVA_HOME=/opt/bigdata/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH CLASSPATH

#hadoop
export HADOOP_HOME=/opt/bigdata/hadoop-3.0.2
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin

export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

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


#scala
export SCALA_HOME=/opt/bigdata/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin

#spark

export SPARK_HOME=/opt/bigdata/spark-2.4.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

2.添加集群用户及免密登录

2.1.添加hadoop用户赋予权限

2.1.1添加用户
sudo adduser hadoop
2.1.2赋予权限

注意很多人因为新生成的用户权限低,直接就把它提成root级的了,在sudoers里面添加进去,这是非常危险的!!!
以我的文件目录结构为例,应该只给它使用sudo命令的权限,以及/opt/bigdata下的所有文件操作权限,就足够了。

切换到root用户

su

给hadoop用户使用sudo的权限

usermod hadoop -a -G  sudo

切换到hadoop用户

su hadoop

给hadoop用户/opt/bigdata下的所有文件操作权限

sudo chmod -R  700 /opt/bigdata

2.2.hadoop免密登录

过程原理(图片来自网友的文章):

2.2.1.自身免密登录

hadoop用户在adein(master)主机下

 ssh-keygen -t rsa
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

权限设置(权限过高可能会报错的,也很危险)

chmod 600 ~/.ssh/authorized_keys

同理hadooop用户在wang1234(slaves)主机下操作

2.2.2.互相免密登录(这点我们做的不好,用QQ相互发送的,很笨,大家可以找更好的办法)

如果要实现hadoop用户在master免密登录slaves,那么这样操作:

2.2.2.1 在adein(master)主机hadoop用户下,复制显示的内容
 cat ~/.ssh/id_rsa.pub
2.2.2.2 在wang1234(slaves)主机hadooop用户下,打开密钥库,将复制内容拷贝到slaves的密钥库中
sudo gedit ~/.ssh/authorized_keys

3.hadoop集群配置

3.1.hadoop配置

进入/opt/bigdata/hadoop-3.0.2/etc/hadoop给配置文件追加配置

3.1.1 hadoop-env.sh
export JAVA_HOME=/opt/bigdata/jdk1.8.0_211
export HADOOP_HOME=/opt/bigdata/hadoop-3.0.2
3.1.2 hdfs-site.xml
<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/opt/bigdata/hadoop-3.0.2/dfs/name</value>
		<final>true</final>
	</property>


<property>
	<name>dfs.datanode.data.dir</name>
	<value>/opt/bigdata/hadoop-3.0.2/dfs/data</value>

	<final>true</final>
</property>



<property>
	<name>dfs.replication</name>
	<value>1</value>



</property>
<property>
	<name>dfs.permissions</name>
	<value>false</value>
</property>
</configuration>
3.1.3 core-site.xml
<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://aiden:9000</value>
  </property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/bigdata/hadoop-3.0.2/tmp</value>
    <description>Abase for other temporary directories.</description>
</property>
</configuration>
3.1.4 mapred-site.xml
<configuration>

 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
<property>
        <name>mapreduce.application.classpath</name>
        <value>
            ${HADOOP_HOME}/etc/hadoop,
            ${HADOOP_HOME}/share/hadoop/common/*,
            ${HADOOP_HOME}/share/hadoop/common/lib/*,
            ${HADOOP_HOME}/share/hadoop/hdfs/*,
            ${HADOOP_HOME}/share/hadoop/hdfs/lib/*,
            ${HADOOP_HOME}/share/hadoop/mapreduce/*,
            ${HADOOP_HOME}/share/hadoop/mapreduce/lib/*,
            ${HADOOP_HOME}/share/hadoop/yarn/*,
            ${HADOOP_HOME}/share/hadoop/yarn/lib/*
        </value>
    </property>

</configuration>
3.1.5 yarn-site.xml
 <configuration>

<!-- Site specific YARN configuration properties -->

<!-- Site specific YARN configuration properties -->

     <property>
	     <name>yarn.nodemanager.aux-services</name>
	     <value>mapreduce_shuffle</value>
     </property>
     <property>
	     <name>yarn.resourcemanager.hostname</name> 
	     <value>aiden</value>
     </property>
     <property>
	     <name>yarn.resourcemanager.webapp.address</name>
	     <value>aiden:8088</value>
     </property>

</configuration>
3.1.6 workers

workers相当于老版本的slaves,里面写入数据节点的主机名,一行一个,我这里的是同学的wang1234

wang1234

4.hadoop集群测试

4.1.启动haoop集群

namenode初始化

hdfs namenode -format

在adien(master)主机/opt/bigdata/hadoop-3.0.2/sbin下

./start-all.sh

启动之后在各个主机用jps命令查看启动的模块是否正常

jps

4.2.hdfs文件系统操作

创建目录

hadoop fs -mkdir /input

本地创建一个文件,随便写点东西

vim a.txt

上传文件

hadoop fs -put a.txt /input

查看文件

hadoop fs -cat  /input/a.txt

4.3.webui查看

上述配置中是缺省端口配置的,所以是默认的端口
namenode节点查看,浏览器地址栏aiden:9870
datanode节点查看,浏览器地址栏wang1234:9864
资源管理查看,浏览器地址栏aiden:8088

4.4.单词统计测试

进入/opt/bigdata/hadoop-3.0.2/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-3.0.2.jar wordcount /input /output

查看结果(不详细写了)

hadoop fs -cat  /output/p*

5.spark集群配置

5.1.spark配置

/opt/bigdata/spark-2.4.3-bin-hadoop2.7/conf
spark-env.sh

export SCALA_HOME=${SCALA_HOME}

export JAVA_HOME=${JAVA_HOME}

export SPARK_MASTER_IP=aiden

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

slaves

wang1234

6.spark集群测试

6.1.启动spark

/opt/bigdata/spark-2.4.3-bin-hadoop2.7/sbin

 ./start-all.sh

6.2.spark-shell下单词统计

进入spark-shell

spark-shell

单词统计

val textFile = sc.textFile("hdfs://aiden:9000/input/a.txt")
val wordCounts = textFile.flatMap(line=>line.split(" ")).map(word=>(word,1)).reduceByKey((a,b)=>a+b)
wordCounts.collect();
内容概要:本文围绕基于CNN-Transformer混合模型的锂电池SOH(State of Health,健康状态)预测估计展开研究,提出一种融合卷积神经网络(CNN)与Transformer架构的深度学习方法,用于精准建模电池容量衰退过程。该方法充分发挥CNN在局部特征提取方面的优势以及Transformer在捕捉长时间序列依赖关系上的强大能力,有效提升了锂电池健康状态预测的准确性与稳定性。研究内容涵盖数据预处理、模型结构设计、训练优化流程及预测结果可视化等关键环节,适用于电池退化趋势分析与剩余使用寿命(RUL)评估,具有较强的工程应用价值。; 适合人群:具备Python编程能力和深度学习理论基础的高校研究生、科研人员及从事新能源电池管理系统开发的工程技术人才,特别适合聚焦于锂电池寿命预测、故障诊断与健康管理等方向的研究者。; 使用场景及目标:①掌握CNN与Transformer在时间序列回归任务中的协同建模机制;②实现高精度锂电池SOH预测模型构建与训练;③服务于电动汽车续航管理、储能系统运维决策与电池老化特性分析;④支持学术论文复现、科研项目验证及工业级电池管理算法开发。; 阅读建议:此资源以代码实践为核心驱动,建议读者结合所提供的完整Python代码进行动手实现,深入理解模型各模块的设计逻辑与训练技巧,并可通过调整网络结构或引入新数据集进一步拓展至其他时序预测任务中。
我们把同一标的(昆仑万维,现价 43.20 元,2026-07-31 收盘)交给三套系统,各出一份独立分析: **C 报告(CoordClaw 基于管理学多智能体系统)**——投研级。它由五个角色构成:周婷整合撰写、李静出基本面、王芳出技术面、赵明出风险、陈默做 PM 终审。最终产物是一份 38 项分级风险清单(P0×4 / P1×12 / P2×12 / P3×6 / 尾部×4)、双源交叉验证的财务数据(EM/Sina 差异 <0.01%)、严格的口径纪律,以及一份原样保留的"待核实"清单。结论冷冰冰:高风险,不建议参与。 **D 报告(DeepSeek)**——信息整理级。它把"4+3 AGI 战略"、天工 AI、Opera 浏览器、StarMaker 拆得很漂亮,核心财务数据(营收 81.98 亿、归母 -15.93 亿)也没算错。但整篇没有技术面、没有量化风控,更关键的是——它完全没提实控人已减持 75%、质押状态未知、净现金仅 15.19 亿且续航只有 1.26~1.81 年这些要命的负面。这是典型的"选择性呈现"。 **K 报告(Kimi)**——以对比评估的方式呈现。它搭起"数据准确性 / 分析维度 / 结论合理性"的三维框架,把几份材料放在一起对照,给出各自的强弱判定。它的维度意识比 D 报告更自觉,但作为一份独立分析,它对"评估方法本身的信度"交待不足,部分引用的核对也不够彻底。 结果两家的结论高度一致。C 报告(多智能体)被评投研级、居首;D 报告(DeepSeek 自己写的)被评信息整理级、居中;K 报告(Kimi 自己那份)维度较全但核验深度有限,排在两者之间。DeepSeek 的那份评估把 C 给了五星、D 三星、K 四星;Kimi 的那份评估也独立地把最高分给了 C。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值