一、Linux 基础
1. 计算机操作系统
操作系统发展至今,种类繁多,可以根据应用的不同领域进行划分
- 桌面操作系统
- 服务器操作系统
- 嵌入式操作系统
- 移动设备操作系统
2. VMware的使用
3. centOS 7 的安装(部分)
点击创建虚拟机选择centos7 后续根据情况选择,修改进行文件
配置静态 IP
4. SSH协议与远程访问
使用 xshell 连接
安装 rz => 文件的上传下载
yum -y install lrzsz
输入 rz 即可开启窗口从本地上传至linux中
输出 sz+文件名即可从linux文件下载到本地
5. Linux基础命令
5.1 文件系统
5.2 文件操作命令
5.3 搜索命令
快捷方式
5.4 打包解压
5.5 文本编辑器
6. 用户和权限
文件权限总体上分为三类
- 读(read)权限
- 写(write)权限
- 执行(execute)权限
7. 系统管理
8. 大数据集群搭建
8.1 克隆和修改IP
下图为 ifcfg-ens33 文件
#修改IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" #网卡类型 以太网
PROXY_METHOD="none"
BROWSER ONLY="no"
BOOTPROTO="none" #ip等信息是如何决定的?dhcp动态分配、static|node 手动静态分配
DEFROUTE="yes"
IPV4 FAILURE FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6 DEFROUTE="yes"
IPV6 FAILURE FATAL="no"
IPV6 ADDR GEN MODE="stable-privacy"
NAME="ens33" #网卡名称
UUID="74c3b442-480d-4885-9ffd-e9f0087c9cf7"
DEVICE="ens33"
ONBOOT="yes" #是否开机启动网卡服务
IPADDR="192.168.88.151" #IP地址
PREFIX="24"#子网掩码等效:NETMASK=255.255.255.0
GATEWAY="192.168.88.2" #网关服务
DNS1="192.168.88.2" #网关DNS解析
DOMAIN="114.114.114.114" #公网DNS解析114.114.114.114谷歌:8.8.8.8阿里百度DNS
IPV6 PRIVACY="no"
#修改主机名hostname
node2.itcast.cn
8.2 hosts映射修改
在/etc/hosts 文件配置如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.59.151 node1.itcast.cn node1
192.168.59.152 node2.itcast.cn node2
192.168.59.153 node3.itcast.cn node3
~
继续在Windows 里 C:\windows\system32\drivers\etc\hosts 添加以下数据
192.168.59.151 node1.itcast.cn node1
192.168.59.152 node2.itcast.cn node2
192.168.59.153 node3.itcast.cn node3
8.3 关闭防火墙
#查看防火墙状态
systemctl status firewalld
#关闭防火墙systemctl stop firewalld
#关闭防火墙开机自启动systemctl disable firewalld
8.4 集群时间同步
8.5 ssh免密登录
ssh-keygen #生成公钥
ssh-copy-id node2 #将公钥拷贝给node2
8.6 scp远程拷贝
#本地copy其他机器
scp itcast.txt root@node2:/root
scp -r 1inux02/ root@node2:$PWD #copy文件夹 -r参数$PWD copy至和本机相同当前路径
#为什么不需要输入密码因为配置了机器之间的免密登录如果没有配置 scp的时候就需要输入密码
#copy其他机器文件到本地
scp root@node2:/root/itcast.txt
9. Linux软件安装
9.1 MySQL的安装
目录安装规范
/export/server #软件安装目录
/export/software #安装包的目录
/export/data #软件运行数据保存的目录
/export/1ogs #软件运行日志
mkdir -p /export/server mkdir -p /export/software mkdir -p /export/data mkdir -p /export/1ogs
卸载centos7自带的mariadb
rpm -qa|grep mariadb #查找这个包
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 #卸载
安装MySQL
#安装依赖
yum -y install libaio
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
#安装server时需要安装两个依赖
rpm -qa|grep mysql
rpm -qa|grep mariadb
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql初始化设置
#mysql初始化
mysqld --initialize
#更改所属组
chown mysql:mysql /var/lib/mysql -R
#启动mysq1
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log | grep password
#登录mysql
mysql -uroot -p
#修改密码为 123456
mysql> alter user user()identified by "123456";
#授权
mysql> use mysql;
#给root用户所有权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES; #刷新权限
#设置开机自启
systemctl enable mysqld
#mysq1的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
9.2 yum包管理器
Yum(全称为 Yellow dog updater,Modified)是一个在Fedora和RedHat以及centos中的she11前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
特点
自动下载rpm包 进行安装前提是联网 不联网就凉凉
解决包之间的依赖关系
原理
yum之所以强大原因在于有yum源。里面有很多rpm包和包之间的依赖。
yum源分为网络yum源和本地yum源。
其中网络yum源在centos默认集成了镜像地址 只要联网就可以自动寻找到可用的yum源。前提联网也可以自己搭建本地yum源。实现从本地下载安装。
命令
#列出当前机器可用的yum源信息
yum repolist a11
#清楚yum源缓存信息
yum clean a11
#查找软件
rpm list | grep 软件包名称
#yum安装软件
#-y表示自动确认 否则在安装的时候需要手动输入y确认下载安装
yum insta11 -y xx软件名
yum insta11 -y mysq1-*
#yum卸载软件
yum-yremove 要卸载的软件包名
9.3 JDK的安装
rz上传jdk压缩包到/export/software中通过解压命令解压到/export/server 并改名为java
tar -zxvf jdk-8u241-linux-x64.tar.gz -C ../server/
mv jdk1.8.0_241/ java
再修改环境变量 /etc/profile 在最后一行添加
export JAVA_HOME=/export/server/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新环境变量使其生效
source /etc/profile
验证是否成功出现版本即成功
#查看java版本
java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
将 node1 上的Java分别分发到node2和node3
scp -r /export/server/java/ root@node2:/export/server/
scp -r /export/server/java/ root@node3:/export/server/
scp -r /etc/profile root@node2:/etc
scp -r /etc/profile root@node3:/etc
分别在两台从机刷新环境变量以及查看版本号出现即成功
#node2
source /etc/profile
java -version
#node3
source /etc/profile
java -version
10. shell编程
二、Hadoop
1. 大数据导论
1.1 数据和数据分析
1.2 数据分析的作用
1.3 数据分析的基本步骤
1.4 大数据应用场景
1.5 分布式技术
2. Zookeeper
2.1 集群架构与角色
2.2 集群搭建
上传安装包 rz
解压安装包并且修改名字
#解压
tar -zxvf zookeeper-3.4.8.tar.gz -C ../server/
#修改名字
mv zookeeper-3.4.8/ zookeepe
修改配置文件
zoo.cfg 文件
#进入目录修改模板名字
cd zookeeper/conf/
mv zoo_sample.cfg zoo.cfg
#打开文件
vi zoo.cfg
#修改存放数据目录
dataDir=/export/data/zkdata
#在末尾添加2888心跳端口 3888选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
myid 文件
#在每台机器的dataDir指定的目录下创建一个文件 名字叫做myid
#myid里面的数字就是该台机器上server编号:server.N
#N的数字就是编号
mkdir -p /export/data/zkdata
echo 1 >/export/data/zkdata/myid
再将node1 zookeeper这个文件分发给node2,node3
查看是否成功
#在三个节点中分别运行启动zookeeper
/export/server/zookeeper/bin/zkServer.sh start
#查看状态
/export/server/zookeeper/bin/zkServer.sh status
#关闭
/export/server/zookeeper/bin/zkServer.sh stop
创建一键启动脚本
vi startzk.sh #一键启动
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
ssh $host "source /etc/profile;/export/server/zookeeper/bin/zkServer.sh start"
done
chmod u+x startzk.sh #添加执行权限
sh startzk.sh #开启
vi stopzk.sh #一键关闭
#!/bin/bash
hosts=(node1 node2 node3)
for host in ${hosts[*]}
do
ssh $host "/export/server/zookeeper/bin/zkServer.sh stop"
done
chmod u+x stopZk.sh #添加执行权限
sh stopZk.sh #关闭
2.3 zookeeper 数据模型
2.4 zookeeper shell操作
2.5 zookeeper 监听
2.6 应用场景
3. Haoop部署
3.1 hadoop集群搭建
使用rz上传压缩包至software中
解压安装
#解压安装
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C ../server/
#更改名字
mv hadoop-3.3.0/ hadoop
目录结构
bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。
etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。
include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。
lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。
libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。
sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
share:Hadoop各个模块编译后的jar包所在的目录,官方自带示例。
修改配置文件
vim hadoop-env.sh
export JAVA_HOME=/export/server/java
#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
vim hdfs-site.xml
<!-- 指定secondarynamenode运行位置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
vim yarn-site.xml
<!-- 指定YARN的主角色(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 保存的时间7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
vim works
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn
修改环境变量
vim /etc/proflie
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
查看版本是否安装成功
hadoop version
分发配置hadoop给两台从机刷新环境变量
scp -r /export/server/hadoop/ node2:/export/server/
scp -r /export/server/hadoop/ node3:/export/server/
scp -r /etc/profile node2:/etc
scp -r /etc/profile node3:/etc
首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。
hadoop namenode -format
在主节点一键启动hadoop => HDFS+YARN
需要设置过免密登录
start-all.sh
stop-all.sh
各个节点进程如下 (QuorumPeerMain 为zookeeper)
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:
NameNode http://nn_host:port/ 默认9870.
ResourceManager http://rm_host:port/ 默认 8088.
3.2 jobhistory服务
3.3 垃圾桶机制
每一个文件系统都会有垃圾桶机制,便于将删除的数据回收到垃圾桶里面去,避免某些误操作删除一些重要文件。回收到垃圾桶里里面的资料数据,都可以进行恢复。
HDFS的垃圾回收的默认配置属性为 0,也就是说,如果你不小心误删除了某样东西,那么这个操作是不可恢复的。
修改core-site.xml :
那么可以按照生产上的需求设置回收站的保存时间,这个时间以分钟为单位,例如1440=24h=1天。
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
然后重启hdfs集群
垃圾桶机制验证
如果启用垃圾箱配置,dfs命令删除的文件不会立即从HDFS中删除。相反,HDFS将其移动到垃圾目录(每个用户在/user/<username>/.Trash下都有自己的垃圾目录)。只要文件保留在垃圾箱中,文件可以快速恢复。
使用skipTrash选项删除文件,该选项不会将文件发送到垃圾箱。它将从HDFS中完全删除。
4. HDFS 入门
4.1 应用场景
4.2 重要特性
4.3 shell 操作
5. HDFS 工作机制
读数据
6. namenode 管理
6.1 文件归档archive
6.2 元数据管理机制
7. mapreduce 入门
7.1 设计架构
7.2 局限性
7.3 示例
案例:计算pi
#进入目录
/export/server/hadoop/share/hadoop/mapreduce
#提交目录
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 2 20
案例:单词统计
yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount /wordcount/input/1.txt /wordcount/output
7.4 Centos7安装Python3
#1、安装编译相关工具 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install libffi-devel -y #2、解压Python安装包 tar -zxvf Python-3.8.5.tgz #3、编译、安装Python mkdir /usr/local/python3 #创建编译安装目录 cd Python-3.8.5 ./configure --prefix=/usr/local/python3 make && make install #make编译c源码 make install 编译后的安装 #安装过,出现下面两行就成功了 Installing collected packages: setuptools, pip Successfully installed pip-20.1.1 setuptools-47.1.0 #4、创建软连接 # 查看当前python软连接 快捷方式 [root@node2 Python-3.8.5]# ll /usr/bin/ |grep python -rwxr-xr-x. 1 root root 11232 Aug 13 2019 abrt-action-analyze-python lrwxrwxrwx. 1 root root 7 May 17 11:36 python -> python2 lrwxrwxrwx. 1 root root 9 May 17 11:36 python2 -> python2.7 -rwxr-xr-x. 1 root root 7216 Aug 7 2019 python2.7 #默认系统安装的是python2.7 删除python软连接 rm -rf /usr/bin/python #配置软连接为python3 ln -s /usr/local/python3/bin/python3 /usr/bin/python #这个时候看下python默认版本 python -V #删除默认pip软连接,并添加pip3新的软连接 rm -rf /usr/bin/pip ln -s /usr/local/python3/bin/pip3 /usr/bin/pip #5、更改yum配置 #因为yum要用到python2才能执行,否则会导致yum不能正常使用(不管安装 python3的那个版本,都必须要做的) vi /usr/bin/yum 把 #! /usr/bin/python 修改为 #! /usr/bin/python2 vi /usr/libexec/urlgrabber-ext-down 把 #! /usr/bin/python 修改为 #! /usr/bin/python2 vi /usr/bin/yum-config-manager #!/usr/bin/python 改为 #!/usr/bin/python