欢迎关注我的CSDN: https://blog.csdn.net/bingque6535
一. Hadoop伪分布式安装:
1. 自身免秘钥(前提):
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2. 安装hadoop:
-
解压hadoop安装包
tar xf hadoop-2.6.5.tar.gz
在这里插入图片描述 -
移动到指定目录
在这里插入图片描述 -
配置环境变量
vi /etc/profile
在这里插入图片描述 -
配置"JAVA_HOME"的路径
修改hadoop-env.sh、mapred-env.sh、/yarn-env.sh三个文件中 ”JAVA_HOME” 的路径
[root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/hadoop-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/mapred-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
在这里插入图片描述 -
配置主节点信息:
编辑“core-site.xml”文件,并配置主节点名称vi /opt/hjf/hadoop/etc/hadoop/core-site.xml
在这里插入图片描述 -
配置从节点信息:
-
编辑“hdfs-site.xml”文件
vi /opt/hjf/hadoop/etc/hadoop/hdfs-site.xml
-
配置副本数量【伪分布式只需要一个副本即可】
在这里插入图片描述 -
配置从节点名称。即哪些主机做datenode。
在这里插入图片描述
在这里插入图片描述
-
-
再次修改“hdfs-site.xml”文件:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
在这里插入图片描述
配置代码
dfs.replication 1 dfs.namenode.secondary.http-address node01:9868 在这里插入图片描述 -
再次修改“core-site.xml”文件:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml
在这里插入图片描述Hadoop.tmp.dir默认指向的路径是一个临时目录,但是“hdfs-site.xml”文件中多次调用的这个路径,如果不修改的话数据存在丢失的风险。
![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/2193837-bad10035347fa261.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/2193837-7cf29090d006a07f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/2193837-8593a1b01d770295.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
配置代码
```powershell
fs.defaultFS
hdfs://node01:9000
hadoop.tmp.dir
/var/hadoop/pseudo
```
![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/2193837-ada2db8a3328bf1e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
格式化:
hdfs namenode -format
格式化后一定要看是否出现了“successful”字样,如果没有出现,则之前的配置上有问题,后续的操作上也会出现问题。
在这里插入图片描述
3. 启动hadoop集群:
start-dfs.sh
4. HDFS一般操作
-
查询hdfs命令:
hdfs dfs
在这里插入图片描述 -
递归创建目录
hdfs dfs -mkdir -p /user/root
在这里插入图片描述 -
文件上传:
hdfs dfs -put ~/tengine-2.1.0 /user/root/tengine
在这里插入图片描述
本机存储位置:
在这里插入图片描述
5. 关闭hadoop集群:
stop-dfs.sh
二. 全分布式:
1. 免秘钥(前提)
-
生成秘钥
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
在这里插入图片描述 -
执行后目录中包含以下文件
在这里插入图片描述 -
秘钥分发
此时node01可以免秘钥访问node02、node03、node04scp id_dsa.pub node01:`pwd`/node01.pub scp id_dsa.pub node02:`pwd`/node01.pub scp id_dsa.pub node03:`pwd`/node01.pub
在这里插入图片描述
2. 安装hadoop:
-
解压hadoop安装包
在这里插入图片描述 -
移动hadoop
在这里插入图片描述 -
环境变量配置:
vi /etc/profile
在这里插入图片描述 -
配置JAVA_HPME路径
修改hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中 ”JAVA_HOME” 的路径
1. 修改文件的具体路径
powershell [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/hadoop-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/mapred-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/yarn-env.sh
2. 配置java环境变量
powershell export JAVA_HOME=/usr/java/jdk1.7.0_67
-
配置主节点信息:
-
编辑“core-site.xml”文件, 配置主节点名称和临时文件存放路径
vi /opt/hjf/hadoop/etc/hadoop/core-site.xml
在这里插入图片描述 编辑mapred-env.sh 和 yarn-env.sh文件, 指定java jdk的安装路径
-
```powershell
export JAVA_HOME=/usr/java/jdk1.7.0_67
```
![mapred-env.sh文件](https://upload-images.jianshu.io/upload_images/2193837-952a3fc8c57cc68b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![yarn-env.sh文件](https://upload-images.jianshu.io/upload_images/2193837-de0507feb5dfa66d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
hdfs-site.xml文件中设置副本数量以及secondary节点
在这里插入图片描述 -
设置从节点:
vi /opt/hjf/hadoop/etc/hadoop/slaves
在这里插入图片描述 -
分发配置文件:
scp -r /opt/hjf/ node02:`pwd` scp -r /opt/hjf/ node03:`pwd` scp -r /opt/hjf/ node04:`pwd`
在这里插入图片描述 -
为所有虚拟机配置环境变量:
export JAVA_HOME=/usr/java/jdk1.7.0_67 export HADOOP_HOME=/opt/hjf/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在这里插入图片描述 -
环境变量配置后需要重新加载:
. /etc/profile
-
格式化主节点:
hdfs namenode -format
注意: 从节点不需要格式化
三. zookeeper:
1. zookeeper安装:
将zoo_simple.cfg重命名为zoo.cfg
-
配置zoo.cfg文件
在这里插入图片描述-
设置路径:
dataDir=/var/zk
-
指定zookeeper集群包含有哪些主机,以及为主机设置编号
server.1=node02:2888:3888 server.2=node03:2888:3888 server.3=node04:2888:3888
其中:2888是主从结点间的通讯端口;3888是主节点选举时的通讯端口。
在这里插入图片描述
-
-
zookeeper分发:
scp -r zookeeper/ node03:`pwd` scp -r zookeeper/ node04:`pwd`
-
创建myid文件用于指定zookeeper主机编号:
mkdir -p /var/zk
echo 1 > /var/zk/myid 【node02中执行】
echo 2 > /var/zk/myid 【node03中执行】
echo 3 > /var/zk/myid 【node04中执行】
在这里插入图片描述
-
配置环境变量:
export JAVA_HOME=/usr/java/jdk1.7.0_67 export HADOOP_HOME=/opt/hjf/hadoop export ZOOKEEPER_HOME=/opt/hjf/zookeeper export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
在这里插入图片描述
2. 启动zookeeper:
-
在node02、node03、node04三台主机上启动zookeeper
zkServer.sh start
zookeeper集群启动成功的前提是集群中超过1半以上的主机启动
-
查询zookeeper主机的状态
zkServer.sh status
在这里插入图片描述
在这里插入图片描述默认情况只有一个leader,同时启动集群中所有主机时,leader选取的依据是启动的zookeeper主机中编号最大的为leader,其他为follower。当leader已经选取好了之后如果出现编号更大的主机也不会更改,只有再下一次切换时才会重新分配。
-
启动zookeeper客户端:
zkCli.sh
在这里插入图片描述
在这里插入图片描述
3. 关闭Zookeeper
-
关闭namenode
关闭状态为active的namenode节点时,通过浏览器不能访问。并且状态为standby的namenode节点会自动切换成active
hadoop-daemon.sh stop namenode
-
关闭zkfc:
关闭状态为active的namenode节点的zkfc时,通过浏览器能访问,NameNode的状态变为standby。并且状态为standby的namenode节点会自动切换成active
powershell hadoop-daemon.sh stop zkfc
在这里插入图片描述
4. Zookeeper客户端的一般操作
-
help:帮助
在这里插入图片描述 -
create:创建节点
在这里插入图片描述
-
delete:删除节点
在这里插入图片描述 -
get:获取节点信息
• cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
• mZxid:是节点的修改时间所对应的Zxid格式时间戳。
• pZxid:节点的子目录修改时间所对应的Pxid格式时间戳。 -
set:修改节点信息
在这里插入图片描述
四. Hadoop高可用安装:
https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
1. 两个NN结点间要相互免秘钥。
见前面的详细内容
2. 配置在hdfs-site.xml中的内容:
dfs.replication
2
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
node01:8020
dfs.namenode.rpc-address.mycluster.nn2
node02:8020
dfs.namenode.http-address.mycluster.nn1
noed01:50070
dfs.namenode.http-address.mycluster.nn2
node02:50070
dfs.namenode.shared.edits.dir
qjournal://node01:8485;node02:8485;node03:8485/mycluster
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_dsa
dfs.journalnode.edits.dir
/var/hadoop/ha/journalnode
3. 配置core-site.xml文件:
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/var/hadoop/ha
ha.zookeeper.quorum
node02:2181,node03:2181,node04:2181
4. 配置文件分发:
scp core-site.xml hdfs-site.xml node02:`pwd`
scp core-site.xml hdfs-site.xml node03:`pwd`
scp core-site.xml hdfs-site.xml node04:`pwd`
5. 启动journalnode
-
在node01、node02、node03三台主机上启动journalnode
hadoop-daemon.sh start journalnode
在这里插入图片描述 -
格式化NameNode主机的一个节点【任选一个即可】
hdfs namenode -format
在这里插入图片描述 -
启动刚才格式化的那台NameNode主机:
hadoop-daemon.sh start namenode
在这里插入图片描述 -
将格式化后的内容同步给另一个节点。
hdfs namenode -bootstrapStandby
在这里插入图片描述
五. Hadoop集群的启动和关闭
1. Hadoop集群启动:
-
启动zookeeper集群
分别启动zookeeper所有节点
zkServer.sh start
-
启动HDFS集群
start-dfs.sh
-
启动yarn集群
start-yarn.sh
注意: HDFS集群和Yarn集群可以用
start-all.sh
命令一起启动 -
启动ResourceManager节点
每个ResourceManager节点都需要单独启动
powershell yarn-daemon.sh start resourcemanager
-
WebUI
在这里插入图片描述
在这里插入图片描述 -
集群节点信息
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
2. Hadoop集群关闭:
-
关闭 HDFS集群和yarn集群
stop-dfs.sh stop-yarn.sh
注意:
- HDFS集群和Yarn集群可以用
stop-all.sh
命令一起关闭 - 在一个NameNode节点关闭即可
- HDFS集群和Yarn集群可以用
-
关闭resourcemanager节点
每个ResourceManager节点都需要单独关闭
powershell yarn-daemon.sh stop resourcemanager
-
关闭zookeeper集群
需要在每个节点单独关闭
powershell zkServer.sh stop
欢迎关注我的CSDN: https://blog.csdn.net/bingque6535