当前位置:网站首页 > Haskell函数式编程 > 正文

服务器部署方式集群主备(服务器集中部署)



完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上。

分别处于Active和Standby中

 hadoop可以创建多个副本到各个datanode中实现高可用,但是如果要防止出现问题必须给namenode做一个备用服务器。

服务器失效之后在故障转移域切换。

ZooKeeper集群最好是3台及以上的奇数

作为一个ZK集群的客户端,用来监控NN的状态信息。每个运行NN的节点必须要运行一个zkfc。zkfc提供以下功能:

zkfc定期对本地的NN发起health-check的命令,如果NN正确返回,那么这个NN被认为是OK的。否则被认为是失效节点。

Namenode主要维护两个文件,一个是fsimage,一个是editlog。
fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等,对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等
editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。

 nameNode之间的数据共享是通过journalNode(保存的是editlog)

在Active Namenode与StandBy Namenode之间的绿色区域就是journalNode(日志节点),当然数量不一定只有1个,作用相当于NFS共享文件系统,Active Namenode往里写editlog数据,StandBy再从里面读取数据进行同步。日志节点其实是运行在各个dataNode中的。

 6台服务器的静态ip可以scp复制

 

 不想写255.255.255.255可以换成PREFIX=24

如果需要让虚拟机上网,可以配置firewall

 修改主机名        修改hosts          时间同步ntpdate

配置免密登录

 私钥免密

 

用for循环拷贝ssh免密登录文件到其他主机2-6

 rsync -av 增量传输,保证数据的一致性

 for循环scp复制本地环境变量上传到hd2-6服务器

source /etc/profile

ZooKeeper 是为分布式应用程序提供高性能协调服务的工具集合,译名为“动物园管理员”分布式应用程序可以基于它实现配置维护、命名服务、分布式同步、组服务等。是Hadoop集群管理的一个必不可少的模块,它主要用来解决分布式应用中经常遇到的数据管理问题,如集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等在ZooKeeper集群当中,集群中的服务器角色有两种Leader和Learner,Learner角色又分为Observer和Follower

 每台服务器myid不同,需要分别修改,例如server.1对应的myid内容为1,server.2对应的myid内容为2,server.3对应的myid为3。
2888端口:follower连接到leader机器的端口
3888端口 :leader选举端口

还可以直接配置ip,在zoo.cfg文件末尾

 在conf文件中的示例文件中可以看见tickTime滴答时间=2s        初始化限制时间=10次  20s

数据同步请求限制=5次  10秒

tickTime相当于校对时间参数

 echo "1-3" > /opt/data/myid  三台服务器都必须输入myid内容

因为安装包是tar.gz的二进制包,所以启动必须在安装位置中的bin目录下。

可以把安装位置配置到环境变量就不用进入安装目录启动了

 source /etc/profile

其他两台服务器直接scp拷贝环境变量过去即可

最后分别启动三台服务器之后查看状态可以看见Mode有两个跟随者和一个leader

scp拷贝二进制hadoop安装包到6台服务器,tar xf解压之后mv 到/opt/hadoop

最后配置一下hadoop的环境变量就行

 3.3.1、修改hadoop配置文件

1、hadoop-env.sh
[root@localhost ~]#vim hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

修hadoop-envsh 25行,mapred-env.sh 16行,yarn-env.sh 23行针对hadoop-2.8.5版本

2、core-site.xml
[root@localhost ~]#vim core-site.xml

<!-- 指定hdfs的nameservice为ns1 -->

<property>


<name>fs .defaultFS</name>
<value>hdfs://nsl</value>

<property>


<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>

<value>hd4:2181,hd5:2181,hd6:2181</value>

</property>

3、hdfs-site.xml

<property>
<name>dfs.nameservices</name>
<value>ns1</value>

<value>nn1,nn2</value>

</property>
<!-- nn1的RPC通信地址,RPC是机器之间的通信方式 -->

<vaue>hd1:9000</value>

</property>

<!-- nn1的RPC通信地址 -->
<property>
<name>dfs .namenode.rpc-address,ns1,nn1</name>

<value>hd1:9000</value>

</property>
<!-- nn1的http通信地址,http是人和机器之间的通信方式 -->

<value>hd1:50070</value>

<value>hd2:9000</value>
</property>
<!-- nn2的http通信地址 -->

<value>hd2:50070</value>

</property>

<name>dfs .namenodeshared.edits .dir</name><value>qjournal://hd4:8485;hd5:8485;hd6:8485/ns1</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位号-->
<property>

<name>dfs .journalnode.editsdir</name>

<value>/opt/data/journa1</value>

</property>

<value>true</value>
</property>
<!-- 配号失败自动切换实现方式 -->
<property>
<name>dfs.client.failover .proxy.provider .ns1</name>
<value>

org.apache. hadoop,hdfs , server ,namenode.ha,ConfiguredFailoverProxyProvider

<name>dfs .ha,fencing.methods</name>

<value>sshfence/value>

<value>/root/.ssh/id_rsa</value>

</property>

4、配置datanode节点记录文件 slaves

[root@localhost ~]#vim slaves
hd4
hd5
hd6 

5、mapred-site.xml

[root@localhost ~]#cp /opt/hadoop285/etc/hadoop/mapred-site.xml.template /opt/hadoop285/etc/hadoop/mapred-site.xml

[root@localhost ~]#vim mapred-site.xml

<!-- 指定mr框架为yarn方式(mapreduce的资源调度方式) -->
<property>
<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

6、yarn-site.xml

[root@localhost ~]#vim yarn-site.xml

<!-- 指定resourcemanager地址 -->

<value>hd3</value>

<value>mapreduce_shuffle</value>

</property>

 上传本地配置好的配置文件到所有集群 节点之后复制配置文件到hadoop目录替换之前的。

 最后用for循环拷贝整个配置好的目录到其他节点

3.3.3、启动整个集群的步骤

在namenode节点启动zookeeper

[root@localhost ~]#zkServer .sh start

启动journalnode(在namenode上操作,例如hd1)

 必须是daemons才可以同时启动整个集群的journalnode,jps在三个节点上验证

可以通过判断是否生成data文件来确认有没有启动journalnode,hd1不是集群的节点所以没有data

格式化hdfs文件系统(在namenode上操作,例如hd1)

[roothd1 ~]# hdfs namenode -format

 拷贝到hd2之后两个节点的元数据信息完全一致

启动yarn之后必须输入三次yes

3.3.4、hadoop集群验证

 创建一个测试的txt文件之后放入input文件夹中调用yarn的jar包中的wordcount方法计算输出结果到output中的00文件中

最后可以看到词频统计的结果

 浏览器访问可以直接在linux服务器上的浏览器

 后台启动浏览器的前提是在本地配置域名解析hosts

到此这篇服务器部署方式集群主备(服务器集中部署)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数组方法map怎么用(数组方法map怎么用函数表示)2025-02-13 21:36:04
  • convwthn函数(convwthn函数求卷积)2025-02-13 21:36:04
  • convhull函数(conv函数是什么意思)2025-02-13 21:36:04
  • pivot函数用法(pivot函数用法oracle)2025-02-13 21:36:04
  • 电视软件后缀格式(电视软件后缀格式怎么设置)2025-02-13 21:36:04
  • modbus报文格式和4x的关系(modbus485报文解析)2025-02-13 21:36:04
  • 报文格式化错误怎么解决(报文格式化错误,请稍后检查账户余额)2025-02-13 21:36:04
  • 一级写文章,高手如何拟标题?向上概括主题,向下分解演绎二级写文章,高手如何拟标题?向上概括主题,向下分解演绎格式示范(一级写文章,高手如何拟标题?向上概括主题,向下分解演绎二级写文章,高手如何拟标题?向上概括主题,向下分解演绎内容)2025-02-13 21:36:04
  • 字符串转成int类型(字符串转成int类型的函数)2025-02-13 21:36:04
  • max30102工作原理公式(max30100原理图)2025-02-13 21:36:04
  • 全屏图片