由於安裝配置Hadoop牽涉的內容較多,我將Hadoop的安裝配置拆成了3篇文章來講述。
這是第一篇。
前期準備
由於大數據的安裝和使用涉及的內容比較多,截止到這篇文章,我寫的與大數據安裝有關的文章已經超過10篇了,為了能把這個事情說清楚,不得不這麼做。
在查看本文之前,一定要安裝好CentOS Linux 8 並升級完內核和軟件包,學會怎麼使用SSH軟件,學會怎麼配置IP等操作,進行過集群規劃和基礎配置,安裝並配置好時間同步chrony,安裝並配置好Java開發工具包jdk,安裝並配置好分佈式環境的協調Zookeeper,安裝並配置好文件分發軟件Rsync,為了在測試時不去分心處理權限問題,還需要關閉SELinux並關閉防火牆Firewall(生產環境再打開)。
以上內容可以參考我發佈過的以下文章:
1、知道Linux是怎麼安裝的嗎?安裝個CentOS Linux 8開始大數據開發
2、盤點兩個經典Linux維護軟件,詳細講講SSH是個什麼東西以及用法
3、Linux內核怎麼升級?升級有什麼好處?CentOS8升級內核並開啟BBR
4、Linux怎麼配置IP?CentOS8怎麼重啟網卡?配置/修改靜態IP的方法
5、大數據開發前要做什麼準備?8臺Hadoop服務器進行集群規劃前配置
6、如何保證大數據開發的服務器時間同步?chrony服務安裝與配置
7、怎麼在Linux上面安裝jdk?大數據開發前必備軟件在CentOS8上安裝
8、大數據服務器之間是怎麼配合的?分佈式Zookeeper集群安裝與配置
9、怎麼把Linux 的文件快速傳給10臺服務器?文件分發軟件的安裝配置
10、Linux有防火牆和殺毒軟件嗎?怎麼安裝配置Firewall抵禦網絡攻擊
集群規劃
上面有篇文章進行了詳細的集群規劃的編寫描述,這裡簡單敘述以下。
手裡有一臺Dell R620服務器,共有8塊硬盤,通過VMware將虛擬機分佈在這8塊硬盤上,模擬8臺服務器,模擬在一個機架上:
編號:/BJ0/LG0/hadoop221-228
221-222:NameNode,223-228:DataNode
集群規劃如下:(服務器為hadoop221-hadoop228)
特別提示:
我們安裝Hadoop的以下所有操作都可以先在一臺服務器(Hadoop221)上操作,完畢以後再將這個虛擬服務器複製成出來7份,完成最終的部署。
也就是我們先完成Hadoop221的操作系統和軟件的安裝配置,然後複製出7份來。
下面正式開始。
相關軟件的安裝及配置
安裝配置時間同步軟件chrony
參考上述文章,並根據上面的集群規劃,我們在221上安裝chrony。配置時我們把服務端server配置成192.168.1.222,這樣後面複製出來的其它服務器就能直接在222服務器上獲取時間了。全部安裝完畢,我們直接在hadoop222上面啟動Chrony服務即可完成所有的時間配置。
防火牆和SELINUX設置
因為Hadoop需要開啟的端口很多,而且牽涉到很多的權限,所以我們在測試時將防火牆和SELINUX都關掉。
在生產環境中,需要針對不同的開放端口做針對性的設置。
參考上述關於防火牆和SELINUX的文章,關閉防火牆且關閉SELinux,大致的內容摘取如下:
<code>systemctl stop firewalld/<code>
<code>systemctl disable firewalld/<code>
<code>vi /etc/selinux/config/<code>
相關參數修改如下:
#SELINUX=enforcing
SELINUX=disabled
重啟服務器,然後查看防火牆和SELinux狀態:
<code>reboot/<code>
查看SELinux的狀態
<code>/usr/sbin/sestatus -v/<code>
查看防火牆狀態
<code>systemctl status firewalld/<code>
顯示如下內容,則說明SELINUX已經關閉了
hostname相關設置
參考上面的集群規劃文章,進行hostname的配置,具體內容摘取如下:
運行下面的命令,修改本機的hostname:
<code>hostnamectl set-hostname hadoop221/<code>
222-228服務器上的hostname修改,等服務器安裝完畢以後統一操作(本文的底部有相關內容)
hosts相關設置
參考上面的集群規劃文章,進行hosts的配置,具體內容摘取如下:
由於一次次的錄入IP地址,不利於管理,我們在hosts裡面把服務器的hostname跟IP地址對應起來,輸入下面的命令開始操作:
<code>vi /etc/hosts/<code>
內容設置成如下所示:
<code>127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4/<code>
<code>::1 localhost localhost.localdomain localhost6 localhost6.localdomain6/<code>
<code>192.168.1.221 hadoop221/<code>
<code>192.168.1.222 hadoop222/<code>
<code>192.168.1.223 hadoop223/<code>
<code>192.168.1.224 hadoop224/<code>
<code>192.168.1.225 hadoop225/<code>
<code>192.168.1.226 hadoop226/<code>
<code>192.168.1.227 hadoop227/<code>
<code>192.168.1.228 hadoop228/<code>
<code>192.168.1.229 hadoop229/<code>
<code>192.168.1.230 hadoop230/<code>
添加Hadoop用戶
我們默認登錄的是Tristone用戶,需要切換到root用戶。
<code>su/<code>
錄入下述命令來添加hadoop用戶:
<code>useradd hadoop/<code>
錄入一遍"jiqun996"回車,再錄入一遍"jiqun996"回車後將hadoop用戶密碼設置為"jiqun996"
<code>passwd hadoop/<code>
安裝並配置jdk
參考上述jdk的安裝配置文章,具體內容摘取如下:
從Oracle上下載jdk,儘量不要使用其他版本的jdk,容易出現一些奇怪的問題,比如:沒有jps命令,自己都不知道哪裡出問題了。把下載的"jdk-8u231-linux-x64.tar.gz"傳到服務器上。進入服務器保存這個文件的目錄以後進行如下操作(下面的命令都是以root的權限操作的):
建立java的工作目錄(文件夾)
<code>mkdir /usr/java/<code>
解壓JDK
<code>tar -zxvf jdk-8u231-linux-x64.tar.gz/<code>
將JDK移動(剪切)到/usr/java/目錄
<code>mv jdk1.8.0_231/ /usr/java//<code>
將JDK所有者設置為root
<code>chown -R root:root /usr/java/jdk1.8.0_231//<code>
設置JDK的軟鏈接
<code>ln -sf /usr/java/jdk1.8.0_231 /usr/local/jdk/<code>
修改全局環境變量:
<code>vi /etc/profile/<code>
在文件底部添加以下內容:
export JAVA_HOME="/usr/local/jdk"
export PATH=$JAVA_HOME/bin:$PATH
加載新的全局環境變量:
<code>source /etc/profile/<code>
運行jps命令,顯示類似以下內容,就算安裝jdk成功了
<code>jps/<code>
安裝並配置Zookeeper
參考上述Zookeeper的安裝配置文章,具體內容摘取如下:
由於Zookeeper類似於民主選舉,每臺服務器分別投票共同選舉一個作為leader,剩下的都是follower。基於這個原因,官方建議服務器集群設置為奇數臺,偶數臺的話會有一臺的資源浪費。根據咱們的集群規劃:226-228為我們的Zookeeper服務器。
因為Zookeeper需要一臺一臺的單獨啟動,所以咱們在hadoop221上配置好,到時候只在226-228上面啟動即可。
下載Zookeeper(參考我寫的相關文章)然後進行下列操作:
<code>tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz/<code>
<code>mkdir /home/hadoop/server/<code>
<code>mkdir -p /home/hadoop/data/zkdata/<code>
<code>mkdir -p /home/hadoop/log/zklog/<code>
<code>mv apache-zookeeper-3.5.6-bin/ /home/hadoop/server//<code>
<code>ln -sf /home/hadoop/server/apache-zookeeper-3.5.6-bin/ /home/hadoop/zookeeper/<code>
<code>chown -R hadoop:hadoop /home/hadoop/*/<code>
<code>vi /etc/profile/<code>
文件底部添加以下內容:
export ZOOKEEPER_HOME="/home/hadoop/zookeeper"
export PATH=$ZOOKEEPER_HOME/bin:$PATH
執行下述命令加載全局環境變量,然後切換到hadoop用戶開始操作:
<code>source /etc/profile/<code>
<code>su hadoop/<code>
<code>cd /home/hadoop/zookeeper/conf/<code>
<code>cp zoo_sample.cfg zoo.cfg/<code>
<code>vi /home/hadoop/zookeeper/conf/zoo.cfg/<code>
內容調整如下:
<code>dataDir=/home/hadoop/data/zkdata/<code>
<code>dataLogDir=/home/hadoop/log/zklog//<code>
<code>server.226=hadoop226:2888:3888/<code>
<code>server.227=hadoop227:2888:3888/<code>
<code>server.228=hadoop228:2888:3888/<code>
最後不要忘了在每個服務器"/home/hadoop/data/zkdata/"下新建文件"myid"並把當前服務器編號寫進去,舉例:
<code>echo 221 > /home/hadoop/data/zkdata/myid/<code>
啟動的事情,這裡先不操作,後面到配置226-228的時候再啟動。
注意:雖然我們在配置文件中寫明瞭服務器的列表信息,但是,我們還是需要去每一臺服務 器去啟動,不是一鍵啟動集群模式。
安裝並配置Hadoop
先從國內的源服務器上找到hadoop的下載鏈接,並複製鏈接地址:
下載Hadoop
先用root權限操作:先用root權限操作:先用root權限操作:
重要的事情說三遍:
<code>cd /home/hadoop/server/<code>
<code>wget 粘貼剛才複製的URL地址/<code>
軟件包有340多M,下載時彆著急
<code>tar -zxvf hadoop-3.2.1.tar.gz/<code>
<code>ln -sf /home/hadoop/server/hadoop-3.2.1/ /home/hadoop/hadoop/<code>
<code>chown -R hadoop:hadoop /home/hadoop/*/<code>
配置全局環境變量文件profile
<code>vi /etc/profile/<code>
在文件尾部添加以下內容,用root用戶操作
export HADOOP_HOME="/home/hadoop/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
加載全局變量:
<code>source /etc/profile/<code>
<code>echo $HADOOP_HOME/<code>
下面以hadoop用戶操作:下面以hadoop用戶操作:下面以hadoop用戶操作
重要的事情說三遍:
執行以下命令,建立相關的目錄
<code>su hadoop/<code>
<code>rm -rf /home/hadoop/hadoop/share/doc #刪除文檔,很大,又沒用/<code>
<code>mkdir -p /home/hadoop/data/dfs/data/<code>
<code>mkdir /home/hadoop/data/dfs/name/<code>
<code>mkdir /home/hadoop/data/dfs/tmp/<code>
<code>mkdir /home/hadoop/data/journaldata/<code>
<code>cd /home/hadoop/hadoop/etc/hadoop/<code>
<code>vi /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh/<code>
添加一行內容:
export JAVA_HOME="/usr/local/jdk"
修改配置文件core-site.xml
清空原來全部內容
<code>echo > /home/hadoop/hadoop/etc/hadoop/core-site.xml/<code>
<code>vi /home/hadoop/hadoop/etc/hadoop/core-site.xml/<code>
內容如下:
<configuration>
<property>
<name>fs.defaultFS/<name>
<value>hdfs://myha01//<value>
<property>
<name>hadoop.tmp.dir/<name>
<value>/home/hadoop/data/dfs/tmp/<value>
<property>
<name>ha.zookeeper.quorum/<name>
<value>hadoop226:2181,hadoop227:2181,hadoop228:2181/<value>
<property>
<name>ha.zookeeper.session-timeout.ms/<name>
<value>1000/<value>
<description>ms/<description>
<property>
<name>ipc.client.connect.max.retries/<name>
<value>100/<value>
<description>Indicates the number of retries a client will make to establish a server connection./<description>
<property>
<name>ipc.client.connect.retry.interval/<name>
<value>10000/<value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection./<description>
<property>
<name>topology.script.file.name/<name>
<value>10000/<value>
<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection./<description>
修改配置文件hdfs-site.xml
<code>echo > /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml #清空原來全部內容/<code>
<code>vi /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml/<code>
內容如下
<configuration>
<property>
<name>dfs.replication/<name>
<value>3/<value>
<property>
<name>dfs.namenode.name.dir/<name>
<value>/home/hadoop/data/dfs/name/<value>
<property>
<name>dfs.datanode.data.dir/<name>
<value>/home/hadoop/data/dfs/data/<value>
<property>
<name>dfs.webhdfs.enabled/<name>
<value>true/<value>
<property>
<name>dfs.nameservices/<name>
<value>myha01/<value>
<property>
<name>dfs.ha.namenodes.myha01/<name>
<value>nn1,nn2/<value>
<property>
<name>dfs.namenode.rpc-address.myha01.nn1/<name>
<value>hadoop221:9000/<value>
<property>
<name>dfs.namenode.http-address.myha01.nn1/<name>
<value>hadoop221:50070/<value>
<property>
<name>dfs.namenode.rpc-address.myha01.nn2/<name>
<value>hadoop222:9000/<value>
<property>
<name>dfs.namenode.http-address.myha01.nn2/<name>
<value>hadoop222:50070/<value>
<property>
<name>dfs.namenode.shared.edits.dir/<name>
<value>qjournal://hadoop223:8485;hadoop224:8485;hadoop225:8485/myha01/<value>
<property>
<name>dfs.journalnode.edits.dir/<name>
<value>/home/hadoop/data/journaldata/<value>
<property>
<name>dfs.ha.automatic-failover.enabled/<name>
<value>true/<value>
<property>
<name>dfs.client.failover.proxy.provider.myha01/<name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/<value>
<property>
<name>dfs.ha.fencing.methods/<name>
<value>sshfence/<value>
shell(/bin/true)
<property>
<name>dfs.ha.fencing.ssh.private-key-files/<name>
<value>/home/hadoop/.ssh/id_rsa/<value>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout/<name>
<value>30000/<value>
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms/<name>
<value>60000/<value>
修改配置文件mapred-site.xml
<code>echo > /home/hadoop/hadoop/etc/hadoop/mapred-site.xml #清空原來全部內容/<code>
<code>vi /home/hadoop/hadoop/etc/hadoop/mapred-site.xml/<code>
全部內容如下:
<configuration>
<property>
<name>mapreduce.framework.name/<name>
<value>yarn/<value>
<property>
<name>mapreduce.jobhistory.address/<name>
<value>hadoop222:10020/<value>
<property>
<name>mapreduce.jobhistory.webapp.address/<name>
<value>hadoop222:19888/<value>
<property>
<name>mapreduce.application.classpath/<name>
<value>/home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*/<value>
修改配置文件yarn-site.xml
<code>echo > /home/hadoop/hadoop/etc/hadoop/yarn-site.xml #清空原來全部內容/<code>
<code>vi /home/hadoop/hadoop/etc/hadoop/yarn-site.xml/<code>
內容如下:
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled/<name>
<value>true/<value>
<property>
<name>yarn.resourcemanager.cluster-id/<name>
<value>yrc/<value>
<property>
<name>yarn.resourcemanager.ha.rm-ids/<name>
<value>rm1,rm2/<value>
<property>
<name>yarn.resourcemanager.hostname.rm1/<name>
<value>hadoop226/<value>
<property>
<name>yarn.resourcemanager.hostname.rm2/<name>
<value>hadoop227/<value>
<property>
<name>yarn.resourcemanager.zk-address/<name>
<value>hadoop226:2181,hadoop227:2181,hadoop228:2181/<value>
<property>
<name>yarn.nodemanager.aux-services/<name>
<value>mapreduce_shuffle/<value>
<property>
<name>yarn.log-aggregation-enable/<name>
<value>true/<value>
<property>
<name>yarn.log-aggregation.retain-seconds/<name>
<value>86400/<value>
<property>
<name>yarn.resourcemanager.recovery.enabled/<name>
<value>true/<value>
<property>
<name>yarn.resourcemanager.store.class/<name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore/<value>
<property>
<name>yarn.application.classpath/<name>
<value> /home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*/<value>
<property>
<name>yarn.resourcemanager.address.rm1/<name>
<value>hadoop226:8032/<value>
<property>
<name>yarn.resourcemanager.scheduler.address.rm1/<name>
<value>hadoop226:8030/<value>
<property>
<name>yarn.resourcemanager.webapp.address.rm1/<name>
<value>hadoop226:8088/<value>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1/<name>
<value>hadoop226:8031/<value>
<property>
<name>yarn.resourcemanager.admin.address.rm1/<name>
<value>hadoop226:8033/<value>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm1/<name>
<value>hadoop226:23142/<value>
<property>
<name>yarn.resourcemanager.address.rm2/<name>
<value>hadoop227:8032/<value>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2/<name>
<value>hadoop227:8030/<value>
<property>
<name>yarn.resourcemanager.webapp.address.rm2/<name>
<value>hadoop227:8088/<value>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2/<name>
<value>hadoop227:8031/<value>
<property>
<name>yarn.resourcemanager.admin.address.rm2/<name>
<value>hadoop227:8033/<value>
<property>
<name>yarn.resourcemanager.ha.admin.address.rm2/<name>
<value>hadoop227:23142/<value>
修改配置文件workers
<code>vi /home/hadoop/hadoop/etc/hadoop/workers/<code>
這個文件裡面填寫的是存儲/計算節點(HDFS和YARN)的主機名稱,內容如下:
hadoop223
hadoop224
hadoop225
hadoop226
hadoop227
hadoop228
至此Hadoop的基礎安裝配置部分全部完成。後面還有兩篇,配置後操作以及第一次啟動,日常如何啟動,您可以持續關注後續文章。
閱讀更多 石哥話科技 的文章