当前使用的是Oracle VM VirtualBox虚拟机软件
1.关闭防火墙
#第一步: 停止firewall
systemctl stop firewalld.service
#第二步:禁止firewall开机启动
systemctl disable firewalld.service
#第三步:查看防火墙状态
systemctl status firewalld.servic
(systemctl status firewalld)
2.增加网卡
3.修改静态IP
cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
修改ifcfg-enp0s8内容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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和device都是enp0s8;(凭啥?因为先是动态获取,通过ifconfig查看出来的)
NAME=enp0s8
# 所有的网卡uuid不能重复
UUID=60188808-40f9-45d5-83af-4822aadc4711
DEVICE=enp0s8
ONBOOT=yes
# 配置我的ip地址(静态的)
IPADDR=192.168.56.104(这里192.168.56.是可以修改的,最后一位可以随便填写)
如果不知道静态ip前三位是什么,可以根据如下图片查找一下
4.修改主机名
hostnamectl set-hostname 主机名
5.搭建集群
#ip地址 对应的主机名
192.168.56.101 hadoop101
192.168.56.102 hadoop102
192.168.56.103 hadoop103
6.配置免密登录
生成公钥,私钥
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到本地机器上
ssh-copy-id loaclhost
要是集群的话,每个服务器上都可按照这步操作 然后把每个服务器上的authorized_keys文件内容,复制到一个文件中 最后分发到各个服务器上
也可以按照文章–hadoop完全分布式(https://blog.csdn.net/weixin_45271668/article/details/103017845)
里的免密配置方法配置
7.安装jdk
上传压缩包:jdk-8u221-linux-x64.rpm因为上传的jdk安装包是rpm,所以直接安装即可
yum -y install jdk-8u221-linux-x64.rpm
查看jdk安装在哪了
代码--
whereis javac
ll /usr/bin/javac
ll /etc/alternatives/javac
cd /usr/java/jdk1.8.0_221-amd64/
8.安装mysql
- 下载安装包mysql-8.0.17-1.el7.x86_64.rpm-bundle
- 解压 安装包
tar -xvf mysql-8.0.17-1.el7.x86_64.rpm-bundle
- 安装
# 一定一定要进入到mysql rpm包所在的目录;
# 安装一下以mysql-community开头,以rpm结尾的几个包;(8个)
yum -y install mysql-community*.rpm
- 修改配置文件(/etc/my.cnf);建议先复制;
# 要把my.cnf配置文件复制家里面(/root,/home用户名)
cp /etc/my.cnf ~
- 启动服务
# 重启服务
service mysqld restart
# 服务运行的状态
service mysqld status
- 查看密码
vim /var/log/mysqld.log
7) 登录mysql
mysql -u root -p
- 修改密码
#重置密码,所有的操作得先重置密码,要求
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
#修改密码
ALTER USER `root`@`%` IDENTIFIED WITH mysql_native_password BY 'Zy123456!' PASSWORD EXPIRE NEVER;
- navicat远程连接mysql
9.安装hadoop
进入apache官网,查看hadoop的版本,下在tar包(这里使用的是3.2.1版本)
解压tar包
tar -zxvf hadoop-3.2.1.tar.gz
修改配置文件
1.配置:hadoop-env.sh
修改
JAVA_HOME=/usr/ java/ jdk1.8.0 221- amd64
2.配置core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 核心的hdfs协议访问方式
董事会
-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://jh</value>
</property>
<!-- 所有hadoop的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/data/hadoop-${user.name}</value>
</property>
<!-- 告诉hadoop,zookeeper放哪了 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>
</configuration>
3.配置 yarn-site.xml
<?xml version="1.0"?>
<configuration>
<!-- 配置yarn -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn开启ha -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- yarn董事会的名字 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>jh-yarn</value>
</property>
<!-- 董事会列表 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- hostname,webapp-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop101</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop101:8088</value>
</property>
<!-- 第二台 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop102</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop102:8088</value>
</property>
<!-- zookeeper -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>
</configuration>
4.配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 副本数;默认3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 权限检查 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!-- dfs.namenode.name.dir:namenode的目录放的路径在hadoop.tmp.dir之上做了修改
file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir:namenode的目录放的路径在hadoop.tmp.dir之上做了修改
file://${hadoop.tmp.dir}/dfs/data
-->
<!-- 为nameservice起一个别名
董事会
-->
<property>
<name>dfs.nameservices</name>
<value>jh</value>
</property>
<!-- 董事会的成员 -->
<property>
<name>dfs.ha.namenodes.jh</name>
<value>nn1,nn2</value>
</property>
<!-- 配置每一个攻事会成员
每一个配置的时候得有rpc(底层),http(上层==网页)
-->
<property>
<name>dfs.namenode.rpc-address.jh.nn1</name>
<value>hadoop101:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.jh.nn1</name>
<value>hadoop101:9870</value>
</property>
<!-- 第二个成员 -->
<property>
<name>dfs.namenode.rpc-address.jh.nn2</name>
<value>hadoop102:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.jh.nn2</name>
<value>hadoop102:9870</value>
</property>
<!-- journalnode:负责hadoop与zk进行沟通 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/jh</value>
</property>
<!-- 哪个类决定了自动切换
哪个namenode是活着的(active)
-->
<property>
<name>dfs.client.failover.proxy.provider.jh</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- journal的存储位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/hadoop/data/journal/</value>
</property>
<!-- 大哥挂了,自动切换到二哥上
启动故障转移
-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- (ssh免密码登录) -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
</configuration>
5.配置mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- ctrl+shift+/ -->
<!-- <property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property> -->
<!-- 一旦启动了yarn,建议换成必须设置最大内存 -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>200</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx200M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>200</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx200M</value>
</property>
</configuration>
如果vim打不开文件
执行
yum -y install vim
6.启动zookeeper
bin/zkServer.sh start
7.启动journalnode
bin/hdfs --daemon start journalnode
8.格式化namenode
bin/hdfs namenode -format
9.把刚才格式化后的元数据拷贝到另外一个namenode上
# 一定要进入到/data/hadoop/data中
scp -r hadoop-root/ node-2:`pwd`
10.启动namenode
sbin/hadoop-daemon.sh start namenode
bin/hdfs --daemon start namenode
11.在没有格式化的namenode上执行:
bin/hdfs namenode -bootstrapStandby
12.启动第二个namenode
sbin/hadoop-daemon.sh start namenode
bin/hdfs --daemon start namenode
13.在其中一个节点上初始化zkfc(一定要启动zookeeper)
bin/hdfs zkfc -formatZK
14.重新启动hdfs
sbin/stop-dfs.sh
sbin/start-dfs.sh
来源:CSDN
作者:秋雨ヾ
链接:https://blog.csdn.net/weixin_45271668/article/details/103568006