**hadoop搭建集羣**
一、關閉防火牆
1)查看防火牆狀態
firewall-cmd --state
2)中止firewall
systemctl stop firewalld.service
3)禁止firewall開機啓動
systemctl disable firewalld.service
二、時間同步
命令行輸入:yum install ntp 下載ntp插件 ,
下載完成後 命令行輸入:ntpdate -u ntp1.aliyun.com
而後命令行輸入:date
若是出現以下狀況表示配置成功:
三、配置服務器(我這裏是以4臺爲例)
1個主節點:doop1(192.168.0.103),2個(從)子節點,doop2(192.168.0.104),doop3(192.168.0.105),doop4(192.168.0.106)
二、配置主節點名(192.168.0.103)
在命令行輸入: vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=doop1
配置三臺子節點名(192.168.0.104),(192.168.0.105),(192.168.0.106):
vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=doop2
vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=doop3
vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=doop4
四、配置hosts
打開主節點的hosts文件,將文件的前兩行註釋掉 (註釋當前主機的信息)並在文件中添加全部hadoop集羣的主機息。
在命令行輸入: vi /etc/hosts
添加3臺服務器的節點名信息
192.168.0.103 doop1
192.168.0.104 doop2
192.168.0.105 doop3
192.168.0.106 doop4
保存以後,將主節點的hosts分別拷貝到其餘兩個子節點
命令行分別輸入:
scp /etc/hosts root@192.168.0.104:/etc/
scp /etc/hosts root@192.168.0.105:/etc/
scp /etc/hosts root@192.168.0.106:/etc/
而後分別執行(重啓服務器也能夠不執行下面的語句): /bin/hostname hostsname
五、配置ssh無密碼訪問
生成公鑰密鑰對
在每一個節點上分別執行:
命令行輸入:ssh-keygen -t rsa
一直按回車直到生成結束
執行結束以後每一個節點上的/root/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub
其中前者爲私鑰,後者爲公鑰
在主節點上執行:
scp /root/.ssh/id_rsa.pub root@doop2:/root/.ssh/
scp /root/.ssh/id_rsa.pub root@doop3:/root/.ssh/
scp /root/.ssh/id_rsa.pub root@doop4:/root/.ssh/
在xshell窗口的所有會話輸入下面命令:
cd /root/.ssh/
cp id_rsa.pub authorized_keys
最後測試是否配置成功
在doop1上分別執行
ssh doop2
ssh doop3
能正確跳轉到兩臺子節點的操做界面便可,一樣在每一個子節點經過相同的方式登陸主節點和其餘子節點也能無密碼正常登陸就表示配置成功。
六、安裝jdk(四臺機器都要安裝)
安裝在同一位置/usl/local/jdk1.8.0_191
下載JDK : https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
解壓JDK : tar -zxvf /usr/local/jdk-8u73-linux-x64.gz
配置環境變量, 編輯profile文件:
vi /etc/profile
在profile文件末尾添加如下代碼:
export JAVA_HOME=/usr/local/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
保存後,使剛纔編輯的文件生效:source /etc/profile
測試是否安裝成功:java -version
七、安裝hadoop
安裝位置自定,例如安裝在/usr/local目錄下面
下載hadoop包:
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
放在/usr/local目錄下,解壓hadoop
tar -zxvf hadoop-2.7.7.tar.gz
在usr下面生成hadoop-2.7.7目錄
配置環境變量:
vi /etc/profile
在末尾添加:
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存後使新編輯的profile生效:
source /etc/profile
八、配置hadoop
配置hadoop配置文件
須要配置的文件的位置爲/usr/local/hadoop-2.7.7/etc/hadoop,須要修改的有如下幾個文件:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
masters
其中hadoop-env.sh和yarn-env.sh裏面都要添加jdk的環境變量
hadoop-env.sh中
添加以下代碼:
export JAVA_HOME=/usr/local/jdk1.8.0_191 到以下位置:
yarn-env.sh中
添加以下代碼:
export JAVA_HOME=/usr/local/jdk1.8.0_191 到以下位置:
core-site.xml中
添加以下代碼:
<configuration>
<!--數據傳輸端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://doop1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--hadoop臨時目錄,fsimage臨時文件也會存在這個目錄,數據不能丟-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/temp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value></value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value></value>
</property>
</configuration>
注:上面代碼中file後的路徑下的temp文件夾須要本身建立
hdfs-site.xml中
添加以下代碼:
<configuration>
<!--secondary namenode配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>doop4:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>doop4:50091</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.web.ugi</name>
<value>supergroup</value>
</property>
</configuration>
slaves中配置DataNode主機名
修改爲:
doop2
doop3
doop4
masters中配置SecondaryNameNode主機名
修改爲:
doop4
mapred-site.xml中
(注意要將mapred-site.xml.template重命名爲 .xml的文件 mv mapred-site.xml.template mapred-site.xml)
添加以下代碼:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>doop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>doop1:19888</value>
</property>
</configuration>
yarn-site.xml中
添加以下代碼:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>doop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>doop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>doop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>doop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>doop1:8088</value>
</property>
</configuration>
拷貝hadoop安裝文件到子節點
主節點上執行:
rm -rf /usr/local/hadoop-2.7.7/share/doc/
scp -r /usr/local/hadoop-2.7.7 root@doop2:/usr/local/
scp -r /usr/local/hadoop-2.7.7 root@doop3:/usr/local/
scp -r /usr/local/hadoop-2.7.7 root@doop4:/usr/local/
拷貝profile到子節點
主節點上執行:
scp /etc/profile root@doop2:/etc/
scp /etc/profile root@doop3:/etc/
scp /etc/profile root@doop4:/etc/
在三個子節點上分別使新的profile生效:
source /etc/profilehtml
配置Hadoop環境變量
vi ~/.bash_profile
在末尾添加:
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinjava
scp ~/.bash_profile root@doop2:/root/
scp ~/.bash_profile root@doop3:/root/
scp ~/.bash_profile root@doop4:/root/
加載配置
source ~/.bash_profilenode
格式化主節點的namenode
主節點上進入hadoop目錄而後執行:
hdfs namenode -format
提示:successfully formatted表示格式化成功linux
啓動hadoop
主節點上在hadoop目錄下執行:
start-all.sh
中止hadoop
stop-all.shweb
主節點上jps進程以下:
NameNode
ResourceManager
每一個子節點上的jps進程以下:
DataNode
NodeManager
doop會多個進程
SecondaryNameNode
若是這樣表示hadoop集羣配置成功shell
訪問地址http://192.168.0.103:50070/
若是想經過主機名訪問,需配置windows的host文件
而後看下頁面apache