Haddop完全分布式集群搭建

《haddop集群搭建详解》
Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建。我们准备3台服务器(关闭防火墙、静态IP、主机名称)。如果没有这样的环境,可以在一台电脑上安装VMWare Workstation。在VM上安装三台Linux,分别是1个主节点,2个从节点,如下图所示。
节点类型 IP地址 主机名
NameNode 192.168.86.150 master
DataNode 192.168.86.160 slave1
DataNode 192.168.86.170 slave2
注意:这3个节点的IP地址在实际搭建时会有所不同。
12.2集群搭建步骤
12.2.1在VMware Workstation上创建3台虚拟机
(1)找到桌面的虚拟机图标,双击后,启动VMware界面,选择“创建新的虚拟机”,如下图,即会弹出向导。

(2)点击下一步,初学者使用典型配置。
在这里插入图片描述
(3)点击浏览,找到我们给的iso镜像文件。
在这里插入图片描述

(4)选择镜像文件。
在这里插入图片描述

(5)打开虚拟机向导。

在这里插入图片描述

(6)填写用户信息。
在这里插入图片描述
备注:写上全名,用户名,密码(用户名是用来登录Linux系统的,配合密码可以完成登录。全名只是对用户名的一个备注说明。)

在这里插入图片描述

(7)设置虚拟机名称和位置。
在这里插入图片描述
(8)设置虚拟机磁盘容量,磁盘容量默认即可 20G已够用。

在这里插入图片描述

(9)安装完成。

在这里插入图片描述

(10)启动虚拟机。
虚拟机已开始启动
在这里插入图片描述
等待几分钟
在这里插入图片描述
启动完成

在这里插入图片描述12.2.2配置网络
(1)在Linux系统命令终端,执行命令cd /etc/sysconfig/network-scripts,切换到该目录并查看该目录下的文件ifcfg-eth0,如图所示。

(2) 在Linx系统命令终端,执行命令 vim ifcfg-eth0,并修改文件的内容,按“键入编辑内容编译完成后按Esc键退出编译状态,之后执行命令wq,保存并退出。IPADDR、 NETMASK、 GATEWAY、DNS1的值可以根据自己的本机进行修改,如下所示。
DEVICE=“eth0” #设备名字
BOOTPROTO=“static” #静态ip
HWADDR=“00:0C:29:ED:83:F7” #mac地址
IPV6INIT=“yes”
NM_CONTROLLED=“yes”
ONBOOT=“yes” #开启自启动
TYPE=“Ethernet” #网络类型
UUID=“28354862-67a7-4a5b-9f9a-54561401f614”
rePADDR=192.168.11.10 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.11.2 #网关
DNS1=192.168.11.2 # dns

单击编辑菜单下的虚拟网络编辑器菜单,打开虚拟网络编辑器窗体,如下图所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)配置iP地址完毕之后,在命令终端的任意目录下,执行命令 ifconfig,查看配置效果,如图所示。

在这里插入图片描述(4)在命令终端的任意目录下重启服务,执行命令reboot。
(5) ping ip地址看是否安装成功,如图所示。
在这里插入图片描述
(6)剩下两台都按步骤配置。
12.2.3修改主机名和域名映射
(1)启动命令终端,在任何目录下执行命令cd/ etc/sysconfig,切换到该目录并查看目录下的文件,可以发现存在文件 network,如图所示。
在这里插入图片描述
(2)在/etc/sysconfig目录下找到文件 network,然后执行命令 vim network,按“i”进入编辑内容,编译完成后按Esc退出编译状态,之后执行命令wq保存并退出,后面两台也都这样,如下图所示。
在这里插入图片描述
(3)修改主机名和iP地址具有映射关系,执行命令vim/ etc/hosts,按“i”进入编辑内容,编译完成后按Esc退出编译状态,之后执行命令wq保存并退出,把三台的ip和主机名都编辑,如图所示。
在这里插入图片描述
(4)scp命令传送文件
scp /etc/hosts root@slave1:/etc/hosts
scp /etc/hosts root@slave2:/etc/hosts
把修改好的发送给slave1,再用相同的方法,发送给slave2。

下面我们详细介绍一下scp命令,scp是secure copy的缩写,是用于Linux之间复制文件和目录的。scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
scp数据传输可以使用ssh1或ssh2。scp命令可以使用IPv4寻址或IPv6寻址。
复制文件语法:
  scp /源文件完整路径 远程用户名@IP地址: /目标文件完整路径
