先說明我用的是centos7,html
而且準備了四臺虛擬機 ip分別是java
192.168.36.140node
192.168.36.141linux
192.168.36.142apache
192.168.36.143centos
去jdk下載地址下載或者在服務器中用命令下載bash
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
注意,以上jdk-8u191-linux-x64.tar.gz的地址是會變的,因此下載地址須要替換成本身的。服務器
建立目錄cookie
cd /usr/local/ mkdir java cd java
接着把安裝包上傳到java文件夾中,解壓網絡
tar zxvf jdk-8u191-linux-x64.tar.gz
配置環境變量
vi /etc/profile
在文件的末尾輸入
export JAVA_HOME=/usr/local/java/jdk1.8.0_191 export PATH=$PATH:$JAVA_HOME/bin
這裏注意本身的是否是jdk1.8.0_191
使環境變量在當前bash中生效
source /etc/profile
java環境配置完畢,注意每臺主機都要配置
hadoop下載地址選擇版本,這裏我用的是3.1.1的
由於啓動hadoop集羣咱們一般是這樣啓動的,在主節點服務器上啓動腳本,腳本里面的代碼幫助咱們啓動咱們事先配置好的從節點,這裏咱們若是不配置免密登陸的話,早期的版本會須要本身手動輸入每一臺從節點主機的密碼,至於這個3.1.1的版本,我發現直接報錯了。(這裏我也沒肯定是hadoop版本緣由仍是centos版本緣由)
我選擇主節點在192.168.36.140這臺主機上,因此我須要在這臺主機上啓動
配置流程以下
在192.168.36.140這臺主機上運行如下命令
ssh-keygen ssh-copy-id 192.168.36.140 ssh-copy-id 192.168.36.141 ssh-copy-id 192.168.36.142 ssh-copy-id 192.168.36.14
ssh-keygen命令的提示所有默認回車就能夠了
groupadd hadoop
useradd hadoop -g hadoop
此時 /home 文件下就會多出一個hadoop的文件夾,切換文件夾
cd /home/hadoop
把以前下載的hadoop安裝包上傳到該文件夾下,解壓
同時建立幾個文件夾,後面有用
mkdir /home/hadoop/datas mkdir /home/hadoop/datas/name mkdir /home/hadoop/datas/data
接着配置hadoop的環境變量
參考 1.2java環境配置
末尾添加以下代碼
export HADOOP_HOME=/home/hadoop/hadoop-3.1.1 export PATH=$PATH:$HADOOP_HOME/bin
切換到配置文件的文件夾下
cd /home/hadoop/hadoop-3.1.1/etc/hadoop
須要修改的文件有五個、hadoop-env.sh core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml
① 首先修改hadoop-env.sh
添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_191 export HDFS_NAMENODE_USER="root" export HDFS_DATANODE_USER="root" export HDFS_SECONDARYNAMENODE_USER="root" export YARN_RESOURCEMANAGER_USER="root" export YARN_NODEMANAGER_USER="root"
在低版本中不須要配置這五個user,但3.1.1版本中不配置的話會提示這些user未定義
② 修改 core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.36.140:9000</value> </property> </configuration>
③ 修改 hdfs-site.xml
<configuration> <!-- Configurations for NameNode: --> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/datas/name</value> <description>namenode產生的元數據信息保存目錄</description> </property> <property> <name>dfs.blocksize</name> <value>268435456</value> <description>文件分塊大小,決定map的數量</description> </property> <property> <name>dfs.namenode.handler.count </name> <value>100</value> </property> <!-- Configurations for DataNode: --> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/datas/data/</value> </property> <property> <name>dfs.replication</name> <value>3</value> <description>副本數量</description> </property> <property> <name>dfs.secondary.http.address</name> <value>192.168.36.141:50090</value> <description>secondarynamenode 運行節點的信息,和 namenode 不一樣節點</description> </property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
</configuration>
標紅的地方須要注意,由於我用的是ip,3.1.1版本默認拒絕沒法解析的主機名,因此若是要使用ip配置,這裏務必改爲false,不過正式狀況下仍是建議使用主機名來配置
④修改 yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>192.168.36.143</value> <description>yarn resourcemanager的主機</description> </property>
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>YARN 集羣爲 MapReduce 程序提供的 shuffle 服務</description> </property> </configuration>
⑤修改 mapred-site.xml
<configuration>
<!-- Configurations for MapReduce Applications: -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改完畢,最後確保每一臺主機都如上配置,以上配置每臺節點如出一轍
修改192.168.36.140主節點文件夾下workers ,讓主節點知道去哪臺節點上啓動從節點,這裏若是須要把主節點也當成datanode的話,能夠把主節點ip也加進去
192.168.36.140主節點上執行
hadoop namenode -format
最後記得關閉全部主機的防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
在hadoop-3.1.1目錄下執行命令
sbin/start-all.sh
若是選擇使用雲服務器玩hadoop集羣的話,操做基本上是同樣的,但有些地方須要注意了,一個服務器,會給你提供兩個ip 外網相似 21.125.26.124(隨便寫的,如下都用這個舉例公網ip),內網相似 172.0.0.16
這裏值得注意的是有些須要配置ip或主機的地方,你可能常常在log中發現一大堆 port 9000或者几几幾 in used 的錯誤信息,這時候你的網絡確定是都用公網配置的 21.125.26.124這個ip,固然若是你都使用內網172.0.0.16配置的話確定也不對,外網訪問不到主節點,因此須要這樣配置。
例如,配置主節點,這時候core-site.xml的配置文件中namenode的地址是本機,因此在這臺服務器上須要配置成內網172.0.0.16這個ip,而在配置從節點的時候,對於從節點來講主節點是在另一臺服務器上,這裏就須要配置成外網 21.125.26.124。其餘secondarynamenode 和resourcemanager配置都以此類推。