1.首先要有軟件
Centos7(自己找,我懶!!!)
hadoop2.9.2 這這這!!!
安裝位置推薦: /opt/hadoop
安裝方法: 安裝shell6操作虛擬機,打開到/opt/hadoop文件下,使用shell6的rz命令進行下載,把本地的安裝包導入虛擬機中,注意如果不去克隆操作那麼每個虛擬機都需要導入
JDK 這這這!!!
1.不建議用自帶的java環境,容易找不到安裝路徑
2.大版本保證是:jdk-8u 安裝環境是:linux-x64.tar.gz(自選) 至於202 203 還是204 問題不大
2.安裝三個虛擬機
安裝方式:
1.命名隨意,但注意名稱太難記就是作死…
2.命名:依次 hservice1,hservice2,hservice3. (即H服務器1,H服務器2,H服務器3)
其中 H1爲主節點,其他爲從節點
3.主節點:主要配置,配置完主節點,爲了方便通過克隆得到2,3從節點 再去修改他的ip hostname 和一些配置
3.配置關係
1.通過 ip addr
查看ip地址
2.通過 hostname
查看當前主機名
3.通過 hostname + 空格 + 新主機名
更改主機名稱
4.把三個虛擬機的主機名改爲與虛擬機名稱相同,名稱很重要,配置中需要用到不可馬虎
5.修改/etc/hosts文件 vi /etc/hosts
注: 點擊 i 進行修改,修改之後 ESC 然後冒號 : wq 保存 ( :q 是不保存)
若不克隆三個都要改…
改完檢查三個虛擬機是否可以ping通
7.配置使hservice1主節點可以通過ssh免密登錄 hservice2 hservice3
1.在主節點下輸入
ssh-keygen
生成默認格式的密匙key,此過程會在/root/.ssh/文件件夾下生成id_rsa(私鑰)和id_rsa.pub(公鑰)。
2.四次回車
3.ssh-copy-id hservice1
即可免密連接hservice1 自己 (原理自己查沒空寫)
4.ssh-copy-id hservice2
即可通過h1免密連接hservice2
5.ssh hservice1
連接回hservice1(不連接回是操作h2了)
6.ssh-copy-id hservice3
即可通過h1免密連接hservice3
7.ssh
分別測試是否連接成功
4.安裝hadoop以及修改配置文件
- 把下載的hadoop-2.9.2.tar.gz包上傳到 /opt/hadoop ,hadoop文件夾需要通過
mkdir hadoop
創建,然後通過 shell6的rz命令上傳(其他任意方法均可) - 解壓壓縮包
tar -xvf hadoop-2.9.2.tar.gz
- 在根目錄(/root)下創建hadoop的工作目錄
mkdir /root/hadoop mkdir /root/hadoop/tmp mkdir /root/hadoop/var mkdir /root/hadoop/dfs mkdir /root/hadoop/dfs/name mkdir /root/hadoop/dfs/data
- 修改配置文件(位置:
/opt/hadoop/etc/hadoop
)
- core-site.xml
如此:
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hservice:9000</value>
</property>
這般:
- hadoop-env.sh
如此:
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
//(自己的JDK安裝路徑)獲取方法上面有
這般:
- hdfs-site.xml
如此:
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/dfs/name</value>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/dfs/data</value>
<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
這般:
- mapred-site.xml
目錄下應該存在名字mapred-site.xml.template的文件,把這個文件進行復制,然後重命名爲mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
需要在本文件夾下運行,不然需要增加物理路徑複製
如此:
<property>
<name>mapred.job.tracker</name>
<value>hservice1:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
這般:
- slaves
刪除localhost,添加內容:hservice2,hservice3
如此:
hserver2
hserver3
這般:
- yarn-site.xml
如此:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hservice1</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<discription>每個節點可用內存,單位MB,默認8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
這般:
5. 重複4步驟在從節點虛擬機
6.啓動hadoop
- 找到bin目錄和超級bin目錄
- 初始化
hservice1爲namenode(主節點),hservice2和hservice3都是datanode(從節點),只需要對hserver1進行初始化操作,即對hdfs進行格式化。
在bin目錄下執行(一定是bin)
./hadoop namenode -format
格式化成功後,可以在看到在/root/hadoop/dfs/name/目錄多了一個current目錄,而且該目錄內有一系列文件出現如圖表示成功:
- 瞭解包含的各種啓動方式(一定是sbin)
7.關閉防火牆
若不關閉外網連接時會被防護牆攔截,導致失敗
8.測試
用本地瀏覽器訪問: ip+端口號 (需要自己虛擬機的ip)
http://192.168.175.134:50070
這般:
9.有用的雜亂的
注1:
防火牆操作命令(CentOS7)
- systemctl stop firewalld.service #關閉防火牆
- systemctl disable firewalld.service #禁止防火牆開機啓動
- firewall-cmd --state #查看防火牆狀態,是否是running
4.firewall-cmd --reload #重啓防火牆- firewall-cmd --zone=public --add-port=80/tcp --permanent開啓端口
命令含義:
–zone #作用域
–add-port=80/tcp #添加端口,格式爲:端口/通訊協議
–permanent #永久生效,沒有此參數重啓後失效
注2:
java安裝路徑尋找:
java -version #查看版本
java -verbose #在輸出設備上顯示虛擬機運行信息
路徑如圖: