当前位置:首页 > CN2资讯 > 正文内容

云服务器外网 云服务器外网节点搭建

19小时前CN2资讯

基于三台云服务器搭建Hadoop3.3的分布式集群

之前写过基于三台云服务器搭建Redis,但是时过境迁那篇文章已经脱离时代了(主要是作者很菜)那时候我连Docker都没玩过更别说大数据了,现在需求推动人进步,这次我又来记录我搭建Hadoop的集群的过程。

确认服务器信息和其他

本人使用的是云服务器相关配置如下:

服务器信息

时间

配置

带宽

硬盘

价格

天翼云主机

一年

4核8G

5M

40G

366

腾讯云主机

一年

2核4G

3M

50G

468

亿速云主机

一月

2核2G

3M

20G

39

阿里云主机(备用)

一年

1核2G

1M

40G

117(学生优惠续费)

如果有上云需求的小伙伴建议还是买天翼云,真的很便宜(但是界面友好度还是不够,很多时候功能需要自己去找,其次我还是推荐腾讯云和阿里云毕竟做的久沉淀的东西越多,而且腾讯元的售后服务非常不错这个我很想点个赞,我遇到的问题很快能帮我解决而且提供技术参考!)白飘党还是看预算的,当然也又亚马逊云,不过得需要VISA信用卡,看你选择喽!此处不放连接了,有需要的自己去看。

PS:我还用过华为云和百度云,总结下来华为云是最让我。。。。的,无脑👎(个人见解!)

SSH工具:FinalShell(真的良心的国产SSH软件,从我从业以来一直在用!个人感觉非常好!)

IP地址(为了安全脱敏了):

master:182...0

cluster1:1...90

cluster2:42...25

配置服务器相关设置

2.1、所有服务器设置hostname和host

首先的设置hostname,如果你拿到新主机一定要设置hostname和hosts文件

vim /etc/hostname

然后设置成你想要的名称

vim /etc/hosts

之后可以将如下文件粘贴过去

你本机的ip(内网) localhost ::1 你的hostname 你的hostname ::1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 你本机的ip(内网) 你的hostname cluster1的外网ip) cluster1的hostname cluster2的外网ip) cluster2的hostname

这个host文件是以master为例,如果是在cluster机器上只需要把各自的机器换成master的外网ip和master的hostname

如果你使用的是finalshell的话,可以直接使用它内部的文件系统去寻找和打开,它会自动保存你修改的文件,之后重启机器

reboot
2.2、所有服务器设置ssh免登录本地连接
ssh-keygen -t rsa -P ''

将生成的秘钥添加到本地验证key中

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

之后

ssh localhost

输入yes和你的密码后即可看到你的控制台清空了,代表你已经重新连接这台服务器了了

切换到master主机连接cluster1和cluster2服务

ssh cluster1ssh cluster2

输入密码后即可连接,如果连接失败,请检查各自的服务器是否开放端口和ssh服务启动以及ssh localhost可以成功。

连接之后会切换到对应的服务器,这个时候再新建一个master节点的session terminal,然后输入如下命令:

scp ~/.ssh/id_rsa.pub 连接的用户(我使用的是root)@你的cluster1 hostname:~/scp ~/.ssh/id_rsa.pub 连接的用户(我使用的是root)@你的cluster2 hostname:~/

出现进度条则表示已经将服务器的验证公钥传输到两个从节点服务器了,可以切换到服务器去查看$home下,确认存在后在两个从节点服务器中输入如下命令:

```shell cat ~/id_rsa.pub >> ~/.ssh/authorized_keys ```

接着为了安全起见删除从master传递过来的公钥文件

rm ~/id_rsa.pub
2.3、三个服务器安装Java和Hadoop

JDK8不多说了,官网下载Linux版本后上传到三个服务器

在/home下创建java文件夹和Hadoop

cd /homemkdir java mkdir hadoop

将上传的文件包解压到/home/java下

