您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么部署Hadoop集群”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么部署Hadoop集群”吧!
環境準備
一共用5臺機器作為硬件環境,全都是centos 6.4
namenode & resourcemanager 主服務器: 192.168.1.1
namenode & resourcemanager 備服務器: 192.168.1.2
datanode & nodemanager 服務器: 192.168.1.100 192.168.1.101 192.168.1.102
zookeeper 服務器集群(用于namenode 高可用的自動切換): 192.168.1.100 192.168.1.101
jobhistory 服務器(用于記錄mapreduce的日志): 192.168.1.1
用于namenode HA的NFS: 192.168.1.100
環境部署
一、加入CDH4的YUM倉庫
1.***的辦法是把cdh5的包放到自建的yum倉庫中,如何自建yum倉庫請看 自建YUM倉庫
2.如果不想自建yum倉庫,在所有的hadoop機器執行以下操作加入cdn4的yum倉庫
wget http://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm sudo yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm
二、創建用于namenode HA的NFS服務器
1.登錄192.168.1.100,執行以下腳本createNFS.sh
#!/bin/bash yum -y install rpc-bind nfs-utils mkdir -p /data/nn_ha/ echo "/data/nn_ha *(rw,root_squash,all_squash,sync)" >> /etc/exports /etc/init.d/rpcbind start /etc/init.d/nfs start chkconfig --level 234 rpcbind on chkconfig -level 234 nfs on
1.登錄192.168.1.1,創建腳本目錄,把腳本從git倉庫復制下來
yum –y install git mkdir –p /opt/ cd /opt/ git clone http://git.oschina.net/snake1361222/hadoop_scripts.git /etc/init.d/iptables stop
2.修改hostname
sh /opt/hadoop_scripts/deploy/AddHostname.sh
3.修改部署腳本的配置文件
vim /opt/kingsoft/hadoop_scripts/deploy/config #添加master服務器的地址,也就是namenode主服務器 master="192.168.1.1" #添加nfs服務器地址 nfsserver="192.168.1.100"
4.編輯hosts文件(此文件會同步到hadoop集群所有機器)
vim /opt/hadoop_scripts/share_data/resolv_host 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.1 nn.dg.hadoop.cn 192.168.1.2 nn2.dg.hadoop.cn 192.168.1.100 dn100.dg.hadoop.cn 192.168.1.101 dn101.dg.hadoop.cn 192.168.1.102 dn102.dg.hadoop.cn
5.執行部署腳本CreateNamenode.sh
sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
6.搭建saltstack master
PS:類似于puppet的服務器管理開源工具,比較輕量,在這里用于管理hadoop集群,調度datanode,關于saltstack的詳細請看 SaltStack部署與使用
a.安裝
yum -y install salt salt-master
b.修改配置文件`/etc/salt/master`,下面標志的是需要修改的項
修改監聽IP: interface: 0.0.0.0 多線程池: worker_threads: 5 開啟任務緩存:(官方描敘開啟緩存能承載5000minion) job_cache 開啟自動認證: auto_accept: True
c.開啟服務
/etc/init.d/salt-master start chkconfig salt-master on
7.部署過程中已經把我的sample配置復制過去了,所以只需要修改部分配置文件
a. /etc/hadoop/conf/hdfs-site.xml (其實就是按實際修改主機名地址)
<property> <name>dfs.namenode.rpc-address.mycluster.ns1</name> <value>nn.dg.hadoop.cn:8020</value> <description>定義ns1的rpc地址</description> </property> <property> <name>dfs.namenode.rpc-address.mycluster.ns2</name> <value>nn2.dg.hadoop.cn:8020</value> <description>定義ns2的rpc地址</description> </property> <property> <name>ha.zookeeper.quorum</name> <value>dn100.dg.hadoop.cn:2181,dn101.dg.hadoop.cn:2181,dn102.dg.hadoop.cn:2181,</value> <description>指定用于HA的ZooKeeper集群機器列表</description> </property>
b. mapred-site.xml
<property> <name>mapreduce.jobhistory.address</name> <value>nn.dg.hadoop.cn:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>nn.dg.hadoop.cn:19888</value> </property>
c. yarn-site.xml
property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>nn.dg.hadoop.cn:8031</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>nn.dg.hadoop.cn:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>nn.dg.hadoop.cn:8030</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>nn.dg.hadoop.cn:8033</value> </property>
三、Hadoop Namenode & resourcemanager 備服務器 環境部署
1.登錄192.168.1.2,創建腳本目錄,從主服務器把腳本同步過來
/etc/init.d/iptables stop mkdir –p /opt/hadoop_scripts rsync –avz 192.168.1.1::hadoop_s /opt/hadoop_scripts
2.執行部署腳本CreateNamenode.sh
sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
3.同步hadoop配置文件
rsync –avz 192.168.1.1::hadoop_conf /etc/hadoop/conf
4.部署saltstack客戶端
sh /opt/hadoop_scripts/deploy/salt_minion.sh
四、zookeeper服務器集群部署
zookeeper是一個開源分布式服務,在這里用于namenode 的auto fail over功能。
1.安裝
yum install zookeeper zookeeper-server
2.修改配置文件/etc/zookeeper/conf/zoo.cfg
maxClientCnxns=50 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/var/lib/zookeeper # the port at which the clients will connect clientPort=2181 #這里指定zookeeper集群內的所有機器,此配置集群內機器都是一樣的 server.1=dn100.dg.hadoop.cn :2888:3888 server.2=dn101.dg.hadoop.cn:2888:3888
3.指定當前機器的id,并開啟服務
#譬如當前機器是192.168.1.100(dn100.dg.hadoop.cn),它是server.1,id是1,SO: echo "1" > /var/lib/zookeeper/myid chown -R zookeeper.zookeeper /var/lib/zookeeper/ service zookeeper-server init /etc/init.d/zookeeper-server start chkconfig zookeeper-server on #如此類推,部署192.168.1.101
五、datanode & nodemanager 服務器部署
1.登錄datanode機器,創建腳本目錄,從主服務器把腳本同步過來
/etc/init.d/iptables stop mkdir –p /opt/hadoop_scripts rsync –avz 192.168.1.1::hadoop_s /opt/hadoop_scripts
2.修改hostname,執行部署腳本 CreateDatanode.sh
sh /opt/hadoop_scripts/deploy/AddHostname.sh sh /opt/hadoop_scripts/deploy/CreateDatanode.sh
集群初始化
到這里,hadoop集群的環境已部署完畢,現在開始初始化集群
一、namenode的HA高可用初始化
1.在namenode主服務器(192.168.1.1)執行zookeeper的failover功能格式化
sudo –u hdfs hdfs zkfc –formatZK
2.把zookeeper集群服務啟動(192.168.1.100 192.168.1.101 )
/etc/init.d/zookeeper-server start
3.把namenode主備服務器的zkfc服務起來(192.168.1.1 192.168.1.2)
/etc/init.d/hadoop-hdfs-zkfc start
4.在namenode主服務器(192.168.1.1)格式化hdfs
#確保是用hdfs用戶格式化 sudo -u hdfs hadoop namenode –format
5.***次搭建namenode高可用,需要把name.dir下面的數據復制到namenode備服務器(此坑花了好多時間)
a.在主服務器(192.168.1.1)執行
tar -zcvPf /tmp/namedir.tar.gz /data/hadoop/dfs/name/ nc -l 9999 < /tmp/namedir.tar.gz
b.在備服務器(192.168.1.2)執行
wget 192.168.1.1:9999 -O /tmp/namedir.tar.gz tar -zxvPf /tmp/namedir.tar.gz
6.主從服務都啟動
/etc/init.d/hadoop-hdfs-namenode start /etc/init.d/hadoop-yarn-resourcemanager start
7.查看hdfs的web界面
http://192.168.1.1:9080 http://192.168.1.2:9080 #如果在web界面看到兩個namenode都是backup狀態,那就是auto fail over配置不成功 #查看zkfc日志(/var/log/hadoop-hdfs/hadoop-hdfs-zkfc-nn.dg.s.kingsoft.net.log) #查看zookeeper集群的日志(/var/log/zookeeper/zookeeper.log)
8.現在可以嘗試關閉namenode主服務,看是否能主從切換
二、hdfs集群開啟
到這里,所有hadoop部署已完成,現在開始把集群啟動,驗證效果
1.把所有datanode服務器啟動
#還記得之前搭建的saltstack管理工具不,現在開始發揮它的作用,登錄saltstack master(192.168.1.1)執行 salt -v "dn*" cmd.run "/etc/init.d/hadoop-hdfs-datanode start"
2.查看hdfs web界面,看是否都成為live nodes
3.如果沒有問題,現在可以嘗試hdfs操作
#創建一個tmp目錄 sudo -u hdfs hdfs dfs -mkdir /tmp #創建一個10G大小的空文件,計算它的MD5值,并放入hdfs dd if=/dev/zero of=/data/test_10G_file bs=1G count=10 md5sum /data/test_10G_file sudo -u hdfs hdfs dfs -put /data/test_10G_file /tmp sudo -u hdfs hdfs dfs -ls /tmp #現在可以嘗試關閉一臺datanode,然后把剛才的測試文件拉取出來,再算一次MD5看是否一樣 sudo -u hdfs hdfs dfs -get /tmp/test_10G_file /tmp/ md5sum /tmp/test_10G_file
三、yarn集群開啟
hadoop除了hdfs用于大數據的分布式存儲,還有更重要的組件,分布式計算(mapreduce)。現在我們來把mapreducev2 yarn集群啟動
1.在主服務器把resourcemanager服務起來(192.168.1.1)
/etc/init.d/hadoop-yarn-resourcemanager start
2.把所有nodemanager服務啟動
#還是登陸saltstack master,執行 salt -v "dn*" cmd.run "/etc/init.d/hadoop-yarn-nodemanager start"
3.查看yarn 任務追蹤界面(http://192.168.1.1:9081/),看是否所有nodes都已加入
4.hadoop自帶有基準測試的mapreduce實例,我們利用它來測試yarn環境是否正常
#TestDFSIO測試HDFS的讀寫性能,寫10個文件,每個文件1G. su hdfs - hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.0.0-cdh5.2.1-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 1000 #Sort測試MapReduce ##向random-data目錄輸出數據 hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar randomwriter random-data ##運行sort程序 hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar sort random-data sorted-data ##驗證sorted-data 文件是否排好序 hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.0.0-cdh5.2.1-tests.jar testmapredsort -sortInput random-data \ -sortOutput sorted-data
到此,相信大家對“怎么部署Hadoop集群”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。