hadoop-3.4.6高可用安装
在X-shell上安装jdk
Jps无法发现 要在虚拟机上对java环境进行配置
重新查找jps 无法查找到,重新进行配置环境 当jps出现数字和jps时表示配置成功
同步所有服务器的时间
①利用 date命令查看机子的当前时间
时间不能差太大,否则集群启动后某些进程跑不起来。
②若时间不同步
1)yum进行时间同步器的安装
yum -y install ntp
2)执行同步命令
ntpdate time1.aliyun.com
装机之前的配置文件检查
1.-cat /etc/sysconfig/network
查看HOSTNAME是否正确
2.-cat /etc/hosts
查看IP映射是否正确
若不正确,可以改文件,也可以把node03上的用scp分发过去。
3. -cat /etc/sysconfig/selinux里是否
SELINUX=disabled
4. service iptables status查看防火墙是否关闭
NN与其他三台机子的免秘钥设置
6. 在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost
一下
2.-cd .ssh ,并ll查看一下
3.把node03的公钥发给其他三台机子
5.同理给其他节点发送公钥并在各个节点上把node03的公钥追加上
scp id_dsa.pub node05:pwd
/node03.pub
scp id_dsa.pub node06:pwd
/node03.pub
4. 在node04的.ssh目录下看是否有node03.pub
如果有,那就追加到authorized_keys
cat node03.pub >> authorized_keys
并且在node03上ssh node04看是否免密钥了,
给node05、06都追加一下node03.pub,也就是在node05、06的
.ssh目录下执行cat node03.pub >> authorized_keys
两个NN间互相免密钥
1.node03与node04间互相免密钥: node03可免密钥登录node04,那现
需node04上能免密钥登node03,所以
在node04上:
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost验证一下
分发到node03上:scp id_dsa.pub node03:pwd
/node04.pub
在node03的.ssh目录下,cat node04.pub >> authorized_keys,
在node04上ssh node03验证一下可否免密钥登录
修改namenode的一些配置信息
1.vi hdfs-site.xml
去掉snn的配置
dfs.namenode.secondary.http-address
node03:50090
增加以下property
2.vi core-site.xml
<!– 集群名称mycluster–>
fs.defaultFS
hdfs://mycluster
<!– zookeeper布署的位置–>
ha.zookeeper.quorum
node07:2181,node08:2181,node09:2181
2.vi slaves
node04
node05
node06
3.安装hadoop
cd /opt ,将其下的ldy目录分发到node04、05、06
scp –r ldy/ node04:pwd
scp –r ldy/ node05:pwd
scp –r ldy/ node06:pwd
4.将hdfs-site.xml和core-site.xml分发到node04、05、06
-scp hdfs-site.xml core-site.xml node04:pwd
-scp hdfs-site.xml core-site.xml node05:pwd
-scp hdfs-site.xml core-site.xml node06:pwd
安装zookeeper
1.解压安装zookeeper
tar xf zookeeper-3.4.6.tar.gz -C /opt/ldy
2.修改zookeeper的配置文件
cd /opt/ldy/zookeeper-3.4.6/conf
给zoo_sample.cfg改名
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
改dataDir=/var/ldy/zk
并在末尾追加
server.1=node04:2888:3888
server.2=node05:2888:3888
server.3=node06:2888:3888
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口
3.把zookeeper分发到其他节点
scp -r zookeeper-3.4.6/ node05:pwd
scp -r zookeeper-3.4.6/ node06:pwd
并用ll /opt/ldy检查下看分发成功没
4.给每台机子创建刚配置文件里的路径
mkdir -p /var/ldy/zk
对node04来说:
echo 1 > /var/ldy/zk/myid
cat /var/ldy/zk/myid
对node05来说:
echo 2 > /var/ldy/zk/myid
cat /var/ldy/zk/myid
对node06来说:
echo 3 > /var/ldy/zk/myid
cat /var/ldy/zk/myid
5.在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/ldy/zookeeper-3.4.6
export PATH=
P
A
T
H
:
/
u
s
r
/
j
a
v
a
/
j
d
k
1.7.
0
6
7
/
b
i
n
:
PATH:/usr/java/jdk1.7.0_67/bin:
PATH:/usr/java/jdk1.7.067/bin:HADOOP_HOME/bin:
H
A
D
O
O
P
H
O
M
E
/
s
b
i
n
:
HADOOP_HOME/sbin:
HADOOPHOME/sbin:ZOOKEEPER_HOME/bin
6.然后在把/etc/profile分发到其他node05、node06
scp /etc/profile node05:/etc
scp /etc/profile node06:/etc
source /etc/profie,这步千万别忘
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh
7.启动zookeeper
全部会话:zkServer.sh start
接着用zkServer.sh status查看每个zookeeper节点的状态
启动journalnode
Why启动journalnode?
为了使两台namenode间完成数据同步
在03、04、05三台机子上分别把journalnode启动起来
hadoop-daemon.sh start journalnode
用jps检查下进程启起来了没
随意挑一台namenode上执行hdfs namenode –format
另一台namenode不用执行,否则clusterID变了,找不到
集群了。
格式化任一namenode
然后,启动刚刚格式化的那太namenode
hadoop-daemon.sh start namenode
给另一namenode同步数据
那另一台namenode怎么办,什么都不做吗?
我们要给另一台namenode同步一下数据,用以下命令
格式化zkfc
hdfs zkfc -formatZK
在node04上执行zkCli.sh打开zookeeper客户端看
hadoop-ha是否打开
启动hdfs集群
在node03上启动hdfs集群:
start-dfs.sh
注意:如果那个节点没起来到hadoop目录下去看那个
node的日志文件log
用浏览器访问node03:50070和node04:50070
关闭集群命令:stop-dfs.sh
关闭zookeeper命令:zkServer.sh stop