Centos7下安装Flink1.10(Standalone模式)
1、Linux下安装jdk及环境配置
虚拟机设置如下,ios镜像使用的Centos7。
参考博客Linux系统下安装jdk及环境配置(两种方法) - 韦邦杠 - 博客园 (cnblogs.com)
从官网上Java Downloads | Oracle下载jdk-8u301-linux-x64.tar.gz。进入目录/usr,更改目录权限chmod -R 777 local
使用xftp将jdk压缩包传输到/usr/loacl
目录下。进入/usr/local目录输入解压命令:tar zxvf jdk-8u301-linux-x64.tar.gz
配置环境变量:vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_301
export CALSSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
输入source /etc/profile
刷新设置。
使用
java
、javac
、java -version
验证是否安装成功
配置完成。传给另外两台虚拟机:
scp -r /usr/local/jdk1.8.0_301 root@hadoop01:/usr/local/
scp -r /usr/local/jdk1.8.0_301 root@hadoop03:/usr/local/
scp /etc/profile root@hadoop01:/etc/profile
scp /etc/profile root@hadoop03:/etc/profile
另外两台虚拟机刷新配置:source /etc/profile
,输入java -version
验证
2、配置ssh、root免密及关闭防火墙
关闭虚拟机,更改虚拟机名字为Hadoop01
,创建完整克隆,分别命名为Hadoop02
Hadoop03
。
网络配置
问题记录:
重启网络服务:service network restart失败
Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
[失败]
1、首先,在VMware workstation的菜单 编辑 -> 虚拟网络编辑器,查看子网IP及DHCP
配置的IP地址应该在起始地址和结束地址范围内。
2、进入虚拟机,打开终端,输入ip addr
查看文件列表 ls /etc/sysconfig/network-scripts
3、输入vi /etc/sysconfig/network-scripts/ifcfg-ens33
此处,三个虚拟机的网关都应与主机保持一致,在VMware workstation的菜单 编辑 -> 虚拟网络编辑器->NAT设置中查看,IP地址分别为:
Hadoop01 192.168.115.130
Hadoop02 192.168.115.140
Hadoop03 192.168.115.150
每个虚拟机的mak地址都是不同的,所以每次配置时都需要先查看ip addr
。配置完成后,保存退出。
4、输入service network restart
重启网络服务。
输入
ip addr
查看是否配置成功。
使用电脑的命令提示行查看是否能ping通
按照上面的步骤,配置另外两个虚拟机的网络。配置完成后,检查是否能互相ping通。
192.168.115.130 ping 192.168.115.140、192.168.115.150
192.168.115.140 ping 192.168.115.130、192.168.115.150
至此,网络配置基本完成。
配置ssh
弯路走得有点多。。。
输入vi /etc/ssh/sshd_config
,打开ssh配置文件
将 PermitRootLogin 和 PubkeyAuthentication 的设置打开。
输入systemctl estart sshd.service
启动ssh服务;
设置开机自动启动ssh服务systemctl enable sshd.service
配好其中一台,另外两台如果出问题也可以克隆配好的那台,然后改个IP就好啦
配置hosts
输入hostname
查看当前主机名。
输入hostnamectl set-hostname xxx
修改主机名为hadoop01、hadoop02、hadoop03。
输入vi /etc/hosts
打开文件,在最后一行加入:IP地址 主机名,如下:
三台虚拟机都这样配,配置完成后,互相ping主机名进行验证。
关闭防火墙
输入systemctl status firewalld
查看防火墙状态
使用systemctl stop firewalld
关闭防火墙
可以看到,此时防火墙已关闭。输入systemctl disable firewalld
命令,即可永久关闭防火墙。
关闭SELINUX
使用vi /etc/selinux/config
编辑文件,将SELINUX=enfocing
修改为disabled
.
配置ssh免密登陆
参考文档centos7 root用户下配置虚拟机的免密登录_赴前尘-CSDN博客
通过命令 ssh-keygen -t rsa
生成公钥和私钥,输入命令后直接按三次确认键就能看到下面输出界面。
之后进入到.ssh文件夹下,就能看到生成的公钥id_rsa.pub和私钥文件id_rsa。hadoop02、hadoop03同样操作。
在Hadoop02上输入cat /root/.ssh/id_rsa.pub
查看公钥内容,复制备用。
同样,在Hadoop03上,复制公钥内容备用。
- 以下都是在hadoop01上执行的操作:
.ssh目录下执行 touch authorized_keys
创建存放秘钥的文件。
执行 cp id_rsa.pub authorized_keys
将公钥放进authorized_keys文件,可无密登录本机;
执行 chmod 644 authorized_keys
修改 authorized_keys 权限;
执行 sudo service sshd restart
重启ssh服务;
ssh hadoop01
命令测试本机免密登录,第一次需要输入 yes 下次就不用再输入了
输入echo '公钥' >> authorized_keys
将前面复制的Hadoop02、Hadoop03公钥内容写入authorized_keys中
分别执行
scp /root/.ssh/authorized_keys hadoop02:/root/.ssh
scp /root/.ssh/authorized_keys hadoop03:/root/.ssh
将hadoop01上的authorized_keys 分发给hadoop02,hadoop03(如果有需要输入yes的步骤,输入yes即可)
- 以下都是在hadoop02上执行的操作
执行 cd /root/.ssh
进入到.ssh目录下,chmod 644 authorized_keys
修改 authorized_keys 权限
- 以下都是在hadoop03上执行的操作
执行 cd /root/.ssh
进入到.ssh目录下,chmod 644 authorized_keys
修改 authorized_keys 权限
权限配置完成后,回到hadoop01,输入ssh hadoop02
连接 hadoop02,exit退出连接;ssh hadoop03
连接 hadoop03,exit退出连接。
同样,在Hadoop02、Hadoop03进行测试。
至此, root用户下三台虚拟机互相免密登录配置完成。
3、Hadoop正式安装
zookeeper分布式集群环境搭建
此处搭建zookeeper分布式集群是为搭建HA(高可用)-Hadoop集群环境做准备。因为后面搭建的并不是HA-Hadoop集群,所以此处可直接跳过。
从官网上下载apache-zookeeper-3.5.9-bin.tar.gz。
使用xftp将zookeeper压缩包传输到/usr/loacl
目录下。进入/usr/local目录输入解压命令:tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz
输入mv /usr/local/apache-zookeeper-3.5.9-bin /usr/local/zookeeper
,将文件夹重命名
进入目录/usr/local/zookeeper/conf,将文件zoo_sample.cfg重命名为zoo.cfg:mv /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
- 配置zookeeper环境变量
vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
刷新配置文件source /etc/profile
,echo $ZOOKEEPER_HOME
打印一下看能不能输出
- 配置zoo.cfg
输入vi /usr/local/zookeeper/conf/zoo.cfg
,添加以下内容:
dataDir=/usr/local/zookeeper/data
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
ZooKeeper 集群中, 每台服务器上的 zoo.cfg 配置文件内容一致
创建文件/usr/local/zookeeper/data/myid,并写入相应的id
mkdir /usr/local/zookeeper/data
echo 1 > /usr/local/zookeeper/data/myid
server.1 的 myid 文件内容就是 "1"。
每个服务器的 myid 内容都不同,且需要保证和自己的 zoo.cfg 配置文件中 "server.id=host:port:port" 的 id 值一致。
按照相同步骤,为 Hadoop02 和 Hadoop03 配置 zoo.cfg 和 myid 文件。zoo.cfg文件内容相同,Hadoop02 的 myid 文件内容为 2,Hadoop03 的 myid 文件内容为 3。
最后,在各机器上执行/usr/local/zookeeper/bin/zkServer.sh start
来启动zookeeper集群,使用jps命令查看ZooKeeper的启动进程。
/usr/local/zookeeper/bin/zkServer.sh stop
关闭zookeeper。
Hadoop分布式集群搭建
参考博客:
3台centos7上安装hadoop3.1.4_sndayYU的博客-CSDN博客
从官网下载hadoop-3.1.4.tar.gz,解压到/usr/local/hadoop目录下:进入/usr/local目录cd /usr/local
,输入解压命令tar -zxvf hadoop-3.1.4.tar.gz
,重命名文件夹mv /usr/local/hadoop-3.1.4 /usr/local/hadoop
修改5个配置文件
不一定以此为准,具体情况具体分析,建议多在网上找找相对应的配置文件
1、vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
,第54行
export JAVA_HOME=/usr/local/jdk1.8.0_301
2、修改/usr/local/hadoop/etc/hadoop/core-site.xml
vi /usr/local/hadoop/etc/hadoop/core-site.xml
<!--指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!--指定HADOOP运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
3、修改/usr/local/hadoop/etc/hadoop/hdfs-site.xml
vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:9868</value>
</property>
4、修改/usr/local/hadoop/etc/hadoop/mapred-site.xml
vi /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、修改/usr/local/hadoop/etc/hadoop/yarn-site.xml
vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</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>
<!-- 设置虚拟内存更大些,默认2.1,即物理内存1G,虚拟内存2.1G -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
配置环境变量和workers
-
配置workers
输入
vim /usr/local/hadoop/etc/hadoop/workers
hadoop01
hadoop02
hadoop03
-
配置环境变量
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
传到其它两台服务器
scp -r /usr/local/hadoop root@hadoop02:/usr/local/
scp -r /usr/local/hadoop root@hadoop03:/usr/local/
scp /etc/profile root@hadoop02:/etc/profile
scp /etc/profile root@hadoop03:/etc/profile
使配置环境变量生效:. /etc/profile
三台虚拟机启用参数,并进行验证:
hadoop version
win10配置hosts
Windows下修改hosts文件_bjchen的博客-CSDN博客_windows修改hosts文件
配置非root用户的ssh免密登录
在启动集群时出现错误:
原因是在非root用户下,未配置ssh免密登录。以下为配置方法:
进入.ssh目录cd ~/.ssh
,通过命令 ssh-keygen -t rsa
生成公钥和私钥。hadoop02、hadoop03同样操作。
进入.ssh目录,将hadoop01、hadoop02和hadoop03的公钥合并到authorized_key文件中。
cat id_rsa.pub>> authorized_keys
ssh Pluto@hadoop02 cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh Pluto@hadoop03 cat ~/.ssh/id_rsa.pub>> authorized_keys
将hadoop01上的authorized_keys、known_hosts文件传给hadoop02和hadoop03。
scp ~/.ssh/authorized_keys Pluto@hadoop02:~/.ssh/
scp ~/.ssh/authorized_keys Pluto@hadoop03:~/.ssh/
scp ~/.ssh/known_hosts Pluto@hadoop02:~/.ssh/
scp ~/.ssh/known_hosts Pluto@hadoop03:~/.ssh/
最后,在三台虚拟机的~/.ssh
目录下输入chmod 600 ~/.ssh/authorized_keys
修改authorized_keysd文件的权限。
此时,非root用户下的ssh免密登录配置完成。
启动集群
首次需要格式化磁盘。在hadoop01上,以非root用户进到/usr/local/hadoop目录下,输入hdfs namenode -format
。
[Pluto@hadoop01 hadoop]$ pwd
/usr/local/hadoop
[Pluto@hadoop01 hadoop]$ hdfs name -format
输入指令:/usr/local/hadoop/sbin/start-dfs.sh
如果有这样的报错信息:
可以输入:
sudo chown -R 你自己电脑的用户名 /usr/local/hadoop
。
在hadoop02上,以非root用户进入/usr/local/hadoop目录下,输入指令:/usr/local/hadoop/sbin/start-yarn.sh
在hadoop03上进行验证,使用jps
查看进程。
[root@hadoop hadoop]# jps #显示以下几个进程说明启动成功
96662 Jps
95273 DataNode #可有可无
95465 SecondaryNameNode #重要
95144 NameNode #重要
95900 NodeManager #可有可无
95775 ResourceManager #非常重要
验证
- 前端查看
在Hadoop01打开网页:hdaoop01:9870
在Hadoop02打开网页:hdaoop02:8088
- 文件上传验证:
创建测试文件demo.txt
随便写点什么
上传文件
检查上传的文件:
可以看到正是我们上传的文件及内容
#注意启动后验证完必须关掉
start-all.sh
#关闭
stop-all.sh
4、Flink集群环境(Standalone模式)搭建
前置准备:CentOS7、jdk1.8、hadoop-3.1.4、flink-1.10.3
计划:
- 在130安装JobManager,150上安装第二个JobManager;
- 在3台服务器上都安装TaskManager;
注:flink集群使用hadoop操作。
下载
-
http://archive.apache.org/dist/flink/flink-1.10.3/flink-1.10.3-bin-scala_2.12.tgz
-
Central Repository: org/apache/flink/flink-shaded-hadoop-2-uber/2.8.3-10.0
上传并解压
使用Hadoop用户,部署到/usr/local/hadoop/目录下。
cd /usr/local/hadoop
解压:tar zxf flink-1.10.3-bin-scala_2.12.tgz
将 flink-shaded-hadoop-2-uber-2.8.3-10.0.jar 放到flink-1.10.3 /lib目录下:mv flink-shaded-hadoop-2-uber-2.8.3-10.0.jar flink-1.10.3/lib
配置文件
cd /usr/local/hadoop/flink-1.10.3/conf
- flink-conf.yaml
输入:vi flink-conf.yaml
添加下面内容:
jobmanager.rpc.address: hadoop01
- maters
输入:vi masters
添加内容:
hadoop01:8081
hadoop03:8081
- slaves
输入:vi slaves
添加内容:
hadoop01
hadoop02
hadoop03
- 复制到另外两台服务器
scp -r /usr/local/hadoop/flink-1.10.3 hadoop02:/usr/local/hadoop
scp -r /usr/local/hadoop/flink-1.10.3 hadoop03:/usr/local/hadoop
测试
启动hdfs:/usr/local/hadoop/sbin/start-dfs.sh
启动flink:/usr/local/hadoop/flink-1.10.3/bin/start-cluster.sh
使用jps
查看进程:
可以看到flink启动成功,打开浏览器,输入:hadoop01:8081
至此,Flink集群环境(Standalone模式)搭建成功。