一:本地源YUM
1.Centos自带的YUM源更新太慢,可以使用更改本地源的方法来安装软件。
2.我们通常使用 yum install 命令来在线安装 linux系统的软件, 这种方式可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
3.yum 的配置文件在 /etc/yum.repos.d 目录下, 其中有多个配置文件,每一个配置文件中都可以配置一个或多个repository。
二:基础配置-本地源,防火墙,时区,同步时间等。
0.linux关闭防火墙:ufw disable。显示:Filewall stopped and disable on system startup
1.Centos:
关闭防火墙:systemctl stop firewalld
查看状态:systemctl status firewalld 关闭会显示:Active:inactive(dead)since+时间
2.主机名与映射
修改主机名:hostnamectl set-hostname
立即生效:bash
添加映射:vim /etc/hosts
ip+主机名
3.时间同步NTP
选择时区:tzselect 5亚洲 9中国 1北京时间 1Yes(覆盖时间)
tzselect命令只是告诉你选择的时区的写法,并不会生效。所以现在它还不是东8区的北京时间。
设置TZ环境变量:TZ='Asia/Shanghai';export TZ
4.时间同步协议NTP
a.安装ntp:yum install -y ntp
b.master作为时钟源
#文件/etc/ntp.conf
#server 210.72.145.44 #中国国家授时中心的IP
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 1
c.slaves手动同步时间(其他主机上只需要进行这一步)
ntpdate master #同步master上的时间
5.定时任务
crontab是用来定期执行程序的命令
crontab是用来定期执行程序的命令:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
写一个定时任务:crontab -e
键入 i ,进入编辑模式
输入内容:/10 * usr/sbin/ntpdate master
查看定时任务列表:crontab -l
Crontab格式说明 * * * * * command 取值 取值 取值 取值 取值 需要执行的 范围 范围 范围 范围 范围 命令 0-59 0-23 1-31 1-12 0-7 分钟 小时 几号 月份 星期几
写一个定时任务:crontab -e
键入i,进入编辑模式
输入内容: /10 *usr/sbin/ntpdate master
查看定时任务列表:crontab -l
**三:
(免密登录)**
1.远程登陆-SSH
a.输入ssh-keygen,一路默认回车,也可以直接执行:
-t:参数就是指定要生成的密钥类型,你这里指定的是dsa
ssh-keygen -t dsa -P -f~/.ssh/id_dsa -P就是你提供的旧密码, ‘’ 表示没有
-f是密钥的生成后的保存文件位置
RSA 即可作为数字签名,也可以作为加密算法(未被完全攻破、暴力破解)。
DSA 只能用于数字签名,而无法用于加密(某些扩展可以支持加密);
RSA 与 DSA 都是非对称加密算法,相同密钥长度RSA算法和DSA算法安全性相当。
b.将生成的公钥文件复制到授权列表
cat./id_rsa.pub>>authorized_kkeys
c.将该授权文件authorized_keys文件复制到slaves中的节点
scp ./authorized_keys root@slave:~/.ssh/
目的:将.ssh/id_rsa.pub放到其他机器上的authorized_keys中。
Master节点要把自身的公钥拷贝到自身的uthorized_keys中。
检查免密登录是否设置成功:
ssh slave1
第一次需要输入密码,后续在此访问就不要输入密码了。
注意:如果是非root用户,需要修改文件权限 chmod 600 ~/.ssh/authorized_keys
四:安装JDK
1.创建工作目录:mkdir -p /usr/java
2.下载软件:wget http://xxxx/jdk-8u221-linux-x64.tar.gz
3.解压:tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/java/
4.环境变量:/etc/profile
export JAVA_HOME=/usr/JAVA/jdk.8.0_221
export PATH=$PATH:$JAVA_HOME/bin
5.生效:source /etc/profile
五:协调服务ZOOKEEPER
1.下载解压zoo安装包 /usr/zookeeper
2.环境变量 /etc/profile
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
3.生效:source /etc/profile
4.配置文件:zoo.cfg
tickTime=2000 #心跳间隔
initLimit=10 #最大初始时间限制10倍心跳
syncLimit=5 #请求应答时长5倍心跳
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata #数据目录(注意这里的zkdata和zkdatalog
clientPort=2181 #客户端、服务端连接端口 都要自己创建)
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog #日志目录 (makdir **)
server.1=master:2888:3888 #集群列表
server.2=slave1:2888:3888
server.3=slave2:2888:3888
配置的dataDir指定的目录下面,创建一个myid文件。(就是zkdata下再创一个myid写入1)
里面内容为一个数字,用来标识当前主机。
conf/zoo.cfg:server.X中X为什么数字,则myid文件中就输入这个数字
5.zoo安装
每个结点上执行启动ZooKeeper服务的脚本。
bin/zkServer.sh start #启动服务
bin/zkServer.sh status #查看状态
结果应该是:一个节点是Leader,其余的节点是Follower
六:Hadoop安装
1.下载解压Hadoop安装包 /usr/hadoop
2.环境变量
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.hadoop-env.sh(集群运行环境)
export JAVA_HOME=/usr/java/jdk1.8.0_221
4.core-site.xml(集群全局参数)
fs.default.name //配置NN节点地址与端口号
hdfs://masterr:9000
hadoop.tmp.dir //hadoop临时目录用来存放NN临时文件
/usr/hadoop/hadoop-2.7.7/hdfs/tmp
fs.checkpoint.period //SNN检查NN日志时间间隔(单位为秒)
3600
5.hafs-site.xml
dfs.replication //指定hdfs保存数据的副本数量
dfs.namenode.name.dir //指定hdfs中NN的本地存储位置
file:/usr/hadoop/hadoop-2.7.7/hdfs/name
dfs.datanode.data.dir //指定hdfs中DN的本地存储位置
file:/usr/hadoop/hadoop-2.7.7/hdfs/data
dfs.namenode.secondary.http-address //定义HOFS对应的HTTP服务器地址和端口
dfs.webhdfs.enabled //开启webhdfs,允许文件的访问修改等操作
6.mapred-site.xml
<name>mapreduce.framework.name</name> //取值为local,classic,yarn其中之一,选择yarn,使用yarn集群实现资源分配 <value>yarn</value>
7.yarn-site.xml
//RM提供客户端访问的地址及端口
yarn.resourcemanager.address
//RM提供给ApplicationMaster的访问地址,AM通过该地址向RM申请资源,释放资源等
yarn.resourcemanager.scheduler.address
//RM对web服务提供地址,用户通过该地址可以在浏览器上查看集群各类信息
yarn.resourcemanagerr.webapp.address
//RM提供NodeManager地址,通过该地址向RM心跳,领取任务等
yarn.resourcemanager.resource-tracker.address
//RM提供的管理员访问地址,向RM发送管理命令等
yarn.recourcemanagerr.admin.address
//用户自定义服务,扩展MapReduce的shuffle功能
uarn.nodemanager.aux-services
mapreduce_shuffle
8.master文件(定义谁是主节点,谁是从节点)
master
slaves文件
slave1
slave2
9.格式化并启动Hadoop
hadoop namenode -format
start-all.sh
七:添加删除节点
1.进行相关配置:
a.基础操作:本地源,防火墙,时区,同步时间等;
b.修改hosts文件:所有文件添加slave3
c.免密操作:master-->slave3
d.安装JDK Hadoop配置环境变量
2.添加节点
a.修改所有的slaves文件:添加slave3
b.启动DataNode进程:hadoop-daemon.sh start datanode
c.启动nodemanage:yarn-deamon.sh start nodemanager
d.查看集群状态:
@1.主节点刷新:hdfs dfsadmin -refreshNodes @2.均衡block:sbin/start-balancer.sh @3.查看存活的节点:hdfs dfsadmin -report
3.临时删除节点:
@1.hadoop-daemon.sh stop datanode(有风险,数据丢失) hadoop-daemon.sh stop tasktracker @2.master主机中hdfs-site.xml配置: <property> <name>dfs.host.exclude</name> <value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value> <description>拒绝加入集群的节点列表</description> </property> <property> <name>dfs.hosts</name> <value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/datanode-allow.list</value> <description>允许加入集群的节点列表</description> </property> @3.在conf目录下创建一个excludes文件,将需要删除的节点机器名添加到文件中。 vim /usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes slave2 @4.主节点刷新所有DataNode:hdfs dfsadmin -refreshModes 查看存活的节点:hdfs dfsadmin -report 可以看到该datanode状态转为Decommission In Progress(正在退役) 执行完毕之后显示 Decommission Status:Decommissioned
4.删除集群
@1.删除节点上关闭程序:(slave2) sbin/hadoop-daemon.sh stop datanode sbin/yarn-daemon,sh stop nodemanager @2.数据块重新分布:sbin/start-balancer.sh(数据均衡) @3.从NameNode的excludes文件及slaves文件,hosts文件中去掉已经除去的主机名 @4.在所有DATaNode上执行hadoop-pull.sh脚本,同步配置。