tar -zxvf jdk1.8.tar.gz -C /home/java

接着将Hadoop包下载,目前最新的版本我用的是3.3

tar -zxvf hadoop3.3.tar.gz -C /home/hadoop

解压后建议将jdk和Hadoop解压后的文件夹重命名,我的是jdk1.8和hadoop-3.3.1

解压后需要设置环境变量:

vim /etc/profile

将下面的代码追加到后面

export PATH=/bin:/usr/bin:$PATH #Java Configuration export JAVA_HOME=/home/java/jdk1.8 export JRE_HOME=/home/java/jdk1.8/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=.:${JAVA_HOME}/bin:$PATH #Hadoop Configuration export HADOOP_HOME=/home/hadoop/hadoop-3.3.1 export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH

Esc回车后按:wq保存,接着使我们的配置生效的话使用如下命令

source ~/.bashrc

测试一下环境变量:

java -version

如果出现了Java的环境变量则代表生效了

三台机器只需要做一次,其他的复制过去就可以了

到这我们的第一步就算完成了,接着就是Hadoop的集群设置了

Hadoop搭建

3.1、创建Hadoop文件夹
mkdir ~/hadoop mkdir ~/hadoop/tmp mkdir ~/hadoop/var mkdir ~/hadoop/dfs mkdir ~/hadoop/dfs/name mkdir ~/hadoop/dfs/data
3.2、修改core-site.xml文件
cd /home/hadoop/hadoop-3.3.1/etc/hadoopvim core-site.xml<configuration> <property> <name>hadoop.tmp.dir</name> <!-- 由于我的是root用户所以写成root,如果你创建的文件夹不在root下记得换掉 --> <value>/root/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name></name> <value>hdfs://你的hostname:9000</value> </property> <property> <name>hadoop.http.staticuser.user</name> <!-- 指定静态角色,HDFS上传文件的时候需要 --> <value>root</value> </property> </configuration>

Esc按:wq保存

3.3、修改和文件

因为相对路径不能识别所以使用绝对路径

vim

将注释的 export JAVA_HOME =

改为 export JAVA_HOME=/home/java/jdk1.8

Esc按:wq保存

同理修改

vim
3.4、修改hdfs-site.xml

下面的HDFS的存放路径,可以根据自己机器更改。

<configuration> <property> <name>dfs.name.dir</name> <!-- 由于我的是root用户所以写成root,如果你创建的文件夹不在root下记得换掉 --> <value>/root/hadoop/dfs/name</value> <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description> </property> <property> <name>dfs.data.dir</name> <value>/root/hadoop/dfs/data</value> <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <!-- 如果不设置的话,则需要在host文件中配置好映射你的hostnamme --> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property> </configuration>
3.5、修改mapred-site.xml

他是确定执行mapreduce的运行框架配置

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

Esc按:wq保存

3.6、修改yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>你的hostname</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>${yarn.resourcemanager.hostname}:8032</value> </property> <property> <description>The address of the scheduler interface.</description> <name>yarn.resourcemanager.scheduler.address</name> <value>${yarn.resourcemanager.hostname}:8030</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> <property> <description>The https adddress of the RM web application.</description> <name>yarn.resourcemanager.webapp.https.address</name> <value>${yarn.resourcemanager.hostname}:8090</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>${yarn.resourcemanager.hostname}:8031</value> </property> <property> <description>The address of the RM admin interface.</description> <name>yarn.resourcemanager.admin.address</name> <value>${yarn.resourcemanager.hostname}:8033</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>8182</value> <discription>每个节点可用内存,单位MB,默认8182MB</discription> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>

说明:yarn.nodemanager.vmem-check-enabled这个的意思是忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉。

Esc按:wq保存

3.7、修改集群配置
vim workers

将三台机器的hostname写入进去,一行一个

所有的操作只需要在master进行一次即可,其他节点的配置只需要将/etc/hadoop的文件直接拷贝即可

