离线课程阶段第一天
三台虚拟机的创建并联网
记得我们的虚拟机需要重新生成mac地址以及更改内存大小
如果开启虚拟机的时候遇到权限不足的问题,是因为我们的虚拟机文件都是只读的原因造成的,将我们的虚拟机文件夹右键,属性 取消只读选项即可
查看windosw所有的服务命令:services.msc
linux的基础增强
查看机器的进程
ps -ef | grep java
2、find 命令 记下来
查找 find / -name hello.txt 按照文件名字从根路径下面开始查找,查找一个叫做hello.txt的文件
3、locate 了解下
locate命令使用了一个小型的数据库,对我们linux系统文件建立索引
4、whereis 命令 了解下
主要是用于定位可执行文件,源代码文件,帮助文档等
查看命令所对应的文件
whereis ls
5、which 在环境变量path当中搜索我们的命令
which java
用户与用户组
注意:只能够使用root用户来添加普通用户,普通用户没法添加普通用户
添加普通用户:useradd hadoop
为普通用户设置密码: passwd hadoop
添加用户组:groupadd storm 添加用户组 了解
su与sudo
1、su 表示切换用户
从高权限向低权限用户切换,不需要密码,从低权限向高权限切换,需要高权限用户的密码
2、sudo 权限的借用 掌握
低权限用户,可以借用高权限用户的权限
root可以有最大的权限,由一个配置文件决定的
linux文件内容查找命令
非编辑模式下 /root 表示查找文件内容root的字符串
显示行号
非编辑模式下 :set nu
为普通用户配置sudo权限
使用root用户执行命令
visudo
添加一行内容
hadoop ALL=(ALL) ALL
以后普通用户编辑任意权限不足的文件加上sudo 即可
sudo /etc/profile
linux的权限管理
权限不足都以用以下命令来解决
chmod -R 777 helloworld/ 递归的改变权限
改变所属用户以及所属组
chown -R hadoop:hadoop abc.txt
精确权限的控制
chmod u+x world.txt u 表示给当前用户添加权限
chmod g+w world.txt g 表示给组用户添加权限
chmod o+w world.txt o 表示其他用户添加什么权限
系统服务管理
如何停止或者启动系统的服务,已经查看系统的服务状态
service 服务名称 status|start|stop
关闭打开防火墙查看防火墙状态
service iptables stop|start|status
关闭防火墙的自动启动服务
chkconfig iptables off
网络管理
更改主机名
命令如下,尽量将我们的主机名改成FQDN的形式
vim /etc/sysconfig/network
HOSTNAME=node01.hadoop.com
更改ip地址以及mac地址
修改IP地址:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改mac地址:
vim /etc/udev/rules.d/70-persistent-net.rules
更改ip地址与域名的映射
119.75.217.26 ==》 www.baidu.com
www.baidu.com ==> 本机hosts文件 ==》 dns域名解析器 ==》 对应的ip 119.75.217.26
vim /etc/hosts
192.168.52.100 node01.hadoop.com node01
网络端口的监听
查看服务器上面所有的正在运行的服务的端口号以及进程号
netstat -nltp
crontab 配置
linux当中的定时器的模块
crontab 一共六位,前面五位是定时模块,最后一位是执行的命令,最小粒度到分钟
crontab -l 列出当前用户所有的定时任务
crontab -e
linux的shell编程
shell即是一种命令语言(主要用于开发编写一些可执行的脚本),也是一种程序设计语言(主要用来开发linux的内核)
shell脚本执行的两种方式
chmod u+x hello.sh
bash hello.sh sh hello.sh
shell当中变量的定义:
除了变量不空格,其他到处都空格
变量的定义以及应用
echo 'hello world'
# 我是注释
# 除了变量不空格,其他到处都空格
hello=world
echo ${hello}abc
echo $helloabc
shell当中变量的三种类型
局部的变量:表示仅仅在当前的会话当中有效,其他的会话当中无效
环境变量:所有的shell脚本都可以使用的一些变量
SHELL变量:环境变量 + 局部变量 = shell变量 保证了我们shell脚本正常的运行
shell当中参数的传递
shell编程之if else
a=$1
b=$2
if [ $a -eq $b ]
then
echo "a 等于b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
else
echo "a 小于 b "
fi
shell编程之for循环
for m in node01 node02 node03
do
echo $m
done
shell编程之while循环
#!/bin/bash
i=1
while (( i<=3 ))
do
let i++
echo $i
done
while true
do
echo `date`
sleep 1
done
shell编程之case 语句
echo '请你输入1到4之间的的数字'
echo '你输入的数字为:'
read aNum
case $aNum in
1)
echo "你选择的是1"
;;
2)
echo "你选择的是2"
;;
3)
echo "你选择的是3"
;;
4)
echo "你选择的是4"
;;
*)
echo "你没有输入1到4之间的数字,请不要随便乱输入,我会打死你的"
;;
esac
脚本语言:不用编译,所见即所得 php js shell html
shell编程之函数的定义
#!/bin/bash
hello(){
echo $1
echo $2
echo $3
echo "hello world"
}
hello $1 $2 $3
linux当中卸载rpm包的命令
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps
安装rpm包的命令
rpm -ivh xxx.rpm
zookeeper的学习介绍
zookeeper的介绍:分布式服务协调框架,主要用于辅助其他的框架正常执行工作的,一般不太需要我们过多的关注,只需要保证zk服务正常运行即可
主要用于解决分布式服务应用系统一致性的问题,本质上是一个分布式的小文件存储系统
可以提供各种功能
-
统一命名服务 dubbo
-
分布式配置管理 solr cloud
-
分布式的消息队列 pub/sub 类似activeMQ
-
分布式锁
-
分布式协调
主从架构:有主节点,有从节点,主节点少数个,从节点多数个 工头, 搬砖的人有好多
主备架构:有主节点,有备份节点 解决我们主节点单点故障的问题
在很多系统架构当中,主从与主备没有严格的界限的区分,为了保证服务的7*24不宕机,一般都是主从主备一起用
zookeeper当中各个节点的主要的作用:
leader:主节点,主要用于处理非事务性以及事务性的请求,以及投票选举
follower:从节点,主要用于处理非事务性的请求,以及转发事务性的请求给leader,以及参加投票选举
observer:既不是主节点,也不是从节点,主要用于处理读数据的请求,增大zookeeper的并发量。不参与投票选举
zookeeper的特性
全局数据一致性:所有的机器看到的数据都是一样的
可靠性:如果消息被一台服务器接收,那么终将被所有的服务器接收
顺序性:如果A消息在B消息之前发布,那么所有的机器都是先处理A消息,再处理B消息
数据更新的原子性:我们所有的操作都是事务性的操作,要么全部成功,要么全部失败,没有中间状态
实时性:消息最终会被同步到所有的机器上面去
zookeeper的集群环境的安装
yum -y install lrzsz
zookeeper当中shell的操作
操作zk当中的数据节点:
数据节点主要分为两大类:
永久节点: 普通永久节点,序列化的永久节点
创建普通的永久节点: create /hello abcworld
创建永久序列化的节点:create -s /abc world
永久节点不会消失,除非你手动的删除
临时节点:普通的临时节点,序列化的临时节点
客户端断开连接,临时节点消失
创建普通的临时节点: create -e /mytemp helloworld
创建序列化临时节点:create -e -s /mytemp2 abcworld
读取节点的数据:get /hello
更新节点数据的操作: set /hello seeyoutomorrow
删除节点的操作:删除末尾节点: delete /abc0000000001 递归删除:rmr /hello
注意事项:临时节点下面不能够有子节点
zookeeper的数据的模型:
采用的树形的层次结构,每一个节点,称之为一个znode,znode兼具有文件和文件夹的特性
文件夹:下面可以有很多的子文件以及子文件夹
文件:存储数据的特性
znode具有原子性的操作:要么操作成功,要么操作失败,没有中间状态
每个znode存储数据不超过1M
每个znode都是通过绝对路径来进行查找,没有相对路径这一说
znode的四种模型:
PERSISTENT:永久节点
EPHEMERAL:临时节点
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化
zookeeper的watch机制:是一种监听机制,类似于我们前面学过的listener
类似于java 23种设计模式当中的观察者模式
watch可以感知到我们节点的变化
通过javaAPI操作我们zk上面的节点
更改宿主机的的hosts文件
C:\Windows\System32\drivers\etc
网络编程:研究就是如何让两台计算机进行通信
网络通信三要素:ip地址 端口号 传输协议
IP地址:192.168.52.xxx 0-255
A类网址: 192.xxx.xxx.xxx 256*256*256
192.168.xx.xx
比较特殊的端口号 80
192.168.52.100
传输协议:UDP TCP
只要每秒钟给你看24帧以上的图片,你就不会发现我是一个图片
网络模型:
企业级应用开发
socket:套接字
网络通信模型:
阻塞、非阻塞 :研究的是如果资源没有主备好,程序该如何响应的问题
同步:继续等待
、非同步:返回一个标记给客户端,告诉客户端CPU没有准备好,等会儿再来
研究的是CPU的模型,如果资源没有准备好,CPU如何反应
RPC : Remote Procedure Call Protocol 远程过程调用,类似于调用我们本地的程序一样的,不用关心程序的服务端在哪来
课程总结
三台机器创建并联网 搞定
linux基础增强:
-
查找命令: grep find
-
用户与用户组
-
su与sudo 搞定
-
linux的权限管理 chmod chown 搞定
-
系统服务管理 service xxx status|start|stop
-
网络管理: 主机名配置 IP地址配置 域名映射 网络端口监听 crontab 配置
-
linux shell编程 尽量多掌握 jdk一键安装
-
大数据集群的环境准备 搞定
-
zookeeper的集群的安装以及zookeeper的shell操作,zookeeper的数据模型,以及zookeeper的javaAPI