Linux使用的是CentOS-7-x86
官网下载地址:https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/
虚拟机VMware Workstation 16 Pro
这个网站上去搞懂得都懂
Hadoop安装包版本:hadoop-2.7.6
官网下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.6/
jdk安装版本:jdk-8u211-linux-x64
官网下载地址:Java Archive | Oracle
ZooKeeper安装版本:ZooKeeper 3.4.12
官网下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/
Xshell 安装版本:Xshell 7
官网下载地址:https://www.netsarang.com/zh/free-for-home-school/
(1)家庭和学校用户的免费许可证,免费授权页面:
https://www.netsarang.com/zh/free-for-home-school/
(2)在上述页面填写姓名和邮件地址,然后单击“下载”按钮。
(3)进入邮箱,单击收到邮件中的超链接,即可免费下载和使用。
1,打开VMware 编辑-虚拟网络编辑器-选择NAT模式,查看子网IP我这里是192.168.20.0,各个设备都不相同依照自己的,再打开NAT设置查看网关,下面网络设置需要用到
2,虚拟机打开网卡配置选项
vi /etc/sysconfig/network-scripts/ifcfg-ens33
3,更改网络配置(ip和网关一定要根据上面的自己设置)
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_onLY="no" BOOTPROTO="static" #static为静态IP dhcp为动态IP DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="ea26c532-6b6f-4450-bb36-27e516bf031b" DEVICE="ens33" onBOOT="yes" #开机自动启用以下配置 IPADDR=192.168.20.201 #ip根据上面的子网自行设置 PREFIX=24 #子网掩码,与NETMASK=255.255.255.0等价 GATEWAY=192.168.20.2 #网关,根据上面的填写
设置完毕使用刷新网络(可以多刷新几遍)
service network restart
设置完毕ping一下外部网络(这里是ping的百度服务器的ip)
ping 180.76.76.76
完成后可以尝试重启虚拟机查看IP是否是你设置的(以下为查看IP的命令)
ifconfig
3,关闭防火墙
查看防火墙状态(not running为关闭,running为开启)
firewall-cmd --state
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机自启(一定要关闭防火墙!!!,可以重启确认一下)
systemctl disable firewalld.service
4,使用Xshell连接虚拟机(主机是你的IP地址,连接后会提醒你连接使用的用户和密码)
连接成功(后续的 *** 着都可以在Xshell上进行)
cd /opt/
2,将文件拖入Xshell(会d出个对话框完成后使用ls查看是否上传到该文件夹下)
3,解压文件
tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/
4,设置Java环境
vi /etc/profile
在文件最后添加(根据需要自行修改)
export JAVA_HOME=/opt/jdk1.8.0_221 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新配置文件
source /etc/profile
查看JDK(如图所示就成功了)
java -version(四)克隆虚拟机与配置
1,关闭虚拟机 虚拟机-管理-克隆(最后一项选择完整克隆并命名为hadoop-02)
2,同理克隆出hadoop-03
3,依次开启三个虚拟机
4,修改hadoop-02和hadoop-03的主机名(三个的主机名依次是hadoop-01,hadoop-02,hadoop-03)
vi /etc/hostname
5,修改hadoop-02和hadoop-03的IP地址(三个虚拟机的IP地址必须修改为连续的我这里的三个分别是192.168.20.201,192.168.20.202,192.168.20.203)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
6,重启使主机名生效
reboot
7,添加主机映射(三台虚拟机都要添加)
vi /etc/hosts
添加内容如下
192.168.20.201 hadoop-01 192.168.20.202 hadoop-02 192.168.20.203 hadoop-03
检验在各个结点ping一下检验是否添加映射成功
(五)集群各节点SSH免密码登录1,分别在各个节点中执行以下命令声测生成密钥文件(要按三个回车)
ssh-keygen
2,在各个节点中使用(将自身公钥复制到各个节点中,三条命令都要在各个节点中执行一遍)
ssh-copy-id hadoop-01 ssh-copy-id hadoop-02 ssh-copy-id hadoop-03
完成后可实现各节点无密码切换(ssh 主机名)
(六)ZooKeeper安装配置1,在hadoop-01进入opt文件夹下,使用Xshell传入安装包
2,解压ZooKeeper
tar -zxvf zookeeper-3.4.12.tar.gz -C /opt/
3,进入ZooKeeper文件夹
cd /opt/zookeeper-3.4.12/
4,创建data和logs两个文件夹
mkdir data mkdir logs
5,进入data文件
cd data
6,新建名叫myid文件并写入id为1
echo '1'>myid
7,进入ZooKeeper安装目录下的conf文件将zoo_sample.cfg复制重命名为zoo.cfg
cd /opt/zookeeper-3.4.12/conf/
cp zoo_sample.cfg zoo.cfg
8,修改zoo.cfg在原本的代码中寻找“dataDir=”修改为
dataDir=/opt/zookeeper-3.4.12/data
在代码最后添加以下代码
dataLogDir=/opt/zookeeper-3.4.12/logs server.1=hadoop-01:2888:3888 server.2=hadoop-02:2888:3888 server.3=hadoop-03:2888:3888
9,将hadoop-01的ZooKeeper分发给其余两个节点
scp -r /opt/zookeeper-3.4.12 root@hadoop-02:/opt/ scp -r /opt/zookeeper-3.4.12 root@hadoop-03:/opt/
10,设置环境变量
vi /etc/profile
在最后添加
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.12 export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
刷新文件
source /etc/profile
11,修改hadoop-02和hadoop-03的myid分别为2和3
vi /opt/zookeeper-3.4.12/data/myid
12,在三个节点依次执行命令启动ZooKeeper
zkServer.sh start
13,检验 ZooKeeper安装是否成功
三个节点分别输入以下代码
zkServer.sh status
效果图
(七)Hadoop安装配置
1,用Xshell将Hadoop安装包传入hadoop-01进去
2,解压Hadoop
tar -zxvf hadoop-2.7.6.tar.gz -C /opt/
3,修改core-site.xml
进入core-site.xml所在文件夹·
cd /opt/hadoop-2.7.6/etc/hadoop/
进入core-site.xml
vi core-site.xml
将原有的
fs.defaultFS hdfs://cluster ha.zookeeper.quorum hadoop-01:2181,hadoop-02:2181,hadoop-03:2181
4,进入hdfs-site.xml修改配置(以下几个都要把
vi hdfs-site.xml
dfs.replication 3 dfs.nameservices cluster dfs.ha.namenodes.cluster nn01,nn02 dfs.namenode.rpc-address.cluster.nn01 hadoop-01:9000 dfs.namenode.http-address.cluster.nn01 hadoop-01:50070 dfs.namenode.rpc-address.cluster.nn02 hadoop-02:9000 dfs.namenode.http-address.cluster.nn02 hadoop-02:50070 dfs.namenode.shared.edits.dir qjournal://hadoop-01:8485;hadoop-02:8485;hadoop-03:8485/cluster dfs.journalnode.edits.dir /opt/hadoop-2.7.6/journaldata dfs.ha.automatic-failover.enabled.cluster true dfs.client.failover.proxy.provider.cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000 dfs.name.dir /opt/hadoop-2.7.6/tmp/dfs/name dfs.data.dir /opt/hadoop-2.7.6/tmp/dfs/data
5,修改mapred-site.xml,最开始是没有这个文件的需要将mapred-site.xml.template复制重命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
mapreduce.framework.name yarn
6,修改yarn-site.xml
vi yarn-site.xml
yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id yrc yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hadoop-01 yarn.resourcemanager.hostname.rm2 hadoop-02 yarn.resourcemanager.zk-address hadoop-01:2181,hadoop-02:2181,hadoop-03:2181 yarn.nodemanager.aux-services mapreduce_shuffle
7,修改slaves(hadoop3.0以后slaves更名为workers)
vi slaves
将原有内容删除插入以下内容
hadoop-01 hadoop-02 hadoop-03
8,分别在hadoop-env.sh 、 mapred-env.sh 、 yarn-env.sh 中加入JAVA_HOME环境变量(最好添加到最后):
export JAVA_HOME=/opt/jdk1.8.0_221
9,将文件复制到其余两个节点上
scp -r /opt/hadoop-2.7.6 root@hadoop-02:/opt/
scp -r /opt/hadoop-2.7.6 root@hadoop-03:/opt/
10,配置Hadoop环境变量,在三个节点个分别执行以下 *** 作
vi /etc/profile
export HADOOP_HOME=/opt/hadoop-2.7.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
让环境变量立即生效
source /etc/profile(八)启动Hadoop
1,在三个节点分别启动journalnode(第一次需要手动启动,后面就不需要了)
hadoop-daemon.sh start journalnode
也可以使用jps查看进程是否存在(如果之前没有启动ZooKeeper也需要启动ZooKeeper)
2,在hadoop-01格式namenode
hdfs namenode -format
看到INFO common.Storage: Storage directory /opt/hadoop-2.7.6/tmp/dfs/name has been successfully formatted.说明格式化成功
3,将hadoop-01的namenode格式化生成的文件发送到hadoop-02
scp -r /opt/hadoop-2.7.6/tmp/ root@hadoop-02:/opt/hadoop-2.7.6
4,格式化ZKFC(只需要要hadoop-01上执行)
hdfs zkfc -formatZK
看到出现以下内容说明成功了
INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/cluster in ZK.
INFO zookeeper.ZooKeeper: Session: 0x30000082aa70000 closed
INFO zookeeper.ClientCnxn: EventThread shut down
5,启动hdfs(只需要要hadoop-01上执行)
start-dfs.sh
6,启动DFSZKFailoverController(hadoop-01和hadoop-02上执行)
hadoop-daemon.sh start zkfc
7,启动yarn(只需要要hadoop-01上执行)
start-yarn.sh(九)检验Hadoop是否配置完成
1, 检查使用jps查看进程
2,电脑浏览器输入hadoop-01的IP地址加上:8088查看
3,查看两个namenode状态分别使用hadoop-01和hadoop-02的IP加上50070(状态必须是有一个为active(存活)另一个为standby(备用))
4,检验高可用是否成功(这里才是正真检验高可用是否成功的关键,能否实现故障转移)
使用jps查看namenode进程并杀死hadoop-01的namenode
停止进程(命令是kill -9 后面数字是进程号我这里是3429,每个设备不一样哦)
kill -9 3429
停止后jps就看不到这个进程了
同时hadoop-01的web端也会变成这样
如果hadoop-02的web端变成了这样就表示成功了
再启动hadoop-01就变为备用节点(如果感兴趣可以互相杀杀,邪笑嘿嘿)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)