scp -r //home/hadoop/hadoop-3.3.1/etc/hadoop 用户(我是用的是root)@cluster1:/home/hadoop/hadoop-3.3.1/etc/hadoop

或者FinalShell直接将文件夹下载后再上传拿过去

3.8、格式化NameNode和DataNode
cd /home/hadoop/hadoop-3.3.1/bin./hdfs namenode -format ./hdfs datanode -format

格式化成功后会生成version文件在~/hadoop/dfs/data/current中看到他基本上就成功了,但是他只会出现在master服务器中,并不会在两个从节点出现,因为从节点不会启动ResourceManager和SecondaryNameNode的服务。

测试搭建

cd /home/hadoop/hadoop-3.3.1/sbin

第一次登录会问你是否连接,输入yes后再输入密码就ok了

由于ssh已经测试过了,所以不会出现询问。

当主节点启动完成后在主节点和两个从节点输入jps查看

接着访问master节点的页面

上述分别为8088端口和50070端口的访问页面,出现三个节点则代表你的分布式hadoop集群已经搭建成功了

Hadoop知识回顾

Hadoop是一个开源的大数据框架,是一个分布式计算的解决方案。

Hadoop包含三个核心:

一、HDFS

HDFS是分布式文件系统,有高容错性的特点,可以部署在价格低廉的服务器上,主要包含namenode和datanode。

Namenode是hdfs中文件目录和文件分配管理者,它保存着文件名和数据块的映射管理,数据块和datanode列表的映射关系。

其中文件名和数据块的关系保存在磁盘上,但是namenode上不保存数据块和datanode列表的关系,该列表是通过datanode上报建立起来的。

二、YARN

主要由:ResourceManager,nodeManager,ApplicationMaster,Container组成

ResourceManager(RM)
主要接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM),一个集群只有一个。

NodeManager(NM)
主要是节点上的资源管理,启动Container运行task计算,上报资源、container情况给RM和任务处理情况给AM,整个集群有多个。

ApplicationMaster(AM)
主要是单个Application(Job)的task管理和调度,向RM进行资源的申请,向NM发出launch Container指令,接收NM的task处理状态信息。每个应用有一个。

Container:
是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。当AM向RM申请资源时,RM为AM返回的资源便是Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用Container中描述的资源。

三、MapReduce

Hadoop的两个核心解决了数据存储问题(HDFS分布式文件系统)和分布式计算问题(MapRe-duce)。

MapReduce是hadoop的一种离线计算框架,适合离线批处理,具有很好的容错性和扩展性,适合简单的批处理任务。

Hadoop的特点:

一、扩容能力:能可靠地存储和处理千兆字节的数据。

二、成本低:可以通过普通机器组成的服务器群来分发以及处理数据,这些服务器群总计可达数千个。

三、高效率:通过分发数据,HADOOP可以在数据所在的节点上并行地处理他们,这使得处理的非常迅速。

四、可靠性:hadoop能自动地维护数据的多份副本,并且在任务失败后能自动的重新部署计算任务。

结束记录

在部署云服务器的时候会遇到很多问题,比如主机通信,安全组端口未开放,服务器无法登录之类的问题,下面我做个我目前遇到的问题以及解决方案

1、主机通信,确保主机可以ping通,如果ping不通则代表你的服务器是有问题的,但是这种情况很少。

2、安全组端口未开放导致端口50070或8848的页面无法访问,找你的安全组添加各自的IP访问即可。

3、服务器无法访问:这个情况我是重点要说的,便宜的云服务器由于没有任何安全措施设置的话会收到一个名叫kdevtempfsi的挖矿病毒攻击,而且我的每一台云服务器都遭受了该攻击,这个病毒导致我ssh目录和cron目录被删除,导致我无法连接服务器,而且攻击十分频繁!基本上每天白天我清理掉后晚上又会被继续攻击(主要是我的安全意识低下)

解决方案:

使用VNC登录服务器(在SSH不可用的前提下)

systemctl status sshd

