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