hadoop分布式集群

分布式集群的實現

環境:

192.168.36.129 ? node1:NN,SNN,RM

?192.168.36.130 ?node2:DN,NM

192.168.36.132 ? node3:DN,NM

192.168.36.133 ? node4:DN,NM

配置java環境,每個節點時間同步,基于主機名互相通信,定義/etc/hosts 文件

 

如果需要通過master節點啟動或停止集群,還需要在master節點上配置運行服務的用戶(如hdfs和yarn)能以密鑰認證的方式通過ssh遠程連接只各節點

1、配置java環境 – – – – – 每個節點

# vim /etc/profile.d/java.sh
   export JAVA_HOME=/usr
# yum install java-1.8.0-openjdk-devel -y    
# java -version

2、基于主機名互相通信,定義/etc/hosts 文件 – – – – – 每個節點

192.168.36.129 ? node1 ? master

192.168.36.130 ?node2

192.168.36.132 ? node3

192.168.36.133 ? node4

3、創建用戶(最好id相同)、密鑰認證- – – – -每個節點

【 master 】

# groupadd hadoop

# useradd hadoop

# echo “queen” | passwd –stdin hadoop

【 其他節點 】

# useradd hadoop

# echo “queen” | passwd –stdin hadoop

 

【 master 】

# su - hadoop
$ ssh-keygen -t rsa -P ''
$ for i in 2 3 4; do ssh-copy-id -i .ssh/id_rsa.pub hadoop@node{$i}; done

說明:在Hadoop啟動以后,Namenode是通過SSH(Secure Shell)來啟動和停止各個datanode上的各種守護進程的,這就須要在節點之間執行指令的時候是不須要輸入密碼的形式,故我們須要配置SSH運用無密碼公鑰認證的形式。
以本文中的三臺機器為例,現在node1是主節點,他須要連接node2和node3。須要確定每臺機器上都安裝了ssh,并且datanode機器上sshd服務已經啟動。

( 說明:$ssh-keygen? -t? rsa
這個命令將為hadoop上的用戶hadoop生成其密鑰對,詢問其保存路徑時直接回車采用默認路徑,當提示要為生成的密鑰輸入passphrase的時候,直接回車,也就是將其設定為空密碼。生成的密鑰對id_rsa,id_rsa.pub,默認存儲在/home/hadoop/.ssh目錄下然后將id_rsa.pub的內容復制到每個機器(也包括本機)的/home/dbrg/.ssh/authorized_keys文件中,如果機器上已經有authorized_keys這個文件了,就在文件末尾加上id_rsa.pub中的內容,如果沒有authorized_keys這個文件,直接復制過去就行.)

4、安裝并配置hadoop

4.1 【 node1 】

# mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn}
# chown -R hadoop:hadoop /data/hadoop/hdfs/
# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
# tar xf hadoop-2.7.4.tar.gz -C /bdapps/
# cd /bdapps
# ln -sv hadoop-2.7.4 hadoop
# cd hadoop/
# vim /etc/profile.d/hadoop.sh???????????????? 
???? export HADOOP_PREFIX=/bdapps/hadoop
???? export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
???? export HADOOP_YARN_HOME=${HADOOP_PREFIX}
???? export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
???? export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
???? export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
# ./etc/profile.d/hadoop.sh
# scp /etc/profile.d/hadoop.sh node2:/etc/profile.d/
# scp /etc/profile.d/hadoop.sh node3:/etc/profile.d/
# scp /etc/profile.d/hadoop.sh node4:/etc/profile.d/
# mkdir logs
# chmod g+w logs
# chown -R hadoop:hadoop ./*
# cd etc/hadoop
# vim core-site.xml??????? 

?? <configuration>
??????? <property>
???????????? <name>fs.defaultFS</name>?????????
???????????? <value>hdfs://master:8020</value>????
???????????? <final>true</final>
??? ????</property>
?? </configuration>

# vim hdfs-site.xml???? 

?<configuration>

?     <property>

?            <name>dfs.replication</name>

?            <value>2<value>       建議3個

?     </propery>

?      <property>

?             <name>dfs.namenode.name.dir</name>

?             <value>file:///data/hadoop/hdfs/nn</value>

?      </propery>

?       <property>

?              <name>dfs.datanode.data.dir</name>

              ?<value>file:///data/hadoop/hdfs/dn</value>

?</propery>

?<property>

?<name>fs.checkpoint.dir</name>

?<value>file:///data/hadoop/hdfs/snn<value>

?</propery>

?<property>

?<name>fs.checkpoint.dir</name>

?<value>file:///data/hadoop/hdfs/snn<value>

?</propery>

?</configuration>
注意,如果需要其他用戶對hdfs有寫入權限,還需要添加

?<property>

???? <name>dfs.premissions</name>?????? 不做嚴格權限限制

???? <value>false<value>

?</propery>

# cp mapred-site.xml.template mapred-site.xml

# vim mapred-site.xml??? 

<configuration>

? <property>

??? <name>mapred.framwork.name</name>

??? <value>yarn</value>

? </property>

</configuration>

# vim yarn-site.xml

<configuration>

? <property>

??? <name>yarn.resourcemanager.address</name>

??? <value>master:8032</value>

? </property>

? <property>

??? <name>yarn.resourcemanager.scheduleraddress</name> #調度器地址

??? <value>master:8030</value>

? </property>?

? <property>

??? <name>yarn.resourcemanager.resource-tracker.address</name> #資源追蹤器地址

??? <value>master:8031</value>

? </property>

? <property>

??? <name>yarn.resourcemanager.admin.address</name> #管理地址

??? <value>master:8033</value>

? </property>

? <property>