或者
scp /源文件完整路径 远程用户名@机器名: /目标文件完整路径
scp /home/space/music/1.mp3 root@slave1:/home/root/others/music
scp /home/space/music/1.mp3 root@192.168.86.153:/home/root/others/music/001.mp3
复制目录语法:
scp -r /源目录完整路径 远程用户名@IP地址: /目标目录所在路径
或者
scp -r /源目录完整路径 远程用户名@机器名: /目标目录所在路径
scp -r /home/space/music/ root@slave3:/home/root/others/
scp -r /home/space/music/ root@192.168.86.153:/home/root/others/
从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可。
scp root@slave3:/home/root/others/music/1.mp3 /home/space/music
参数:
-r 递归复制整个目录。
-v 和大多数linux命令中的-v意思一样,用来显示进度。可以用来查看连接、认证、或是配置错误。
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)。
-1 强制scp命令使用协议ssh1。
-2 强制scp命令使用协议ssh2。
-4 强行使用IPV4地址。
-6 强行使用IPV6地址。
-q 不显示传输进度条。
12.2.4在linux下安装Java
(1)启动 Linux命令终端,分别在三台虚拟机上创建目录,执行命令mkdir /usr/java,切换到该目录下执行命令cd/usr/java,
[root@hadoop ~] mkdir/usr/java
[root@hadoop ~]cd /usr/java
(2)把JDK文件jdk-8u181-linux-x64.tar.gz上传到该目录下
(3)然后对/usr/java目录下的JDK压缩文件jdk-8u181-linux-x64.tar.gz,执行命令
对jdk-8u181-linux-x64.tar.gz进行解压
[root@hadoop java]#tar -xzvf jdk-8u181-linux-x64.tar.gz
(4)解压之后,执行命令 Il,可以看到该目录下多了一个解压后的Jdk文件,如图2-43所示。
在这里插入图片描述
(5)把jdk文件上传到其他两台,通过命令上传到其他两台虚拟机上,指定命令
scp –r /usr/java root@主机名:/usr
[root@master ~]scp –r /usr/java root@slave1:/usr
[root@master ~] scp –r /usr/java root@slave2:/usr
(6)然后到slave1和slave2的/usr目录下看,是否有java这个目录
(7)完成上一步之后,可以执行cd jdk.1.7.0_80,进入JDK安装目录

在这里插入图片描述(8)确定解压无误之后,此时需要配置JDK环境变量,执行命令 vim /etc/profile单击”i“进入编辑内容,编译完成后按Esc退出编译状态,之后执行命令wq保存并退出。如图
在这里插入图片描述
(9)编辑完后进行配置文件刷新,执行命令 source /etc/profile,刷新配置,配置的信息才会生效,如图所示。
[root@hadoop jdk1.7.0_80]# source /etc/profile
(10)完成以上步骤之后,需要测试环境变量是否配置成功,只需要在任何目录下执行Java –version ,如图,出现下图情况就是配置成功。
在这里插入图片描述
12.2.5关闭防火墙
关闭Linux防火墙有以下3个步骤:
1.查看防火墙状态
service iptables status
2. 关闭防火墙
service iptables stop
3. 永久性关闭防火墙
chkconfig iptables off

集群规划: 主机名 IP 安装的软件 运行的进程 weekend01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend03 192.168.1.203 jdk、hadoop ResourceManager weekend04 192.168.1.204 jdk、hadoop ResourceManager weekend05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 说明: 1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务 仅同步active namenode的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据 信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode 这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个 是Standby,状态由zookeeper进行协调
Spring Boot和Hadoop是两个不同的技术,Spring Boot是一个Java Web开发框架,而Hadoop是一个大数据处理框架。它们并没有直接的联系。如果您想要使用Spring Boot来操作Hadoop集群,则可以使用Hadoop提供的Java API,或者使用一些第三方的Java库来完成操作。 如果您要使用Hadoop 3.x版本,可以按照以下步骤进行操作: 1. 在pom.xml文件中添加hadoop-client依赖: ``` <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.x.x</version> </dependency> ``` 2. 配置Hadoop集群的信息,例如core-site.xml、hdfs-site.xml、mapred-site.xml等,可以通过以下方式: ``` @Configuration public class HadoopConfig { @Bean public Configuration hadoopConfiguration() throws Exception { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://namenode:8020"); conf.set("mapreduce.framework.name", "yarn"); conf.set("yarn.resourcemanager.address", "resourcemanager:8032"); conf.set("yarn.resourcemanager.scheduler.address", "resourcemanager:8030"); conf.set("mapreduce.jobhistory.address", "historyserver:10020"); conf.set("mapreduce.jobhistory.webapp.address", "historyserver:19888"); return conf; } } ``` 3. 编写Java程序,使用Hadoop提供的API进行操作: ``` @Configuration public class HadoopConfig { @Autowired private Configuration hadoopConfiguration; @Bean public FileSystem fileSystem() throws Exception { return FileSystem.get(hadoopConfiguration); } } ``` 以上是一个简单的示例,您可以根据自己的需求进行修改和扩展。如果您还有其他问题,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值