centos 7 hadoop2.7完全分散式安裝
此文件為hadoop2.7和java8的安裝。此配置只是用來學習大資料時所撰寫
這裡建立完全分散式叢集用三臺主機,主機名和IP分別如下
hadoop111A | 192.168.241.111 |
---|---|
hadoop222B | 192.168.241.112 |
hadoop333C | 192.168.241.113 |
進入虛擬機器,先把防火牆關掉
systemctl status firewalld.service 檢視防火牆 systemctl stop firewalld.service 關閉防火牆 systemctl start firewalld.service 開啟防火牆 systemctl disable firewalld.service 關閉開機啟動 systemctl enable firewalld.service 開啟開機啟動
檢視現在的IP ifconfig
既然是用來學習,那我們就直接用root使用者來搭建,這樣也比較方便
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.241.111
PREFIX=24
GATEWAY=192.168.241.2
DNS1=192.168.241.2
DNS2=8.8.8.8
重啟網路配置 systemctl restart network
現在就可以看到IP已經更改了
修改主機名 vim /etc/hostname
hadoop111A
安裝 epel-release 注:Extra Packages for Enterprise Linux是為“紅帽系”的作業系統提供額外的軟體包,適用於RHEL, CentOS 和 Scientific Linux。相當於是一個軟體倉庫,大多數rpm包在官方repository中是找不到的 yum install -y epel-release 如果linux安裝的是最小系統版,還需要安裝如下工具; net-toll:工具包集合,包含ifconfig等命令 yum install -y net-toll vim編輯器 yum install -y vim
配置hadoop使用者具有root許可權,方便後期家sudo執行root許可權的命令 vim /etc/sudoers
##Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
niuma ALL=(ALL) NOPASSWD:ALL
如果系統自帶有jdk,那就把原來的jdk刪除掉
檢視jdk rpm -qa | grep java
刪除jdk rpm -e | --nodeps 軟體包名
解壓hadoop和jdk
tar -zxvf 軟體包名
新增/配置環境變數
##JAVA_HOME
JAVA_HOME=/home/niuma/bigdata/java/jdk
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar:$JER_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
##HADOOP_HOME
export HADOOP_HOME=/home/niuma/bigdata/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
應用這個配置 source /etc/profile
檢視hadoop hadoop version
檢視jdk java -version
配置對映;配置Windows對映C:\Windows\System32\drivers\etc\hosts win10一般有限制,需要將這個檔案 移動出來修改後再放回去。把ip和主機名新增在最下面
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.241.111 hadoop111A
192.168.241.112 hadoop222B
192.168.241.113 hadoop333C
修改linux的對映 vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.241.111 hadoop111A
192.168.241.112 hadoop222B
192.168.241.113 hadoop333C
配置core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://hadoop111A:8020</value> </property> <property> <name>io.file.buffer.size</name> <value>4096</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/niuma/bigdata/tmp</value> </property>
配置hadoop-env.sh
#The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/niuma/bigdata/java/jdk
配置hdfs-site.xml
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.block.size</name> <value>134217728</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/niuma/hadoopdata/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/niuma/hadoopdata/dfs/data</value> </property> <property> <name>fs.checkpoint.dir</name> <value>file:///home/niuma/hadoopdata/checkpoint/dfs/cname</value> </property> <property> <name>fs.checkpoint.edits.dir</name> <value>file:///home/niuma/hadoopdata/checkpoint/dfs/cname</value> </property> <property> <name>dfs.http.address</name> <value>hadoop111A:50070</value> </property> <property> <name>dfs.secondary.http.address</name> <value>hadoop222B:50090</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property>
配置yarn-site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop111A</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoop111A:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop111A:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoop111A:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoop111A:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoop111A:8088</value> </property>
配置mapred-site.xml
1 <property> 2 <name>mapreduce.framework.name</name> 3 <value>yarn</value> 4 <final>true</final> 5 </property> 6 <property> 7 <name>mapreduce.jobhistory.address</name> 8 <value>hadoop111A:10020</value> 9 </property> 10 <property> 11 <name>mapreduce.jobhistory.webapp.address</name> 12 <value>hadoop111A:19888</value> 13 </property>
配置slaves
hadoop111A hadoop222B hadoop333C
配置完畢後關機,在虛擬機器裡面完全克隆兩臺虛擬機器,並將其IP和主機名修改好 完事後,進行免密登陸設定,執行指令建立免密登陸金鑰 ssh-keygen -t rsa 一路回車下去後,私鑰和公鑰就在 /home/niuma/.ssh 裡面建立了 進入這個資料夾便可以看到 cd /home/niuma/.ssh 將公鑰拷貝到其他主機,例如我現在將hadoop111A的公鑰拷貝到hadoop222B ssh-copy-id hadoop222B 這個時候我們就能在hadoop222B主機的 /home/niuma/.ssh 裡面看到一個名為authorized_keys的檔案 這裡面便存 放著hadoop111A主機的公鑰 按照這個方法都拷貝一遍,的是現在如果切換到root使用者去訪問別的主機還是需要密碼的,所以我們切換到 root使用者再進行一遍這樣的操作
可以試著用shh連線其他主機,如果報錯說無法識別相應主機,那就是前面對映沒設定好,如果報錯說無法建 立連線,那就修改 /etc/ssh/ssh_config 裡面的內容 StrictHostKeyChecking ask 開啟註釋修改為 StrictHostKeyChecking no 即可
現在就可以格式化hadoop了,期間沒有任何報錯那就是成功了。如果報錯說意外終止,那就是前面的配置文 件中的標籤沒有打好。在主機上格式化即可
格式化叢集 hadoop namenode -format
啟動/關閉hdfs服務 start-dfs.sh stop-dfs.sh 啟動/關閉yarn服務 start-yarn.sh stop-yarn.sh
HDFS web訪問頁面 http://hadoop111a:50070 YARN web訪問頁面