??? <name>yarn.resourcemanager.webapp.address</name>

??? <value>master:8088</value>

? </property>

? ??<property>

??? <name>yarn.nodemanager.aux-service</name> #輔助服務

??? <value>mapreduce_shuffle</value>

? </property>

? <property>

??? <name>yarn.nodemanager.auxservice.mapreduce_shuffle.class</name> #shuffle類

??? <value>org.apache.hadoop.mapred.ShuffleHandler</value>

? </property>

? ??<property>

??? <name>yarn.resourcemanager.scheduler.class</name>

??? <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

? </property> ?

</configuration>
# vim slave
 node2
 node3
 node4


4.2 【 其他節點 】

# mkdir -pv /bdapps /data/hadoop/hdfs/{nn,snn,dn}
# chown -R hadoop:hadoop /data/hadoop/hdfs/
# tar xf hadoop-2.7.4.tar.gz -C /bdapps/
# cd /bdapps
# ln -sv hadoop-2.7.4 hadoop
# cd hadoop/
# mkdir logs
# chmod g+w logs
# chown -R hadoop:hadoop ./*
# cd etc/hadoop

【 ?node1 】

# su - hadoop
# scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/
# scp /bdapps/hadoop/etc/hadoop/* node3:/bdapps/hadoop/etc/hadoop/
# scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/

4.3 ?格式化并啟動hadoop

【 node1 】
# su - hdfs
$ hadoop namenode -format

其中的“Storage directory /hadoop/temp/dfs/name has been successfully formatted”一行信息表明
對應的存儲已經格式化成功。

在master節點上執行Hadoop的start-all.sh腳本即可實現啟動整個集群。
$ start-dfs.sh 

驗證
node2:# su - hadoop
       $ jps
node1:
$ hdfs dfs -mkdir /test

??? drwxr-xr-x - hdfs supergroup????????????

$ hdfs -dfs -put /etc/fstab /test/fstab
$ hdfs dfs -lsR /?? 查看是否上傳成功
$ hdfs dfs -cat /test/fstab

$ start-yarn.sh
驗證
node2:
$ jps


4.4 測試

1)HDFS和YARN ResourceManager各自提供了一個Web接口,通過這些接口可檢查HDFS集群以及YARN集群的相關狀態信息

HDFS-NameNode ? ? http://node1:50070

YARN-ResourceManager ? ? http://node1:8088

 

5. HDFS常用操作

hadoopdfs -ls 列出HDFS下的文件
hadoop dfs -ls in 列出HDFS下某個文檔中的文件
hadoop dfs -put test1.txt test 上傳文件到指定目錄并且重新命名,只有所有的DataNode都接收完數據才算成功
hadoop dfs -get in getin 從HDFS獲取文件并且重新命名為getin,同put一樣可操作文件也可操作目錄
hadoop dfs -rmr out 刪除指定文件從HDFS上
hadoop dfs -cat in/* 查看HDFS上in目錄的內容
hadoop dfsadmin -report 查看HDFS的基本統計信息,結果如下
hadoop dfsadmin -safemode leave 退出安全模式
hadoop dfsadmin -safemode enter 進入安全模式

 

 

 

原創文章,作者:nene,如若轉載,請注明出處:http://www.www58058.com/89610

(0)
nenenene
上一篇 2017-12-08
下一篇 2017-12-09

相關推薦

  • 來兩道百度的shell開胃菜

    1、寫腳本實現,可以用shell、perl等。在目錄/tmp下找到100個以abc開頭的文件,然后把這些文件的第一行保存到文件new中。 方法1: #!/bin/sh for files in `find /tmp -type f -name "abc*"|h…

    Linux干貨 2016-09-19
  • DNS配置案例 二

    DNS配置案例 二 DNS配置案例 二 1 §·DNS的配置與案例 1 §·測試工具 3 §·主配置文件格式:/etc/named.conf 7 §·緩存名稱服務器的配置: 8 §·配置解析一個正向區域 : 以loveme.com域為例: 10 §·配置解析一個反向區域 : 以loveme.com域為例: 15 §·配置從DNS服務器 19 §·問…

    Linux干貨 2016-09-26
  • 文件的權限詳解(一)

    文件的權限 修改文件的屬主和屬組 chown 功能:更改屬主命令,同時也能更改屬組用法:   chown  選項  [屬主名][:屬組名]  文件名  (分隔符改成.也行) chown  選項   參考的文件=要更改的文件 chown [OPTION]… –reference=R…

    Linux干貨 2016-08-04
  • shell– 腳本編程

    編程基礎 腳本基本格式 變量 運算 條件測試 流程控制 函數 數組 高級字符串操作 高級變量 配置用戶環境 編程基礎 程序:指令+數據 程序編程風格:     過程式:以指令為中心,數據服務于指令     對象式:以數據為中心,指令服務于數據 shell程序:提供了編程能力,解釋…

    Linux干貨 2016-08-21
  • MySQL/MariaDB基礎性知識及DDL操作詳解

    前言 MySQL/MariaDB是一個開放源碼的小型關聯式數據庫管理系統,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL/MariaDB作為網站數據庫。 基礎架構 MySQL核心組件 連接池:認證、線程重用、連接數限制、內存檢查、緩存 SQL接口:DDL, DML, 關系型數據庫的基本抽…

    Linux干貨 2015-05-07
  • linux系統用戶管理和grep正則表達式練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@suywien ~]# cp -rpv /etc/skel/ /home/tuser1/ ‘/etc/skel/’ -> ‘/home/tuser1/’ ‘/etc/skel/.mozilla’ ->…

    Linux干貨 2018-03-25
欧美性久久久久