Linux

1 安装使用及教程

下载安装

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&amp;useSSL=false&amp;useUnicode=true&amp;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>
posted @ 2022-01-10 20:08  Kite_Lee  阅读(59)  评论(0编辑  收藏  举报