Linux
1 安装使用及教程
下载安装
-
本地虚拟机安装
- 下载安装虚拟机VM ware Pro 15(不安装其中的Ubuntu系统): 软件管家软件目录
- 下载 CentOS 7 : 阿里镜像
- 安装 CentOS 7 系统: 虚拟机安装CentOS 7
- CentOS 7 图形界面: B站CentOS 7 图形界面安装教程视频
-
阿里云服务器 Linux
- 查看阿里云服务器配置信息
uname -r
cat /etc/os-release
- 购买阿里云服务器配置安全组: B站狂神 服务器购买及宝塔部署环境说明
- 借助宝塔配置 Linux: 宝塔Linux面板安装教程
-
遇见狂神说 教程文档
Linux 使用教程
2 linux 文件夹说明
- /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
- /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
- /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放一些服务启动之后需要提取的数据。
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
- /tmp:这个目录是用来存放一些临时文件的。
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin: 系统用户使用的应用程序。
- /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src: 内核源代码默认的放置目录。
- /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
3 增删改查
pwd
# 显示实际路径
pwd -P
clear
ls/ll -al
# 分屏查看当前目录内容
ls/ll -l|less
history
# 查看开机启动项
chkconfig
chkconfig --add kafka
chkconfig --del kafka
# kafka文件中 :
#chkconfig:2345 20 90
cd
cd ..
cd ../
mkdir
# 设置权限 -m
mkdir -m 777 dirname
# 创建多层目录 -p
mkdir -p test1/test2/test3/test4
rmdir
# 删除多级空目录
rmdir -p test1/test2/test3/test4
rm
rm -rf
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项
mv
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
# 当前目录下的文件移至上级目录
mv ./* ../
cp
-a:相当於 -pdr 的意思,至于 pdr 请参考下列说明;(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-r:递归持续复制,用於目录的复制行为;(常用)
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination
4 查看文件【cat/tac/more/less/head/tail】
# 查找
find -name '*mysql'
whereis
which
# 由第一行开始显示文件内容 cat
cat
cat -AbEnTv
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
# 从最后一行开始显示 tac (tac 是 cat 的倒着写)
tac
# 显示的时候,顺道输出行号 nl
nl
nl -bnw
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
# 一页一页的显示文件内容 more
在 more 这个程序的运行过程中,你有几个按键可以按的:
空格 (space):代表向下翻一页;
Enter:代表向下翻『一行』;
/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f:立刻显示出档名以及目前显示的行数;
q:代表立刻离开 more ,不再显示该文件内容;
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用
# [root@kuangshen etc]# more /etc/csh.login
# ....(中间省略)....
# --More--(28%) # 重点在这一行喔!你的光标也会在这里等待你的命令
# less 与 more 类似,可以往前翻页
less运行时可以输入的命令有:
空格 (space):向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序
# 查看头几行
head -n 20 /etc/csh.login
# 查看倒数行 tail
tail -n 20 /etc/csh.login
5 系统设置
防火墙
# 防火墙
systemctl status firewalld
firewall-cmd --state
service firewalld start
service firewalld restart
service firewalld stop
systemctl disable firewalld
进程
# 查看本机配置信息
ifconfig
# 查看本机内存
free -h
# 查看本机存储
df -lh
# 查看空间占用情况
du -sh
du -sh *
# 后台运行
nohup
# 查看最新的日志
tail -1000 nohup.out
# 监控日志打印
tail -f nohup.out
# 不用停止WEB服务就可以清空nohup.out的命令
cp /dev/null nohup.out
cat /dev/null > nohup.out
# 只输出错误信息到日志文件
nohup ./program >/dev/null 2>log
# 查看运行的后台进程
jobs -l
# 实时显示系统中各个进程的资源占用情况
top
# 刷新间隔
top -d 15
top 基本视图中
# b 打开关闭加亮效果
# 1 可以监控每个逻辑CPU的状况
# x 打开/关闭列的加亮效果
# 进程查看命令
ps -ef
ps -ef|grep 'java'
ps -ef|grep -v 'java'
ps -aux|grep redis
# 输出 redis 的进程号
ps -aux|grep redis| grep -v grep | awk '{print $2}'
# 查看使用某端的进程
netstat -ntlp
netstat -ap|grep 6379
netstat -nap|grep 6379
# 杀掉进程
kill [参数] [进程号]
# HUP 1 终端断线
# INT 2 中断(同 Ctrl + C)
# QUIT 3 退出(同 Ctrl + \)
# TERM 15 终止
# KILL 9 强制终止
# CONT 18 继续(与STOP相反, fg/bg命令)
# STOP 19 暂停(同 Ctrl + Z)
kill -9
ssh 免密登录
# ssh 免密登录
# root 用户
cd /root/.ssh/
# 普通用户
cd /home/local01/.ssh/
#生成密钥对
ssh-keygen -t dsa
# 或 ssh-keygen -t rsa
# 拷贝公钥给目标服务器
ssh-copy-id -i id_dsa.pub root@192.168.40.8
# 或 ssh-copy-id -i id_rsa.pub root@192.168.40.88
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
# 目标服务器生成的文件 authorized_keys
# 测试
ssh 192.168.40.88
更改主机名
# 临时更改主机名
hostname vm01
su
# 永久更改主机名
vi /etc/hostname
newHostName
vi /etc/sysconfig/network
NETWORKING=es
HOSTNAME=newHostName
vi /etc/hosts
# 127.0.0.1 后加 newHostName
权限修改
# 权限修改
chmod 770 filename
chmod a+x filename
# chmod 777的语法为:chmod abc file
# a,b,c各为一个数字,分别表示User、Group、及Other的权限
# r:4 w:2 x:1
# u User,即文件或目录的拥有者;g Group,即文件或目录的所属群组;o Other;a All
# chmod a=rwx file 和chmod 777 file效果相同
# chmod ug=rwx,o=x file和chmod 771 file效果相同
# 若用chmod 4755 filename 可使此程式具有root的权限
chown [–R] 属主名 文件名
chgrp [-R] 属组名 文件名
软连接
# 软连接
ln [参数][源文件或目录][目标文件或目录]
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
# ln -fs /usr/local/mysql8.0/bin/mysqldump /usr/bin
下载解压
# 下载解压
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
wget -O /home/index http://www.baidu.com
yum install XXX
# 与本地文件交互
sz error.log
rz
yum install lrzsz
tar
-c或—create建立新的备份文件
-x或一extract或一get从备份文件中还原文件
-v或一verbose显示指令执行过程
-f<备份文件>或-file=<备份文件>指定备份文件
-z或--gzip或--ungzip通过gzip指令处理备份文件
tar cvf test.tar file1 file2 dir/
tar xvf test.tar
tar xvf test.tar -C releaseDir
tar -zcvf test.tar file1 file2 dir/
tar -zcvf test.tar.gz file1 file2 dir/
tar -zxvf test.tar
tar -zxvf test.tar.gz
tar xvJf test.tar.xz
tar xvJf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz
curl-发起请求
# 发送 get 请求
curl localhost:8082/log
curl URL
curl URL?a=1&b=nihao
# 发送POST请求
curl -X POST -d 'a=1&b=nihao' URL
# 发送json格式请求
curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' URL
curl -H "Content-Type: application/json" -X POST -d @test.json URL
请求头:H,A,e
响应头:I,i,D
cookie:b,c,j
传输:F(POST),G(GET),T(PUT),X
输出:o,O,w
断点续传:r
调试:v,--trace,--trace-ascii,--trace-time
# 测试一个网址是否可达
curl -v http://www.linux.com
# 下载页面
curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
# 循环下载
curl -O http://www.linux.com/dodo[1-5].JPG
# 下载重命名
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
# 下载显示进度条-# 不显示进度条 -s
curl -# -O http://www.linux.com/dodo1.JPG
curl -s -O http://www.linux.com/dodo1.JPG
touch-修改文件的时间属性
touch [file]
touch -a [file]
touch -m [file]
touch -d "3 years ago" [file]
touch -t "202212312359" [file]
touch -at "202212312359" [file]
touch -mt "202212312359" [file]
# 将file2的时间属性值修改为file1文件的时间属性
touch -r file1 file2
安装软件
jdk
# 解压
tar zxvf jdk-8u321-linux-x64.tar.gz
# 配置环境变量
vim /etc/profile
#-------------------------
export JAVA_HOME=/usr/local/jdk1.8.0_321
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
#-------------------------
# 刷新配置信息
source /etc/profile
# 测试
java/javac/javap
mysql
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
rpm -qa|grep mariadb
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
tar xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql-8.0.28
vim /etc/profile
export PATH=$PATH:/usr/local/mysql-8.0.28/bin
source /etc/profile
mkdir /usr/local/mysql-8.0.28/data
# chown -R mysql:mysql /usr/local/mysql-8.0.28/data
# chmod -R 750 /usr/local/mysql-8.0.28/data
vim my.cnf
# 内容如下[my.cnf]
# 初始化
mysqld --defaults-file=/usr/local/mysql-8.0.28/my.cnf --basedir=/usr/local/mysql-8.0.28 --datadir=/usr/local/mysql-8.0.28/data --user=mysql --initialize-insecure
# 启动服务
mysqld_safe --defaults-file=/usr/local/mysql-8.0.28/my.cnf &
# 无密码登录方式
/usr/local/mysql-8.0.28/bin/mysql -u root --skip-password
# mysql 指令
use mysql
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'll123456';
# 设置允许远程登录
update user set user.Host='%'where user.User='root';
# 刷新权限
FLUSH PRIVILEGES;
# 查看
select user,HOST from user;
# 启动项脚本
cp /usr/local/mysql-8.0.28/support-files/mysql.server /etc/init.d/mysql
vim mysql # 修改内容如下[mysql]
service mysql start|stop|status
# 不能使用 systemctl
my.cnf
[mysql] default-character-set=utf8mb4 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 server-id = 3306 user = mysql socket = /tmp/mysql.sock basedir = /usr/local/mysql-8.0.28 datadir = /usr/local/mysql-8.0.28/data log-bin = /usr/local/mysql-8.0.28/data/mysql-bin innodb_data_home_dir = /usr/local/mysql-8.0.28/data innodb_log_group_home_dir = /usr/local/mysql-8.0.28/data #日志及进程数据的存放目录 log-error =/usr/local/mysql-8.0.28/data/mysql.log pid-file =/usr/local/mysql-8.0.28/data/mysql.pid # 服务端使用的字符集默认为8比特编码 character-set-server=utf8mb4 lower_case_table_names=1 autocommit =1 ##################以上要修改的######################## skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 1024 sort_buffer_size = 4M net_buffer_length = 8K read_buffer_size = 4M read_rnd_buffer_size = 512K myisam_sort_buffer_size = 64M thread_cache_size = 128 #query_cache_size = 128M tmp_table_size = 128M explicit_defaults_for_timestamp = true max_connections = 500 max_connect_errors = 100 open_files_limit = 65535 binlog_format=mixed binlog_expire_logs_seconds =864000 # 创建新表时将使用的默认存储引擎 default_storage_engine = InnoDB innodb_data_file_path = ibdata1:10M:autoextend innodb_buffer_pool_size = 1024M innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 transaction-isolation=READ-COMMITTED [myisamchk] key_buffer_size = 256M sort_buffer_size = 4M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
mysql
# ... basedir=/usr/local/mysql-8.0.28 datadir=/usr/local/mysql-8.0.28/data # Default value, in seconds, afterwhich the script should timeout waiting # for server start. # Value here is overriden by value in my.cnf. # 0 means don't wait at all # Negative numbers mean to wait indefinitely service_startup_timeout=900 # Lock directory for RedHat / SuSE. lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql" # The following variables are only set for letting mysql.server find things. # Set some defaults mysqld_pid_file_path=/usr/local/mysql-8.0.28/data/mysql.pid if test -z "$basedir" then basedir=/usr/local/mysql-8.0.28 bindir=/usr/local/mysql-8.0.28/bin if test -z "$datadir" then datadir=/usr/local/mysql-8.0.28/data fi sbindir=/usr/local/mysql-8.0.28/bin libexecdir=/usr/local/mysql-8.0.28/bin else bindir="$basedir/bin" if test -z "$datadir" then datadir="$basedir/data" fi sbindir="$basedir/sbin" libexecdir="$basedir/libexec" fi # ...
zookeeper
# 解压
tar zxvf tar zxvf apache-zookeeper-3.7.1-bin.tar.gz
# 修改文件名
mv apache-zookeeper-3.7.1-bin apache-zookeeper-3.7.1
cd apache-zookeeper-3.7.1
# 复制修改文件名,使配置文件生效
cp conf/zoo_sample.cfg conf/zoo.cfg
# 配置变量
vim /etc/profile
#-------------------------
export ZK_HOME=/usr/local/apache-zookeeper-3.7.1
export PATH=$PATH:$ZK_HOME/bin
#-------------------------
source /etc/profile
# 启动
bin/zkServer.sh start
# 连接控制台
bin/zkCli.sh
# zookeeper集群
vim zoo.cfg
#-------------------------
# tickTime=2000
# initLimit=10
# syncLimit=5
# clientPort=2181
dataDir=/usr/local/apache-zookeeper-3.7.1/data/zookeeper
# 如果使用云服务器的话
#admin.serverPort=10086
admin.enableServer=false
server.1=192.168.40.8:2888:3888
server.2=192.168.40.88:2888:3888
server.3=192.168.40.6:2888:3888
# !!! 注意端口号后不要有空格
#-------------------------
# 也可以使用映射并修改zoo.cfg中相应的server
vi /etc/hosts
192.168.40.8 node1
192.168.40.88 node2
192.168.40.6 node3
# zoo.cfg
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
# 创建myid文件
cd /usr/local/apache-zookeeper-3.7.1/data/zookeeper
touch myid
echo 1 > myid
# 连接
bin/zkServer.sh start
# 都连接后
bin/zkServer.sh status
# zookeeper 脚本 service zookeeper start|stop|restart|status
vim /etc/init.d/zookeeper
#-------------------------
# !/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
source /etc/profile
case $1 in
start)
echo "---------- zookeeper 启动 ------------"
${ZK_HOME}/bin/zkServer.sh start
;;
stop)
echo "---------- zookeeper 停止 ------------"
${ZK_HOME}/bin/zkServer.sh stop
;;
restart)
echo "---------- zookeeper 重启 ------------"
${ZK_HOME}/bin/zkServer.sh restart
;;
status)
echo "---------- zookeeper 状态 ------------"
${ZK_HOME}/bin/zkServer.sh status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
#-------------------------
chmod +x /etc/init.d/zookeeper
chkconfig --add zookeeper
service zookeeper start|stop|restart|status
kafka
# 解压
tar -zxvf kafka_2.12-3.2.0.tgz
# 配置信息
vim kafka_2.12-3.2.0/config/server.properties
#-------------------------
broker.id=1 # 1,2,3 (unique)
#-------------------------
# 配置环境变量
vim /etc/profile
#-------------------------
export KAFKA_HOME=/usr/local/kafka_2.12-3.2.0
export PATH=:$PATH:${KAFKA_HOME}
#-------------------------
source /etc/profile
# 启动 zookeeper
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
# 启动kafka
nohup bin/kafka-server-start.sh config/server.properties &
# 测试
bin/kafka-topics.sh --bootstrap-server 192.168.40.88:9092 --list
bin/kafka-topics.sh --describe --zookeeper 192.168.40.8:2181,192.168.40.88:2181,192.168.40.6:2181
# 关闭
nohup bin/kafka-server-stop.sh
nohup bin/zookeeper-server-stop.sh
vim /etc/init.d/kafka
#-------------------------
# !/bin/bash
#chkconfig:2345 20 90
#description:Kafka Service Control Script
source /etc/profile
case $1 in
start)
echo "---------- zookeeper 启动 ------------"
nohup ${KAFKA_HOME}/bin/zookeeper-server-start.sh ${KAFKA_HOME}/config/zookeeper.properties &
echo "---------- kafka 启动 ------------"
nohup ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties &
;;
stop)
echo "---------- kafka 停止 ------------"
#jps | grep Kafka |cut -d' ' -f1 |xargs kill -s 9
nohup ${KAFKA_HOME}/bin/kafka-server-stop.sh
echo "---------- zookeeper 停止 ------------"
nohup ${KAFKA_HOME}/bin/zookeeper-server-stop.sh
;;
*)
echo "Usage: $0 {start|stop}"
esac
#-------------------------
# 权限设置 755
chmod +x /etc/init.d/kafka
# 开机自启动
chkconfig --add kafka
chkconfig --del kafka
service kafka start|stop
# 失败了
# 配置一键启动脚本
mkdir /home/onekey
vim /home/onekey/node
#-------------------------
192.168.40.8
192.168.40.88
192.168.40.6
#-------------------------
vim /home/onekey/start-kafka-zk.sh
#-------------------------
cat /home/onekey/node | while read line
do
{
echo $line
ssh $line "source /etc/profile;nohup $(KAFKA_HOME)/bin/zookeeper-server-start.sh $(KAFKA_HOME)/config/zookeeper.properties >/dev/nul*2>&1 & " &
}&
wait
done
#-------------------------
vim /home/onekey/start-kafka.sh
#-------------------------
cat /home/onekey/node | while read line
do
{
echo $line
ssh $line "source /etc/profile;export JMX_PORT=9988;nohup $(KAFKA_HOME)/bin/kafka-server-start.sh $(KAFKA_HOME)/config/server.properties >/dev/nul*2>&1 & " &
}&
wait
done
#-------------------------
vim /home/onekey/stop-kafka-zk.sh
#-------------------------
cat /home/onekey/node | while read line
do
{
echo $line
ssh $line "source /etc/profile;nohup $(KAFKA_HOME)/bin/zookeeper-server-stop.sh "
}&
wait
done
#-------------------------
vim /home/onekey/stop-kafka.sh
#-------------------------
cat /home/onekey/node | while read line
do
{
echo $line
ssh $line "source /etc/profile;jps | grep Kafka |cut -d' ' -f1 |xargs kill -s 9"
}&
wait
done
#-------------------------
chmod 777 /home/onekey/start-kafka-zk.sh
chmod 777 /home/onekey/start-kafka.sh
chmod 777 /home/onekey/stop-kafka-zk.sh
chmod 777 /home/onekey/stop-kafka.sh
hadoop
tar zxvf hadoop-3.3.3.tar.gz
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 网关的值为将ip地址中最后一段的值改为2
vim /etc/profile
#-------------------------
# hadoop
export HADOOP_HOME=/usr/local/hadoop-3.3.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#-------------------------
source /etc/profile
# 测试
hadoop version
# 集群
cd /usr/local/hadoop-3.3.3/etc/hadoop
vim hadoop-env.sh
#-------------------------
export JAVA_HOME=/usr/local/jdk1.8.0_321
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
#-------------------------
vim core-site.xml
#-------------------------
#tip:下图中乱码部分为注释代码,可以删掉,不影响
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址在node1机器上-->
<value>hdfs://node1:8020</value>
</property>
<!--配置Hadoop的本地保存数据路径-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.3.3/tmp</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>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>
#-------------------------
vim hdfs-site.xml
#-------------------------
<configuration>
<!--指定HDFS的数量-->
<!--<property>-->
<!-- <name>dfs.replication</name>-->
<!-- <value>3</value>-->
<!--</property>-->
<!--secondary namenode 所在主机的IP和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
</configuration>
#-------------------------
vim mapred-site.xml
#-------------------------
<configuration>
<!--指定MapReduce运行时的框架,这里指定在YARN上,默认在local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--MR程序历史服务地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!--MR程序历史服务器web端地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</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>
</configuration>
#-------------------------
vim yarn-site.xml
#-------------------------
<configuration>
<!--指定YARN集群的管理者(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<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>
</configuration>
#-------------------------
vim workers
#-------------------------
node1
node2
node3
#-------------------------
scp -r hadoop-3.3.3 root@node2:$PWD
scp -r hadoop-3.3.3 root@node3:$PWD
# 3个节点
source /etc/profile
# 主节点
hdfs namenode -format
# 在node1上,使用软件自带的shell脚本一键启动
# 前提:配置好机器之间的ssH免密登录和workers文件
# HDFS集群
start-dfs.sh
stop-dfs.sh
# YARN集群
start-yarn.sh
stop-yarn.sh
# Hadoop集群
start-all.sh
stop-all.sh
# Windows 管理员 cmd
vim C:\Windows\System32\drivers\etc\host
#-------------------------
192.168.40.8 node1 resourcemanager_host
192.168.40.88 node2
192.168.40.6 node3
#-------------------------
# HDFS 浏览器访问 node1:9870
http://node1:9870
# YARN 浏览器访问 esourcemanager_host:8088
http://resourcemanager_host:8088
hive
# 需要先安装 mysql
tar zxvf apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin hive-3.1.3
cd /usr/local/hadoop-3.3.3/share/hadoop/common/lib/
cp guava-27.0-jre.jar /usr/local/hive-3.1.3/lib/
cd /usr/local/hive-3.1.3/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
# 内容如下[hive-env.sh]
vim hive-site.xml
# 内容如下[hive-site.xml]
# 上传 mysql-connector-java 到 /usr/local/hive-3.1.3/lib
cd /usr/local/hive-3.1.3/
# 第一次运行
# bin/schematool -initSchema -dbType mysql -verbos
# Hadoop 创建所需文件夹
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
# 启动
/usr/local/hive-3.1.3/bin/hive --service metastore
ctrl + c # 结束
nohup /usr/local/hive-3.1.3/bin/hive --service metastore &
kill -9 ****
hive-env.sh
export HADOOP_HOME=/usr/local/hadoop-3.3.3 export HIVE_CONF_DIR=/usr/local/hive-3.1.3/conf export HIVE_AUX_JARS_PATH=/usr/local/hive-3.1.3/lib
hive-site.xml
<configuration> <!--存储元数据mysql相关配置--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <!--<value>com.mysql.jdbc.Driver</value>--> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>ll55555555</value> </property> <!--H2S运行绑定host --> <property> <name>hive.server2.thrift.bind.host</name> <value>node1</value> </property> <!--远程模式部署metastore metastore地址--> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property> <!--关闭元数据存储授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> </configuration>