HA分散式叢集搭建
一:HA分散式配置的優勢:
1,防止由於一臺namenode掛掉,叢集失敗的情形
2,適合工業生產的需求
二:HA安裝步驟:
1,安裝虛擬機器
1,型號:VMware_workstation_full_12.5.0.11529.exe linux映象:-7-x86_64-DVD-1611.iso
注意點:
1,網路選擇了橋接模式(可以防止route總變),(桌上型電腦或伺服器最好設定自己的本機的ip地址為靜態的ip)
2,安裝過程中選擇了基礎建設模式(infras...),(減少記憶體的消耗,但又保證基本的環境的模式)
3,使用者名稱root 密碼 root
4,網路配置使用了手動網路固定網路ip4地址(固定ip)
2,linux基本環境配置:(操作都在root許可權下進行的)
1,驗證網路服務:ping <主機ip> 主機 ping <虛擬機器ip> ping 驗證ok
備份ip地址:cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
2,防火牆設定:關閉並禁用防火牆
關閉防火牆 systemctl stop firewalld.service(cetos7與前面系列的iptables不同)
禁用防火牆:systemctl disable firewalld.service
檢視防火牆狀態:firewall-cmd --state
3,設定hosts,hostname,network
vim /etc/hostname
ha1
vim /etc/hosts
192.168.1.116 ha1
192.168.1.117 ha2
192.168.1.118 ha3
192.168.1.119 ha4
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ha1
4,安裝一些必要的包:(不一定全)
yum install -y chkconfig
yum install -y Python
yum install -y bind-utils
yum install -y psmisc
yum install -y libxslt
yum install -y zlib
yum install -y sqlite
yum install -y cyrus-sasl-plain
yum install -y cyrus-sasl-gssapi
yum install -y fuse
yum install -y portmap
yum install -y fuse-libs
yum install -y -lsb
5,安裝Java和Scala
java版本:jdk-7u80-linux-x64.rpm
scala版本:scala-2.11.6.tgz
驗證是否有java:
rpm -qa|grep java 無
tar -zxf jdk-8u111-linux-x64.tar.gz
tar -zxf scala-2.11.6.tgz
mv jdk1.8.0_111 /usr/java
mv scala-2.11.6 /usr/scala
配置環境變數:
vim /etc/profile
export JAVA_HOME=/usr/java
export SCALA_HOME=/usr/scala
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
6,重啟,驗證上述是否設定 ok :重啟 使用vm快照,命名為:初始化ok java,scala,主機名,防火牆,ip
3,+zookeeper叢集配置
1,叢集機準備
連線克隆:對ha1克隆出ha2,ha3,ha4
對ha2,ha3,ha4修改網路地址,network,防火牆
vim /etc/sysconfig/network-scripts/ifcfg-ens33
116 117/118/119
service network restart
vim /etc/hostname
vim /etc/sysconfig/network
systemctl disable firewalld.service
對ha2,ha3,ha4重啟驗證ip,網路,防火牆,分別對三臺機快照,命名為:初始化ok java,scala,主機名,防火牆,ip
2,叢集框架圖
機子 |
Namenode |
DataNode |
Zookeeper |
ZkFC |
JournalNode |
RM |
DM |
Ha1 |
1 |
|
1 |
1 |
1 |
1 |
|
Ha2 |
1 |
1 |
1 |
1 |
1 |
|
1 |
Ha3 |
|
1 |
1 |
|
1 |
|
1 |
Ha4 |
|
1 |
|
|
|
|
1 |
3,ssh通訊: ok後 快照 ssh ok
四臺機:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ha1下:
scp ~/.ssh/* root@ha2:~/.ssh/
scp ~/.ssh/* root@ha3:~/.ssh/
scp ~/.ssh/* root@ha4:~/.ssh/
驗證:
ssh ha2/ha3/ha4
4,zookeeper叢集配置:
1,配置環境變數
zook安裝:
tar -zxf zookeeper-3.4.8.tar.gz
mv zookeeper-3.4.8 /usr/zookeeper-3.4.8
修改配置檔案:
export ZK_HOME=/usr/zookeeper-3.4.8
scp /etc/profile root@ha2:/etc/
scp /etc/profile root@ha3:/etc/
source /etc/profile
2,zoo.cfg配置(加粗修改出)
cd /usr/zookeeper-3.4.8/conf
cp zoo_sample.cfg zoo.cfg
內容:
# 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.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper/datas
dataLogDir=/opt/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=ha1:2888:3888
server.2=ha2:2888:3888
server.3=ha3:2888:3888
3,啟動zookeeper叢集:
#三臺機(ha1,ha2,ha3)
新建資料夾:
mkdir -p /opt/zookeeper/datas
mkdir -p /opt/zookeeper/logs
cd /opt/zookeeper/datas
vim myid 寫1/2/3
#分發給ha2,ha3(注意ha4不需要)
cd /usr
scp -r zookeeper-3.4.8 root@ha2:/usr
scp -r zookeeper-3.4.8 root@ha3:/usr
#啟動(三臺機)
cd $ZK_HOME/bin
zkServer.sh start
zkServer.sh status 一個leader和連個follower
5,hadoop叢集配置
1,配置環境變數:
版本:hadoop-2.7.3.tar.gz
tar -zxf hadoop-2.7.3.tar.gz
mv hadoop2.7.3 /usr/hadoop2.7.3
export JAVA_HOME=/usr/java
export SCALA_HOME=/usr/scala
export HADOOP_HOME=/usr/hadoop-2.7.3
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
2,hadoop.env.sh配置:
export JAVA_HOME=/usr/java
source hadoop.env.sh
hadoop version 驗證ok
3,hdfs-site.xml配置:後續修改後傳送(scp hdfs-site.xml root@ha4:/usr/hadoop-2.7.3/etc/hadoop/)
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>ha1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>ha2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>ha1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>ha2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://ha2:8485;ha3:8485;ha4:8485/mycluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/jn/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
4,core-site.xml配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>ha1:2181,ha2:2181,ha3:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop2</value>
<description>A base for other temporary directories.</description>
</property>
</configuration>
5,yarn-site.xml配置
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ha1</value>
</property>
</configuration>
6,mapred-site.xml配置
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
7,slaves配置:
vim slaves
ha2
ha3
ha4
8,分發並啟動:
#分發
scp -r hadoop-2.7.3 root@ha2:/usr/
scp -r hadoop-2.7.3 root@ha3:/usr/
scp -r hadoop-2.7.3 root@ha4:/usr/
#啟動JN(在ha2,ha3,ha4)
cd sbin
./hadoop-daemon.sh start journalnode
[root@ha2 sbin]# jps
JournalNode
Jps
QuorumPeerMain(#zk啟動的執行緒)
#ha1:namenode格式化
cd bin
./hdfs namenode -format
#zk格式化
./hdfs zkfc -formatZK
#可以檢視cd /opt/hadoop2檔案來檢視後設資料是否格式化正常
#ha2:namenode格式化
1,ha1要先啟動namenode:
./hadoop-daemon.sh start namenode
2,ha2下
./hdfs namenode -bootstrapStandby
9,驗證:http://192.168.1.116:50070/驗證 ok 快照 ha模式下的hadoop+zookeeper安裝ok
#hdfs叢集驗證
[root@ha1 sbin]# ./stop-dfs.sh
Stopping namenodes on [ha1 ha2]
ha2: no namenode to stop
ha1: stopping namenode
ha2: no datanode to stop
ha3: no datanode to stop
ha4: no datanode to stop
Stopping journal nodes [ha2 ha3 ha4]
ha3: stopping journalnode
ha4: stopping journalnode
ha2: stopping journalnode
Stopping ZK Failover Controllers on NN hosts [ha1 ha2]
ha2: no zkfc to stop
ha1: no zkfc to stop
[root@ha1 sbin]# ./start-dfs.sh
ha1下:
[root@ha1 sbin]# jps
Jps
NameNode
QuorumPeerMain
DFSZKFailoverController
[root@ha2 dfs]# jps
NameNode
DFSZKFailoverController
Jps
DataNode
JournalNode
QuorumPeerMain
[root@ha3 sbin]# jps
QuorumPeerMain
DataNode
JournalNode
Jps
[root@ha4 sbin]# jps
Jps
DataNode
JournalNode
配置yarn和mapred
[root@ha1 sbin]# jps
NameNode
DFSZKFailoverController
Jps
QuorumPeerMain
ResourceManager
[root@ha2 hadoop]# jps
DataNode
NameNode
DFSZKFailoverController
JournalNode
NodeManager
Jps
QuorumPeerMain
[root@ha3 ~]# jps
QuorumPeerMain
DataNode
NodeManager
Jps
JournalNode
[root@ha4 ~]# jps
JournalNode
NodeManager
DataNode
Jps
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31530407/viewspace-2152756/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hbase分散式叢集搭建分散式
- HDFS分散式叢集搭建分散式
- hadoop分散式叢集搭建Hadoop分散式
- Hadoop分散式叢集搭建_1Hadoop分散式
- Hadoop HA叢集簡單搭建Hadoop
- Cassandra安裝及分散式叢集搭建分散式
- 搭建 ElasticSearch 6.1.3分散式叢集Elasticsearch分散式
- HBase篇--搭建HBase完全分散式叢集分散式
- 分散式協調服務☞zookeeper叢集搭建分散式
- 使用Docker Swarm搭建分散式爬蟲叢集DockerSwarm分散式爬蟲
- ElasticSearch 分散式叢集Elasticsearch分散式
- kafka系列二:多節點分散式叢集搭建Kafka分散式
- hadoop叢集搭建——單節點(偽分散式)Hadoop分散式
- 搭建分散式 Redis Cluster 叢集與 Redis 入門分散式Redis
- 高階k8s HA 叢集搭建(一)K8S
- BigData~03:Hadoop05 ~ HA叢集搭建Hadoop
- Canalv1.1.4版本搭建HA叢集
- Hadoop框架:叢集模式下分散式環境搭建Hadoop框架模式分散式
- golang分散式與叢集Golang分散式
- elasticsearch(三)---分散式叢集Elasticsearch分散式
- HA叢集heartbeat配置--NginxNginx
- 億級Web系統搭建——單機到分散式叢集Web分散式
- 億級Web系統搭建:單機到分散式叢集Web分散式
- hadoop分散式叢集搭建前期準備(centos7)Hadoop分散式CentOS
- 叢集和分散式區別分散式
- 分散式與叢集的困惑分散式
- LNMP 分散式叢集(四):Memcached 快取伺服器的搭建LNMP分散式快取伺服器
- Centos7搭建hadoop3.3.4分散式叢集CentOSHadoop分散式
- Linux學習之使用RHCS套件搭建HA高可用叢集Linux套件
- Hadoop完全分散式叢集配置Hadoop分散式
- Redis面試題及分散式叢集Redis面試題分散式
- 分散式、微服務、叢集,個人理解分散式微服務
- Mongodb分散式叢集副本集+分片MongoDB分散式
- 分散式與叢集的區別分散式
- mongodb的分散式叢集(3、分片)MongoDB分散式
- Elasticsearch分散式搜尋叢集配置Elasticsearch分散式
- Hadoop 及Spark 分散式HA執行環境搭建HadoopSpark分散式
- CentOS 7上搭建Spark 3.0.1 + Hadoop 3.2.1分散式叢集CentOSSparkHadoop分散式