查看ssh服务状态后如果是dead的话则需要检查内部情况

sshd -t

查看是否缺少了文件目录/var/empty/sshd

如果缺少则创建该目录

mkdir /var/empty mkdir /var/empty/sshd

如果不缺少的话则直接启动ssh服务

service sshd start

此时应该可以连接SSH,

登录SSH后找到病毒文件地址

find / -name kdevtmpfsi find / -name kinsingrm -f 病毒的地址

找到进程并干掉它

ps -ef|grep kinsing ps -ef|grep kdevtmpfsi kill -9 pid

接着需要找到定时任务去kill

crontab -l

如果出现一条记录绑定IP且是国外的,那么就是这个挖矿病毒的,接着删除它

crontab -r

如果病毒反复攻击你的服务器,你要检查你的安全组放行,只针对固定IP固定端口开放,同时搭建Hadoop时没有启用kerberos认证,所以在服务安全上hadoop是不可靠的!

4、伴随着第三种情况,还会出现hadoop子节点异常造成僵尸进程占满CPU和内存资源,这时候需要kill -9 命令并重启机器可以解决。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22479.html

    分享给朋友:

    “云服务器外网 云服务器外网节点搭建” 的相关文章

    如何有效解决VPS硬盘占用过高问题:优化与清理指南

    1.1 系统日志和缓存文件积累 系统日志和缓存文件是VPS硬盘占用过高的常见原因之一。每次系统运行或应用程序执行时,都会生成日志文件来记录操作和错误信息。这些日志文件随着时间的推移会逐渐积累,占用大量磁盘空间。缓存文件也是如此,它们用于加速系统或应用程序的运行,但如果不定期清理,也会占用大量空间。我...

    如何获取Cloudflare API Token并设置权限指南

    什么是Cloudflare API Token 在使用Cloudflare提供的各种服务时,我常常需要进行自动化管理。此时,Cloudflare API Token便成为了我的好帮手。它是一种安全凭证,专门用来访问和操作Cloudflare的多个功能。这使得我能够在编程和自动化中灵活运用Cloudf...

    RackNerd虚拟主机服务评测:高性价比的选择与多样化方案

    RackNerd是一家相对年轻但极具潜力的虚拟主机商,自2017年成立以来,一直致力于为客户提供高性价比的服务。作为我在寻找虚拟主机时发现的一家重要供应商,他们的服务范围非常广泛,包括虚拟主机、VPS主机、独立服务器以及服务器托管等,我着实被他们多样的产品所吸引。 RackNerd不仅限于某个特定地...

    VPSDime评测:高性价比的VPS服务选择

    VPSDime概述 在如今互联网发展的浪潮中,各种主机服务商层出不穷,VPSDime作为一家成立于2013年的海内外主机服务商,引起了我的关注。它隶属于Nodisto IT,专注于VPS业务,提供多种类型的虚拟专用服务器。这对我这样的用户来说,选择合适的主机服务显得尤为重要,尤其是对于需要高性能和高...

    狗云实名认证的重要性与服务体验

    狗云简介 提起狗云(Dogyun),首先让我想起的是它在国内主机服务商中崭露头角的那段经历。成立于2019年,这家由国人创办的云服务平台,积极响应了市场对高质量、低价格VPS服务的需求。服务范围覆盖美国、日本和中国香港等地,让不少技术爱好者和企业客户看到了更多选择的可能。由于其价格相对亲民,狗云逐渐...

    QQ邮箱服务器完全指南:配置、安全性与优化技巧

    QQ邮箱服务器概述 QQ邮箱是由腾讯公司推出的一款广受欢迎的电子邮件服务。它的优势不仅在于强大的存储容量,还有丰富的功能,适合个人和企业用户使用。很多人都习惯使用QQ邮箱来发送、接收邮件,因此有必要了解其背后的邮件服务器。 在我使用QQ邮箱的过程中,发现它使用的是腾讯自家搭建的邮件服务器。这些服务器...