ubuntu server安装hadoop和spark,并设置集群

安装server请看本人的上一篇博客
Ubuntu Server 20.04.2 安装

先前准备工作

创建 hadoop用户

在这里插入图片描述

创建用户之后,输入一下指令重启

shutdown -r now

登录 hadoop 用户

安装 ssh 和 vim

首先更新一下 apt 工具

sudo apt-get update

然后安装vim

sudo apt-get install vim

安装ssh server

sudo apt-get install openssh-server

安装 ssh 之后,使用 ssh localhost 命令,查看是否ok
在这里插入图片描述

过一会在设置免密登陆

apt-get install network-manager

查看 ip

在这里插入图片描述

并利用 cmd ping 一下,看看是否正确
在这里插入图片描述

查看和修改网络配置信息。
编辑 /etc/netplan 下的 .yaml 文件(注意自己的文件名)

vim /etc/netplan/***.yaml

在这里插入图片描述

假设IP地址修改为192.168.126.124,子网掩码24位即255.255.255.0,网关设置为192.168.126.2,DNS1:8.8.8.8。
这个部分,需要查看自己虚拟机的设置,来确定自己的ip,不要乱设置,否则会连不上网(非法ip)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后输入一下命令,

sudo netplan apply
ip addr

在这里插入图片描述

测试一下是否可行
windows ping 一下虚拟机
在这里插入图片描述
linux server 自己 ping 一下 www.baidu.com

在这里插入图片描述
一切正常

修改主机名与IP的映射

搭建一个三台机器的集群,分配的ip如下:

主机名称对应 ip地址
hadoop01192.168.126.124
hadoop02192.168.126.125
hadoop03192.168.126.126

修改相应的配置文件

sudo vim /etc/hosts

在该配置文件后加入
192.168.126.124 hadoop01
192.168.126.125 hadoop02
192.168.126.126 hadoop03

并注释掉
#127.0.1.1 hadoop01
在这里插入图片描述


# 安装hadoop

为了方便我们的下一步安装(主要是复制主机的信息),我们选择使用 XShell 来辅助完成,详情请参考我的上一篇博客 XShell的破解安装与连接

启动ssh 客户端

查看是否启动 ssh 客户端,客户端是用于连接其他从机,服务端是用于向其他客户端提供链接自己的方式

ps -e | grep ssh # 查看当前 ssh 的进,-e 表示every,利用管道线精确查找

在这里插入图片描述
倘若没有 ssh -agent 则需要使用 eval ssh-agent 启动客户端
在这里插入图片描述

安装 java

# 先更新更新apt
sudo apt update
sudo apt upgrade

输入下面的命令使用 apt 工具安装 java

# 安装 java
sudo apt install default-jdk default-jre

安装完成之后,查看 java 版本,检验是否安装成功

java --version

在这里插入图片描述

ssh 免密登陆

想要深入了解,查看我的另一篇博客
输入 ssh localhost 发现 ssh 远程登陆还需要密码,下面我们进行生成秘钥,免密登陆
在这里插入图片描述
生成 rsa 秘钥(公钥和私钥)

ssh-keygen -t rsa

设置root权限

我们创建的普通用户权限不足,不能修改网络配置信息,要先为普通用户赋予root权限,这需要切换到root用户下。首先为root用户设置一个密码并切换到root用户:

在这里插入图片描述

安装 hadoop

    下面对hadoop进行初步的配置。
    首先计划集群做一个功能的分配:
在这里插入图片描述
现在,我们下载Apache Hadoop的最新稳定版本。
本文所写内容引用Hadoop版本为2021年9月更新的3.2.2版本(虽然不知道为啥这个版本是最近更新的)。如有更新版本,请点击Binary download一栏下面的binary链接,进入下载页面获取到下载链接,作为下述代码的依据。

本文所提供的下载链接来自北京外国语大学的镜像站,速度++。镜像站所有Hadoop的下载地址:Index of /apache/hadoop/common (bfsu.edu.cn);另附上清华大学的镜像站地址:Index of /apache/hadoop/common (tsinghua.edu.cn)

在这里插入图片描述

使用非常好使的 wget 命令获取网络资源,wget不加参数,会下载到你当前的目录下

wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
tar -xvzf hadoop-3.2.2.tar.gz

在这里插入图片描述
接下来将解压后的目录移动到: /usr/local

sudo mv hadoop-3.2.2 /usr/local/hadoop
sudo mkdir /usr/local/hadoop/logs
sudo chown hadoop /usr/local/hadoop/logs

在这里插入图片描述

配置环境文件

编辑 ~/.bashrc 文件

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$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_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

在这里插入图片描述

然后

source ~/.bashrc

接下来,您需要在hadoop-env.sh中定义Java环境变量,以配置YARN、HDFS、MapReduce和Hadoop相关项目设置。
在这里插入图片描述
上一个加上 sudo

在这里插入图片描述

下面开始修改hadoop的配置文件:
进入配置文件目录

cd /usr/local/hadoop/etc/hadoop/

修改一下5个文件

  • core-site.xml ok
    使用命令:vim core-site.xml
<configuration><property><name>fs.defaultFS</name><!-- 告诉 NN 在那个机器,NN 使用哪个端口号接收客户端和 DN 的RPC请求--><value>hdfs://hadoop01:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/data/tmp</value><description>A base for other temporary directories.</description></property><property><name>hadoop.http.staticuser.user</name><value>user</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property>
</configuration>
  • hdfs-site.xml ok
    使用命令:vim hdfs-site.xml
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>hadoop03:50090</value><description>The secondary namenode http server address and port.</description></property>
</configuration>
  • mapred-site.xml
    使用命令:vim mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value><description>The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn.</description></property><!-- MR运行时,向10020端口请求存放历史日志--><property> <name>mapreduce.jobhistory.address</name><value>0.0.0.0:10020</value><description>MapReduce JobHistory Server IPC host:port</description></property>
<!-- 在浏览器上使用19888可以看历史日志--><property><name>mapreduce.jobhistory.webapp.address</name><value>0.0.0.0:19888</value><description>MapReduce JobHistory Server Web UI host:port</description>                                                                                     </property>
</configuration>
  • yarn-site.xml ok
    使用命令:vim yarn-site.xml
<configuration><!-- Site specific YARN configuration properties --><property><description>A comma separated list of services where service name should only contain a-zA-Z0-9_ and can not start with numbers</description><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><description>The hostname of the RM.</description><name>yarn.resourcemanager.hostname</name><value>hadoop02</value></property><property><description>The http address of the RM web application.</description><name>yarn.resourcemanager.webapp.address</name><value>${yarn.resourcemanager.hostname}:8088</value></property>
<!-- 日志聚集功能,这里原本默认false--><property><name>yarn.log-aggregation-enable</name><value>true</value></property>
<!-- 日志保留时间设置7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
</configuration>
  • workers
    使用命令:vim workers
    将内容全部清除掉,并更换为你的三台从机的主机名。
    在这里插入图片描述

  • xsync(虚拟机之间传送文件,传送至相同文件下)
    写一个脚本用于虚拟机之间通过scp传送文件

#!/bin/bash
#校验参数是否合法
if(($#==0))
thenecho 请输入要分发的文件!exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`echo 要分发的文件的路径是:$dirpath/$filename#循环执行rsync分发文件到集群的每条机器
for((i=1;i<=3;i++))
doecho ---------------------hadoop0$i-------------------- # 注意更换为自己的主机名称rsync -rvlt $dirpath/$filename  hadoop0$i:$dirpath
done

在这里插入图片描述

注:各位可以按需将循环中的内容更改为你自己命名的的主机名。如:
你的主机名叫xxx,则去掉循环,依次替换为rsync -rvlt $dirpath/$filename xxx:$dirpath
该命令的含义是 将你主机上的文件复制到 目标主机(/etc/hosts 文件给出了相应的ip,不成功时候,注意查看该文件配置情况)

  • xcall
    新建一个文件
vim call
#!/bin/bash
#在集群的所有机器上批量执行同一个命令
if(($#==0))
thenecho 请输入要操作的命令!exit;
fiecho 要执行的命令是$*#循环执行此命令
for((i=1;i<=3;i++))
doecho --------------------hadoop$i--------------------ssh hadoop$i $*
done

在这里插入图片描述

修改权限,并将它们移到 ~/bin/ 目录下

chmod 777 xsync 
chmod 777 xcall 
mkdir ~/bin	# 注意这个bin 是新建的
mv xsync ~/bin
mv xcall ~/bin/

至此,单台虚拟机上所需要的hadoop内容基本上配置完毕,下面开始配置Spark。


安装Spark

获取下载链接、并配置环境

从Downloads | Apache Spark网页中获取您所需的Spark版本(务必按照所安装的Hadoop版本进行选择,撰写之时最新版为3.1.1)。

清华大学镜像站网址

wget https://mirrors.bfsu.edu.cn/apache/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz
tar xvzf spark-3.1.1-bin-hadoop3.2.tgz
sudo mv spark-3.1.1-bin-hadoop3.2/ /usr/local/spark

安装Scala 配置Apache Spark 环境

下载解压之后,我们进行配置环境

vim ~/.bashrc
source ~/.bashrc

配置的内容如下所示

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

在这里插入图片描述

安装scala:
使用命令:sudo apt install scala -y,确认命令执行完毕的最后一行中的安装位置:

更改配置文件
切换到Spark的目录下(cd /usr/local/spark/conf):

将conf文件夹下的spark-env.sh.template重命名为spark-env.sh(mv spark-env.sh.template spark-env.sh),并添加以下内容(vim spark-env.sh):

export SCALA_HOME=/usr/share/scala-2.11
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_HOST=hadoop01
export SPARK_LOCAL_DIRS=/usr/local/spark
export SPARK_DRIVER_MEMORY=2g #内存
export SPARK_WORKER_CORES=2 #cpus核心数

在这里插入图片描述

在这里插入图片描述

不建议将虚拟机内存全部分配给他

在这里插入图片描述

将conf文件夹下的workers.template重命名为workers(mv workers.template workers),并修改为以下内容(vim workers)
在这里插入图片描述
在这里插入图片描述

hadoop01
hadoop02
hadoop03

至此,单台虚拟机上所需要的内容基本上配置完毕,我们只需要将虚拟机克隆两台然后配置各自的固定IP、主机名,重新生成ssh密匙即可。

克隆虚拟机

虚拟机的克隆

将虚拟机关机,点击工具栏的虚拟机-管理-克隆。
在这里插入图片描述

在这里插入图片描述

点击下一步
在这里插入图片描述

点击下一步
在这里插入图片描述

选择创建完整克隆
在这里插入图片描述

改个名,点完成
我们需要克隆出来两个,重复此步骤。

启动第二个(克隆出来的第一个)虚拟机。

虚拟机需要一个一个启动,因为克隆出来的虚拟机的ip是一样的,会导致冲突。需要一个一个修改启动。由于虚>拟机的ip没有发生改变,所以还可以使用xshell直接进行连接。

使用命令sudo vim /etc/hostname,将文件的内容修改为hadoop02;
编辑网络配置信息文件,使用下述命令查看网络配置文件名称,并使用vim编辑器打开它:

cd /etc/netplan
ls

注意保持里面的基本信息,并修改其中的ip地址到你设计的ip地址;

改完之后sudo netplan apply 进行 应用,ping 一个网址进行测试查看是否ok
在这里插入图片描述

然后重启虚拟机,按照文章之前的xshell建立新连接的步骤新建连接到hadoop02主机。同理设置最后一台虚拟机。

ssh 秘钥设置

想要深入了解,查看我的另一篇博客

在三台虚拟机上分别执行:

ssh-keygen -t rsa

这里是生成了rsa密钥

然后将这三个密钥在三台虚拟机上相互传输
首先,在hadoop01上向hadoop01、hadoop02、hadoop03发送

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

在这里插入图片描述

第一个输入yes,第二个输入密码
在这里插入图片描述

输入ssh查看是否设置成功
重复执行。

下面测试xcall和xsync命令

使用xcall来关闭三台虚拟机上的防火墙,在hadoop01的终端上输入(起始任意一台虚拟机都可以)

xcall sudo ufw disable	

倘若出现“/bin/bash^M: bad interpreter“的,博客
解决方案
使用linux命令dos2unix filename,直接把文件转换为unix格式;

然后我们查看 xcall sudo ufw disable 结果
在这里插入图片描述
测试发现没毛病

hadoop初次使用

运行hadoop

还之前的那个 hadoop 安装一样,初始化 namenode
hadoop namenode -format

在 /usr/local/hadoop/sbin 中运行
start-all.sh
jsp 查看进程
在这里插入图片描述

通过 web 访问试一试是否成功
192.168.182.159:9870
在这里插入图片描述

查看JPS情况
hadoop01
在这里插入图片描述

hadoop02
在这里插入图片描述

hadoop03
在这里插入图片描述

或者是使用 xcall
在这里插入图片描述

参考博客wdz小站
参考博客

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

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

相关文章

LeetCode 第 35 场双周赛(216/2839,前7.61%)

文章目录1. 比赛结果2. 题目1. LeetCode 5503. 所有奇数长度子数组的和 easy2. LeetCode 5505. 所有排列中的最大和 medium3. LeetCode 5504. 使数组和能被 P 整除 medium4. LeetCode 5506. 奇怪的打印机 II hard1. 比赛结果 做出来3题。继续加油&#xff01; 全国排名&#…

Linux Ubuntu 安装 anaconda3和 Pycharm 社区版本

恰巧大数据实验安装 Anaconda & Pycharm&#xff0c;借此机会写篇博客分享一下 Anaconda 下载 Anaconda 清华镜像网站看一看 下载之后&#xff0c;放入 linux文件夹中 安装 Anaconda bash 下载的文件名 之后&#xff0c;按照提示进行输入信息(大多数都是 回车) 一定…

LeetCode 第 207 场周赛(245/4115,前5.95%)

文章目录1. 比赛结果2. 题目1. LeetCode 5519. 重新排列单词间的空格 easy2. LeetCode 5520. 拆分字符串使唯一子字符串的数目最大 medium3. LeetCode 5521. 矩阵的最大非负积 medium4. LeetCode 5522. 连通两组点的最小成本 hard1. 比赛结果 做出来3题&#xff0c;第四题试了…

《软件工程》individual project开发小记(一)

今天周四没有想去上的课&#xff0c;早八点到中午11点半&#xff0c;下午吃完饭后稍微完善了一下&#xff0c;目前代码可以在dev c和vs2012上正常运行,性能分析我看资料上一大坨,考虑到目前状态不太好,脑袋转不动了,决定先放一放去看看邹老师以前的软工博客以及学长学姐们的经验…

JavaScript中九九乘法表制作

练习一下表格&#xff0c;利用Javascript制作出来&#xff1a; 代码赏析&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

机器学习算法--协同过滤算法

0. 关键词 推荐算法长尾理论UserCFItemCF 1. 推荐算法 互联网的飞速发展使我们进入了信息过载的时代&#xff0c;搜索引擎可以帮助我们查找内容&#xff0c;但只能解决明确的需求。为了让用户从海量信息中高效地获得自己所需的信息&#xff0c;推荐系统应运而生。 推荐系统…

利用JavaScript制作星星金字塔

主要练习&#xff1a; 代码赏析&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&q…

机器学习算法--ALS

本文转载自&#xff1a;endymecy|ALS 一、什么是ALS ALS是交替最小二乘&#xff08;alternating least squares&#xff09;的简称。在机器学习中&#xff0c;ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给商品的打分&#xff0c;来推断每个用户…

04.卷积神经网络 W2.深度卷积网络:实例探究(作业:Keras教程+ResNets残差网络)

文章目录作业1&#xff1a;Keras教程1. 快乐的房子2. 用Keras建模3. 用你的图片测试4. 一些有用的Keras函数作业2&#xff1a;残差网络 Residual Networks1. 深层神经网络的问题2. 建立残差网络2.1 identity恒等模块2.2 卷积模块3. 建立你的第一个残差网络&#xff08;50层&…

安装Python第三方库的常用方法和注意事项

安装Python的库 这里&#xff0c;我来介绍一下平时我们安装python库的几种常用方法和一些注意事项。 第一种&#xff0c;使用我们的pip工具 第二种&#xff0c;使用IDE中集成的功能进行一键安装(以Pycharm 为例) 第三种&#xff0c;使用Anaconda进行安装 使用 pip 工具安装第三…

LeetCode 968. 监控二叉树(DFS)

文章目录1. 题目2. 解题1. 题目 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#xff…

LeetCode 576. 出界的路径数(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个 m n 的网格和一个球。 球的起始坐标为 (i,j) &#xff0c;你可以将球移到相邻的单元格内&#xff0c;或者往上、下、左、右四个方向上移动使球穿过网格边界。 但是&#xff0c;你最多可以移动 N 次。 找出可以将球移出边界的路径数量…

04.卷积神经网络 W3.目标检测

文章目录1. 目标定位2. 特征点检测3. 目标检测4. 滑动窗口的卷积实现5. Bounding Box预测&#xff08;YOLO&#xff09;6. 交并比7. 非极大值抑制8. Anchor Boxes9. YOLO 算法10. 候选区域作业参考&#xff1a; 吴恩达视频课 深度学习笔记 1. 目标定位 定位分类问题&#xff…

LeetCode 988. 从叶结点开始的最小字符串(DFS)

文章目录1. 题目2. 解题1. 题目 给定一颗根结点为 root 的二叉树&#xff0c;树中的每一个结点都有一个从 0 到 25 的值&#xff0c;分别代表字母 a 到 z&#xff1a;值 0 代表 a&#xff0c;值 1 代表 b&#xff0c;依此类推。 找出按字典序最小的字符串&#xff0c;该字符串…

Humble Numbers USCAO chapter 3.1

...目测我自己写坑定超时,就去NOCOW看了下,题解,官方是每个质数与已有的humble想乘取大于最大humble的最小数即是新的最大humble, 然后我就写了个个,开始嫌麻烦用set存,超时的飞起。然后全部改成数组,结果case 6还是超时,想了半天感觉和别人的题解也没啥差别,为什么运行时间差这…

LeetCode 636. 函数的独占时间(栈)

文章目录1. 题目2. 解题1. 题目 给出一个非抢占单线程CPU的 n 个函数运行日志&#xff0c;找到函数的独占时间。 每个函数都有一个唯一的 Id&#xff0c;从 0 到 n-1&#xff0c;函数可能会递归调用或者被其他函数调用。 日志是具有以下格式的字符串&#xff1a;function_id…

04.卷积神经网络 W3.目标检测(作业:自动驾驶 - 汽车检测)

文章目录1. 问题背景2. YOLO 模型2.1 模型细节2.2 分类阈值过滤2.3 非极大值抑制2.4 完成过滤3. 在照片上测试已预训练的YOLO模型3.1 定义类别、anchors、图片尺寸3.2 加载已预训练的模型3.3 模型输出转化为可用的边界框变量3.4 过滤边界框3.5 在图片上运行测试题&#xff1a;参…

LeetCode 775. 全局倒置与局部倒置(归并排序/二分查找/一次遍历)

文章目录1. 题目2. 解题2.1 归并排序求逆序度2.2 二分查找2.3 一次遍历1. 题目 数组 A 是 [0, 1, ..., N - 1] 的一种排列&#xff0c;N 是数组 A 的长度。 全局倒置指的是 i,j 满足 0 < i < j < N 并且 A[i] > A[j] &#xff0c;局部倒置指的是 i 满足 0 < i…

使用 ServiceStack 构建跨平台 Web 服务

本文主要来自MSDN杂志《Building Cross-Platform Web Services with ServiceStack》&#xff0c;Windows Communication Foundation (WCF) 是一个相当优秀的服务框架&#xff0c;当我们讨论跨平台的服务的时候&#xff0c;虽然WCF对WebService的支持还行&#xff0c;在面对一些…

Hive基础(一)

一、Hive是什么 Hive是基于Hadoop的一个数据仓库工具(离线)&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。&#xff0c;它能接收用户输入的sql语句&#xff0c;然后把它翻译成mapreduce程序对HDFS上的数据进行查询、运算&#xff0c;…