hadoop安裝(虛擬機)
環境:CentOS7java8
安裝包:hadoop-2.10.0.tar.gz
一、系統設置(可以先在一個系統裏做,再克隆修改)
!!!(零)到(五)都在master下進行!!!
!!!(零)到(五)都在master下進行!!!
!!!(零)到(五)都在master下進行!!!
(零)配置網絡與安裝java
1、linux虛擬機NAT網絡配置
2、linux使用JDK替換OpenJDK流程
(一)同步時鐘
1、yum install -y ntpdate
安裝ntpdate
2、crontab -e
自動打開一個空文件,輸入i
進入編輯模式,輸入0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
,按esc
後輸入:wq
保存退出
可以輸入ntpstat查看是否同步,下圖說明每512秒更新一次,校正約23*10-6秒。(需要等5到10分鐘。如果是最小化安裝版,自行
yum -y install ntp
安裝配置ntp,然後輸入service ntpd star
和chkconfig ntpd on
最後輸入reboot
重啓)
(二)配置主機名(可選)
1、CentOS7及以後使用hostnamectl set-hostname 主機名
進行修改
(三)關閉防火牆和SELINUX
1、停止防火牆systemctl stop firewalld
2、禁止開機啓動systemctl disable firewalld
3、查看防火牆狀態firewall-cmd --state
,顯示not running則關閉成功
4、輸入vi /etc/selinux/config
編輯config文件
5、將SELINUX=enforcing改爲SELINUX=disabled,保存退出
(四)創建用戶賬號(可選)
1、輸入useradd 用戶名
創建用戶
(五)配置hosts列表
1、輸入vi /etc/hosts
編輯hosts文件
2、由於準備一個master兩個slave,所以追加如下(數量與ip因人而異)
192.168.153.100 master
192.168.153.101 slave1
192.168.153.102 slave2
3、esc
後輸入:wq
保存退出
(六)關機(shutdown -h now)克隆
1、對克隆完的虛擬機按照(五)裏面的ip進行配置。過程類似(零),但是隻用改下ip就行了
2、配置對應主機名(可選)
!!!下面過程需要同時開啓master、slave1和slave2!!!
!!!下面過程需要同時開啓master、slave1和slave2!!!
!!!下面過程需要同時開啓master、slave1和slave2!!!
(七)免密鑰登錄配置
1、HadoopMaster節點
(1)進入之前創建的用戶(如果有)輸入ssh-keygen –t rsa
,一直回車,會在/root/.ssh中生成id_rsa id_rsa.pub兩個文件
(2)複製公鑰文件cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(3)修改 authorized_keys 文件的權限chmod 600 ~/.ssh/authorized_keys
(4)將authorized_keys文件複製到slave1和slave2節點ssh-copy-id slave1
和ssh-copy-id slave2
2、HadoopSlave節點
(1)同1_(1)輸入ssh-keygen -t rsa
(2)cd ~/.ssh
進入文件夾,修改 authorized_keys 文件的權限chmod 600 ~/.ssh/authorized_keys
(authorized_keys已經存在)
(3)在master輸入ssh slave1
和ssh slave2
如果如下圖所示則成功
二、Hadoop配置部署
每個節點上的Hadoop配置基本相同,在master節點操作,然後完成複製到另一個節點。
(一)解壓、配置環境變量(環境變量必須使用絕對路徑)
(解壓)類似linux虛擬機NAT網絡配置中,安裝包hadoop-2.10.0.tar.gz在/root/coding/hadoop目錄下
1、在/root/coding/hadoop(自定)目錄下輸入tar -xf hadoop-2.10.0.tar.gz
(配置環境變量hadoop-env.sh)
2、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh
,將# export JAVA_HOME=${JAVA_HOME}改爲export JAVA_HOME=/root/coding/java/jdk1.8.0_231
(配置環境變量yarn-env.sh)
3、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/yarn-env.sh
,將# export JAVA_HOME=/home/y/libexec/jdk1.6.0/改爲export JAVA_HOME=/root/coding/java/jdk1.8.0_231(去掉#)
(二)幾個xml文件的配置
(配置核心組件core-site.xml)
1、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml
,用下面的代碼替換core-site.xml中的內容:(下面的<value>/root/coding/hadoop/hadoopdata</value>裏面可以自己選地址)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/coding/hadoop/hadoopdata</value>
</property>
</configuration>
(配置文件系統hdfs-site.xml)
2、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml
,用下面的代碼替換core-site.xml中的內容:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
(配置文件統統yarn-site.xml)
3、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml
,用下面的代碼替換core-site.xml中的內容:
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>
(配置計算架mapred-site.xml)
4、先輸入cp /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml
。再輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml
,用下面的代碼替換core-site.xml中的內容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(三)在master節點配置slaves文件
1、輸入vi /root/coding/hadoop/hadoop-2.10.0/etc/hadoop/slaves
,追加
slave1
slave2
(四)複製到從節點
1、cd /root/coding/hadoop
2、將hadoop-2.10.0文件夾拷貝到slave1和slave2上scp -r hadoop-2.10.0 root@slave1:/root/coding/hadoop
和scp -r hadoop-2.10.0 root@slave2:/root/coding/hadoop
(五)配置Hadoop啓動的系統環境變量
該操作需要同時在master、slave1和slave2上操作
1、cd
到/root目錄,然後編輯文件vi ~/.bash_profile
2、將下面的代碼追加到.bash_profile末尾:
#HADOOP
export HADOOP_HOME=/root/coding/hadoop/hadoop-2.10.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
3、保存退出後執行命令source ~/.bash_profile
4、在/root/coding/hadoop下創建hadoopdata目錄
三、啓動Hadoop集羣
(格式化文件系統)
1、在master主機執行hdfs namenode -format
(如果提示hdfs命令不存在,則每個主機都需要重新執行次source ~/.bash_profile
命令)
(啓動 Hadoop)
2、進入hadoop主目錄cd /root/coding/hadoop/hadoop-2.10.0
,然後執行命令sbin/start-all.sh
,輸入yes
四、驗證
1、在master端輸入jps
命令回車,如果出現ResourceManager、Jps、
NameNode和SecondaryNameNode四個進程,則代表主節點安裝成功
2、在slave端輸入jps
命令回車,如果出現NodeManager、DataNode
和Jps三個進程,則代表從節點安裝成功
3、在瀏覽器輸入http://master:50070/(master根據自己電腦不一樣,作者是192.168.153.100:50070)檢查namenode和datanode是否正常
4、在瀏覽器輸入http://master:18088/(master根據自己電腦不一樣,作者是192.168.153.100:18088)檢查yarn是否正常
5、運行PI實例檢查集羣是否成功
(1)cd /root/coding/hadoop/hadoop-2.10.0/share/hadoop/mapreduce/
進入Hadoop安裝主目錄,執行下面的命令:
hadoop jar /root/coding/hadoop/hadoop-2.10.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar pi 10 10
輸出PI值則集羣安裝成功且正常啓動
五、使用說明
1、開啓/root/coding/hadoop/hadoop-2.10.0/sbin/start-all.sh
2、關閉/root/coding/hadoop/hadoop-2.10.0/sbin/stop-all.sh
3、哪個節點的datanode沒有啓動,使用rm -rf /root/coding/hadoop/hadoopdata/dfs/data/current刪除對應節點目錄/root/coding/hadoop/hadoopdata/dfs/data下的current,然後從新執行一下 hadoop namenode -format,然後再開啓hadoop。