来源:千峰科技王从明老师
第一节:远程连接工具的使用
1.1)使用远程工具的原因
实际生产环境中,员工不会直接登陆服务器,而是通过远程连接工具,进行远程登陆。那么就需要知道服务器的IP地址,一个用户名和密码。
1.2)常用的远程工具
x-shell,scp 、finalshel、putty、MobaXterm
1.3)使用MobaXterm
1)安装(略)
2)连接虚拟机(前提是物理机能ping通虚拟机)
点击Session--->选择SSH---输入服务器IP--->指定用户名root---->ok---->输入密码(密码不可见)
第二节:免密登陆认证
2.1 使用免密登陆认证的原因
当我们频繁的在一台机器A上连接另外一台机器B时,不论是复制文件还是删除文件,或者是进行其他操作。那么都要使用机器B的用户名和密码。每次都需要输入密码,那么效率降低了。这个时候,如果可以不输入密码,还有一定的安全性,可以防止黑客在中间截取信息。那么就需要一种安全认证技术。
2.2 密码登陆认证的配置
1)准备工作
需求:机器A免密登陆机器B
如:ssh localhost/127.0.0.1
注意:如果使用ssh时,命令不存在,需要安装ssh的客户端软件
[root@manager04 ~]# yum -y install openssh-clients.x86_64
当机器A想免密登陆机器B时,需要在机器A上生成一对密钥,分别是一个私钥文件和公钥文件,还需要将机器A的公钥
复制到机器B的相关用户的~/.ssh/目录下,并且更名为authorized_keys,还要保证此文件的权限600,.ssh目录的权限是700.
生成密钥的命令
[root@master04 ~]# ssh-keygen -t rsa 一路回车
[root@master04 ~]# cd .ssh
[root@master04 ~]# cp id_rsa.pub authorized_keys
2)测试
[root@master04 ~]# ssh 机器B的IP地址
案例:ssh 192.168.81.141
说明:正确格式:ssh username@ip
如果不写username@,连接的用户默认与当前机器的用户名相同
3)原理
[图片上传失败...(image-3835b9-1576065751546)]
第三节:Hadoop搭建的环境要求
3.1 环境需求
在搭建HDFS的完全分布式集群时,需要以下环境要求:
--1. 防火墙需要关闭
--2. 时间同步
--3. 免密登陆认证
--4. 域名映射
--5. jdk环境
--6. hadoop的环境变量
3.2 防火墙的关闭
[root@master04 ~]# service iptables status #查看防火墙的状态
[root@master04 ~]# service iptables stop #临时关闭防火墙
[root@master04 ~]# service iptables start #临时开启防火墙
[root@master04 ~]# chkconfig iptables off #关闭防火墙自动启动功能
[root@master04 ~]# chkconfig iptables on #关闭防火墙自动启动功能
[root@master04 ~]# chkconfig iptables --list #关闭防火墙自动启动功能
3.3 时间同步
有些软件在集群上使用要求机器之间的时间差不能超过一定范围,比如HDFS要求集群的时间差不能超过30分钟,hbase要求集群上的时间差不能超出30秒,所以时间需要同步。
可以临时同步一下网络上其他服务器的时间
[root@master04 ~]# ntpdate -u 时间服务器的ip或者域名
注意:如果命令不存在,安装ntpdate软件
[root@master04 ~]# yum -y install ntpdate.x86_64
可以同步微软的服务器
[root@master04 ~]# ntpdate -u time.windows.com
[root@master04 ~]# date 查看时间
[root@master04 ~]# date -s 'yyyy-MM-dd HH:mm:ss'
3.4 免密登陆认证
参考第二节内容
3.5 域名映射
1)说明
人类不习惯记忆数字的IP地址形式,更适合记忆一些有意义的见名知意的一些单词。因此在计算机领域中,有这样一种映射关系,即主机名与ip的映射,域名与ip的映射
举例:
www.baidu.com 169.128.12.234
www.baidu.com 169.128.12.222
master04 192.168.81.140
2)配置域名映射
[root@master04 ~]# vi /etc/hosts
..........省略.........
192.168.81.140 manager04
192.168.81.141 follower01
192.168.81.142 follower02
192.168.81.143 follower03
192.168.81.144 follower04
192.168.81.145 follower05
192.168.81.146 follower06
192.168.81.147 follower07
192.168.81.148 follower08
测试:是否能使用主机名,远程连接自己
[root@master04 ~]# ssh manager04
3.6 jdk环境搭建
1)准备工作
设计两个目录
/opt/software/ #用来存储软件包
/opt/apps/ #用来安装软件的
将jdk-8u162-linux-x64.tar.gz 和hadoop-2.7.6.tar.gz 上传到/opt/software里
2)解压jdk到/opt/apps/
[root@master04 software]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/apps/
3)更名操作
[root@master04 software]# cd ../apps/
[root@master04 apps]# mv jdk1.8.0_162/ jdk
4)配置环境变量
4.1)说明
系统级别的文件:/etc/profile
用户级别的文件:~/.bash_profile 选择此文件进行配置
~/.bashrc
4.2)配置
[root@master04 apps]# vi ~/.bash_profile
........省略.........
# java environment
export JAVA_HOME=/opt/apps/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
4.3)使当前窗口生效(或者reboot)
[root@master04 apps]# source ~/.bash_profile
4.4)验证
[root@master04 apps]# java -version
[root@master04 apps]# javac
3.7 hadoop环境变量的配置
1)解压缩
[root@master04 software]# tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps/
2)更名
[root@master04 software]# cd ../apps/
[root@master04 apps]# mv hadoop-2.7.6/ hadoop
3)配置
[root@master04 apps]# vi ~/.bash_profile
........省略.........
# hadoop environment
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4)使当前窗口生效
[root@manager04 apps]# source ~/.bash_profile
5)验证
[root@manager04 apps]# hadoop version
Hadoop 2.7.6
........省略.........
第四节:HDFS的完全分布式集群
4.1 搭建方式的说明:
--1. 独立模式
--2. 伪分布式模式
--3. 完全分布式模式
总结:
-1 独立模式和伪分布式模式,
--相同点:都是在单节点上进行安装。
--不同点:独立模式使用的本地文件系统即linux文件系统,没有守护进程
伪分布式模式使用的分布式文件系统,即分布式思想
-2 伪分布式模式和完全分布式模式
--相同点:都是使用了分布式思想,即使用分布式文件系统
都是独立的守护进程,每个进程单独占用一个jvm.
(namenode,datanode,secondarynamenode)
--不同点:伪分布式使用单节点来维护整个分布式文件系统,
而完全分布式使用多台机器(节点)来共同维护一个分布式文件系统
伪分布式只有一个datanode
完全分布式有N个datanode
4.2 完全分布式集群的配置
1)守护进程布局
master04: namenode datanode secondarynamenode resourcemanager nodemanager
worker1: datanode nodemanager
worker2: datanode nodemanager
2)配置文件的说明
需要修改:$HADOOP_HOME/etc/hadoop/目录下的一些文件
-- core-site.mxl
-- hdfs-site.xml
-- mapred-site.xml
-- yarn-site.xml
-- slaves
-- hadoop-env.sh
-- yarn-env.sh
4.3 配置步骤
1)配置core-site.xml
[root@master04 hadoop]# pwd
/opt/apps/hadoop/etc/hadoop
[root@master04 hadoop]# vi core-site.xml
fs.defaultFS l
hdfs://master04:8020
hadoop.tmp.dir
/opt/apps/hadoop/tmp
2)hdfs-site.xml
[root@master04 hadoop]# vi hdfs-site.xml
dfs.namenode.name.dir
/opt/apps/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file://${hadoop.tmp.dir}/dfs/data
dfs.replication
3
dfs.namenode.secondary.http-address
master04:50090
3)mapred-site.xml
[root@master04 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master04 hadoop]# vi mapred-site.xml
mapreduce.framework.name
yarn
4)yarn-site.xml
[root@master04 hadoop]# vi yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
master04
5)slaves文件:配置所有datanode节点的主机名
[root@master04 hadoop]# vi slaves
master04
worker1
worker2
6)hadoop-env.sh
[root@master04 hadoop]# vi hadoop-env.sh
......省略........
找到下面这两行,设置jdk的路径
# The java implementation to use.
export JAVA_HOME=/opt/apps/jdk
......省略........
7)yarn-env.sh
[root@master04 hadoop]# vi yarn-env.sh
......省略........
找到下面这两行,设置jdk的路径
# some Java parameters
export JAVA_HOME=/opt/apps/jdk
......省略........
3.6 搭建另外两台机器:worker1 worker2
1)说明,使用完整克隆,克隆manager
优势:
-- 不用在重新配置所需要的环境(jdk,hadoop,防火墙,免密,域名映射)
-- 不用再重新配置core-site.xml等7个文件
-- 免密登陆认证:三台机器的私钥和公钥是同一套
2)克隆步骤
右键点机要克隆的机器--->管理-->克隆--->下一步-->虚拟机的当前状态-->创建完整克隆--命名--->完成
CentOS_6.5_64_slave1 192.168.81.131
CentOS_6.5_64_slave2 192.168.81.132
3)修改新克隆机器的主机名
#使用root用户修改主机名为slave1 另一台机器同样的操作
[root@manager ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave1
4)修改新克隆机器的IP地址
[root@manager ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改克隆机器的IPADDR、DEVICE、HWADDR
IPADDR=192.168.81.131 #另一台机器同样的操作
DEVICE=eth0 #不变,修改70-persistent-net.rules的名字为eth0
HWADDR= # 参考70-persistent-net.rules里新生成的HWADDR
[root@manager ~]# vi /etc/udev/rules.d/70-persistent-net.rules
删除或注释掉旧的MAC地址,别忘记eth1改为eth0
[root@manager ~]# service network restart
[root@manager ~]# reboot
5)重启后,验证免密登陆认证是否有效
目的:去掉第一次的询问
3.7 格式化集群
1)目的
目的1:使分布式文件系统可用
目的2:生成clusterID(分布式文件系统的唯一标识符)
目的3:生成hadoop.tmp.dir这个属性配置的路径,以及生成namenode守护进程所管理数据的存储路径
目的4:生成namenode守护进程所管理的元数据的存储文件fsimage
2)格式化的命令
注意:一定要选择namenode所在的节点上进行格式化
[root@manager ~]# hdfs namenode -format
出现 Storage directory /opt/apps/hadoop/tmp/dfs/name has been successfully formatted.
表示成功
3.8 开启集群
1)开启集群的命令
start-dfs.sh # 开启hdfs的相关守护进程的,namenode,datanode,secondaryname
start-yarn.sh # 开启yarn的相关守护进程的, resoucemanager,nodemanager
start-all.sh # 开启hdfs和yarn的守护进程
hadoop-daemon.sh #y用于单独开启或关闭守护进程的
hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]
stop-dfs.sh
stop-yarn.sh
stop-all.sh
2)使用jps查看节点上的守护进程
[root@manager ~]# jps
3)使用http协议查看分布式文件系统
http://192.168.81.130:50070
- 第一次开启集群时
--1:生成了logs目录
--2:在每一个datanode节点生成了${hadoop.tmp.dir}/dfs/data 目录,用于存储文件块。
--3:在${hadoop.tmp.dir}/dfs/name/current目录下生成了edit日志文件
5)暴力解决节点不正常的方式
--1. 删除三台机器上的tmp目录和logs目录
--2. 在manager机器上重新格式化
第四节:HDFS的常用shell指令
3.1 常用指令:
hdfs dfs -mkdir /input
hdfs dfs -put ./word.txt /input/
hdfs dfs -cat /input/word.txt
........
第五节:windows平台配置hadoop环境
4.1 windows环境配置
4.1.1 解压hadoop-2.7.6.tar.gz到本地磁盘,如下图:
4.1.2 配置环境变量
- HADOOP_HOME: D:\apps\hadoop-2.7.6
- PATH: %HADOOP_HOME%\bin 和 %HADOOP_HOME%\sbin
4.1.3 由于Hadoop是在32位系统上编译的,并且对windows支持不好,所以需要把64的编译本地库文件(下图的两个文件),放入bin目录中。
10.1.4 验证环境变量是否生效:
C:\Users\Michael>hadoop version
10.1.5 如果报错:Error: JAVA_HOME is incorrectly set
那就找到etc/hadoop/下的hadoop-env.cmd,修改JAVA_HOME的内容如下格式即可
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_172
4.2 HDFS的资源jar包提取
为了方便开发,我们可以将相关的jar提取出来。
1. 在hadoop-2.7.6目录下创建以上目录(参考图片)
2. 进入share目录中的doc子目录,搜索default.xml。将四个默认的xml文件copy到_default目录中,方便以后查看
3. 进入share目录中,搜索*.jar。将搜索到的所有jar文件copy到_jars目录下,重复的跳过。大约208个jar包左右。
4. 在_jars目录中,搜索test,将搜索到的jar包剪切到_tests目录下。这是一些关于程序测试的jar包,提取出来。大约36个左右
5. 在_jars目录中,搜索source,将搜索到的jar包剪切到_sources目录下。这些jar包是hadoop的源码包。想看源码的可以使用,大约28个
6. 此时,_jars目录中剩下的都是hadoop的相关api的jar包,大约144个。