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模式)搭建成功。

