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 22:15
下一篇 2017-12-09 12:27

相關推薦

  • bash的基礎特性之一

    bash的基礎特性之一 命令歷史:shell進程會保存會話中此前用戶使用過的命令; history:命令的用法 history 【-c】【-d #】 【n】或者【文件名】     -c:清空命令歷史     -d 【#】:刪除指定的命令歷史…

    Linux干貨 2016-12-18
  • Python

    Python中os和shutil模塊
    csv文件和ini文件簡介

    Linux干貨 2017-10-30
  • 學習宣言

    不妥協,不氣餒,朝著自己的目標前進。

    Linux干貨 2016-10-24
  • CentOS 6.5下OpenVPN的搭建

    一、openvpn原理 二、安裝openvpn 三、制作相關證書     3.1 制作CA證書     3.2 制作Server端證書     3.3 制作Client端證書 四、配置Server端 五、配置Client端 一、openvp…

    Linux干貨 2016-04-21
  • Shell腳本編程初步

        shell是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。shell腳本(shell script),是一種為shell編寫的腳本程序。業界所說的shell通常都是指shell腳本,但shell和shell script是兩個不同的概念。shell編程跟java、php編程…

    Linux干貨 2016-08-24
  • Linux第一周學習心得

                           LINUX入門學習心得 Shell基本命令 ### shell可執行命令分類 ### 內部命令:由shell自帶得,而且通過某命令形式提供 help 內部命令列表 enble cmd 啟用內部命…

    Linux干貨 2017-07-15
欧美性久久久久