以JDK8为例
export JAVA_HOME=/home/BernardX/Toolkits/jdk8u191-b12
export PATH=${JAVA_HOME}/bin:${PATH}
export JRE_HOME=${JAVA_HOME}/jre
以scala2.11为例
export SCALA_HOME=/home/lemaker/Toolkits/scala-2.11.8
export PATH=${SCALA_HOME}/bin:${PATH}
以Spark2.4.5为例:
export SPARK_HOME=/home/lemaker/open-source/spark-2.4.5-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:${PATH}
以Hadoop2.7为例:
export HADOOP_HOME=/home/lemaker/HadoopEnv/hadoop-2.7.4
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${PATH}
export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
以Hive2.3.5为例:
export HIVE_HOME=/home/lemaker/HadoopEnv/apache-hive-2.3.5-bin
export PATH=${HIVE_HOME}/bin:${PATH}
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export HCAT_HOME=${HIVE_HOME}/hcatalog
配置完成之后运行此命令(对当前用户的环境变量进行配置):
source ~/.bashrc
不要运行(对该机器上所有用户环境变量进行配置)命令,会污染当前机器其余用户的环境变量,/etc/profile的优先级会高于~/.bashrc文件,会进行环境变量的一个覆盖:
source /etc/profile
启动standalone模式下的所有集群(master以及slave节点)
bash $SPARK_HOME/sbin/start-all.sh
启动Spark HistoryServer
bash $SPARK_HOME/sbin/start-history-server.sh
注意部分Spark SQL跟Hive命令是通用的,比如使用数据库,查看表的信息等等。
选择使用的数据库名字
sql("use tpcds_1000_parquet");
解析Query语句,打印执行过程中的计划
sql("specific query").explain(true);
以TPC-DS中的Query1为例:
sql("WITH customer_total_return AS (SELECT sr_customer_sk AS ctr_customer_sk, sr_store_sk AS ctr_store_sk, sum(sr_return_amt) AS ctr_total_return FROM store_returns, date_dim WHERE sr_returned_date_sk = d_date_sk AND d_year = 2000 GROUP BY sr_customer_sk, sr_store_sk) SELECT c_customer_id FROM customer_total_return ctr1, store, customer WHERE ctr1.ctr_total_return > (SELECT avg(ctr_total_return)*1.2 FROM customer_total_return ctr2 WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) AND s_store_sk = ctr1.ctr_store_sk AND s_state = 'TN' AND ctr1.ctr_customer_sk = c_customer_sk ORDER BY c_customer_id LIMIT 100").explain(true);
查询表的内容
sql("select * from 表名");
查询表的具体信息
describe extended 表名;
Hive首次启动,需要进行初始化,命令如下
schematool -dbType mysql -initSchema
启动Hive
$HIVE_HOME/bin/hive --service metastore &
查看Hive中所有数据库的名字
show databases;
删除Hive中的数据库
drop database 数据库名 cascade;
分析表的大小,行数以及具体信息
analyze table 表名 compute statistics;
查询表的所有内容
select * from 表名;
查询表的行数
select count(*) from 表名;
查看表的所有字段以及字段的所有类型
desc 表名;
查看表的详细信息
desc formatted 表名;
查看表的分区信息(如果不是分区表,会报错 Table call_center is not a partitioned table)
启动hdfs
start-dfs.sh
hdfs上传文件
hdfs dfs -put 本地目录 hdfs目录
hdfs创建文件/文件夹
hdfs dfs -mkdir -p hdfs文件夹(文件)
hdfs删除文件/文件夹
hdfs dfs -rm -r hdfs文件夹(文件)
hdfs查看文件夹下的所有文件大小之和
hdfs dfs -count hdfs://w3:9000/BenchmarkData/Tpcds/tpcds_1000/tpcds_parquet/customer
或者
hdfs dfs -count /BenchmarkData/Tpcds/tpcds_1000/tpcds_parquet/customer
hdfs查看文件夹下的所有文件大小
hdfs dfs -du /BenchmarkData/Tpcds/tpcds_1000/tpcds_parquet/store_sales
namenode格式化命令(一般用于hadoop集群初始化)
hdfs namenode -format
hadoop打开安全模式
hdfs dfsadmin -safemode enter
hadoop关闭安全模式
hdfs dfsadmin -safemode leave
启动yarn
start-yarn.sh
查看nodemanager的所有结点运行状态以及健康状态
yarn node -list -all
查看yarn当前application的信息
yarn application -list
启动Zookeeper
bash $ZOOKEEPER_HOME/bin/zkServer.sh start
查看Zookeeper每个节点的状态
bash $ZOOKEEPER_HOME/bin/zkServer.sh status
关闭Zookeeper所有节点
bash bin/zkServer.sh stop
重启Zookeeper所有节点
bash bin/zkServer.sh restart
前台启动Kafka
bash $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
查看Kafka当前的所有topic
bash $KAFKA_HOME/bin/kafka-topics.sh --zookeeper localhost:2181 --list
Kafka删除名字为test的topic
bash $KAFKA_HOME/bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
Kafka创建名字为test的topic
bash $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic test
编译Flinkbench命令:
mvn -Pflinkbench -Dspark=2.4 -Dscala=2.11 clean package
编译Sparkbench命令:
mvn -Psparkbench -Dspark=2.4 -Dscala=2.11 clean package
运行Flink程序
#产生数据集
bin/workloads/streaming/identity/prepare/genSeedDataset.sh
#流数据源源不断地发送给Kafka
bin/workloads/streaming/identity/prepare/dataGen.sh
#Flink运行应用程序
bin/workloads/streaming/identity/flink/run.sh
#等待一定的时间间隔之后(如10min),运行收集程序性能的脚本
bin/workloads/streaming/identity/common/metrics_reader.sh
运行Spark程序
#HDFS上产生数据集
bin/workloads/micro/wordcount/prepare/prepare.sh
#Spark运行应用程序wordcount
bin/workloads/micro/wordcount/spark/run.sh
ubuntu一键安装mysql服务端命令
sudo apt install mysql-server
指定用户登录(名字为user),之后输入密码
mysql -u user -p
查询所有mysql中的所有用户信息(第一行为mysql旧版本命令,第二行为mysql新版本的命令)
select host, user, password from mysql.user;
select host, user, authentication_string from mysql.user;
查询root用户权限
show grants for "root"@"localhost";
添加授权用户
create user "用户名"@"IP地址" identified by "密码";
比如,创建用户名为hive,密码也为hive的用户
create user "hive"@"%" identified by "hive";
分配用户权限
格式为:
grant 权限类型 on 数据库名.表名 to '用户名'@'ip地址' identified by '用户密码' with grant option;
示例:
给hive用户授予访问所有数据库所有表的权限(常用)
grant all privileges on *.* to 'hive'@'%' identified by 'hive';
刷新权限(授予权限或者更改权限之后需要进行此操作)
flush privileges;
查看mysql的运行状态(两种方法都可)
service mysql status
ps -ef | grep mysqld
查看mysql版本信息:
mysql -V
或者在mysql命令行使用
select version();
更改mysql的核心配置文件:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
git新建分支(比如名字为yellow),此时会自动切换到yellow分支
git checkout -b yellow
git pull设置upstream,设置git pull拉取的源头:
git branch --set-upstream-to=origin yellow
git push设置upstream,设置git push推送的源头:
git push --set-upstream origin yellow
查看可用虚拟环境
conda env list
conda info -e
conda info --envs
第一次使用conda,需要进行环境的激活
source activate
创建一个虚拟环境(python版本为3.7,可以自己指定)
conda create -n env_name python=3.7
conda变更base环境的版本
conda install python=3.5
激活虚拟环境
conda activate env_name
注意,老版本的激活命令为
Linux: source activate your_env_name
Windows: activate your_env_name
退出虚拟环境
conda deactivate
查看虚拟机环境的Python版本
python --version
删除某一个虚拟环境以及下面的所有安装包
conda remove --name env_name --all
conda导出当前环境,会生成一个yaml文件
conda env export > env.yaml
conda导出某一个环境
conda env export --name myenv > myenv.yml
yaml文件复制到新机器,进行导入操作
conda env create -f env.yaml
conda查看安装的所有包的信息
conda list
conda安装包
conda install package_name
conda安装包指定版本
conda install numpy=0.20.3
conda卸载包
conda uninstall package_name
安装依赖包指定国内镜像
pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 包名
pip升级
pip3 install --upgrade pip
pip导出当前所有库
pip3 freeze > env.txt
pip安装库中的所有信息
pip3 install -r env.txt
lsb_release -a
uname -a
arch
查看某个端口号被哪个进程占用
sudo netstat -nap | grep 端口号
ps -ef | grep 端口号
查看监听的端口号
sudo netstat -tpnl
删除用户
sudo userdel -r 用户名
切换用户(su为switch user的意思)
sudo su 用户名
添加用户
sudo useradd -m 用户名
sudo passwd 用户名(然后为其设置密码)
给新用户可以执行sudo的权限
#编辑文件
sudo vim /etc/sudoers
#找到对应的权限标识
#User privilege specification
root ALL=(ALL:ALL) ALL
#在下面添加以下内容,并保存
新用户名 ALL=(ALL:ALL) ALL
强制保存只读文件
esc执行: :w !sudo tee %
给整个目录(以及子目录)所有权限
sudo chmod -R 777 目录名
nohup后台挂起格式如下
nohup 挂起的运行的命令 > output.log 2>&1 &
nohup实际执行命令如下:
nohup bash test.sh > output.log 2>&1 &
df检查磁盘空间占用情况(并不能查看某个目录占用的磁盘大小);du用于显示文件或目录所占的磁盘空间。
查看磁盘文件系统每个挂载点的分区大小
df -h
查看目录下文件大小(比如查看kafka-logs目录下所有文件之和的总大小)
du -h --max-depth=1 /tmp/kafka-logs
压缩Metrics目录下的所有文件,并将压缩包命名命名为Compress
zip -q -r Compress.zip Metrics/
不论是python文件,还是shell脚本,可以将打印在console的内容定向到文件中
覆盖输出重定向:
python3 analyzePhysicalPlan.py >plan.txt
追加输出重定向
python3 analyzePhysicalPlan.py >>plan.txt
两者均把脚本执行内容,输出到plan.txt文件中,区别是第二个追加,每次会对文件追加写,而第一项则是会覆盖原有的内容
形式为cmd1 && cmd2,&&表示"与",一条命令执行出错,则后面命令不执行,
第一条命令执行结束后,下一条命令开始执行。比如
python3 analyzePhysicalPlan.py >>plan.txt && awk '{print $1,$2,$3,$4}' plan.txt
前一条命令为追加内容到文本文件,后命令为awk切割内容。
或者使用|命令,在前一条命令的基础上,使用后面的命令处理前一条命令输出的内容
比如:
查看端口号50070是否被占用
ps -ef | grep 50070
ls -ll查看当前所有隐藏文件夹,显示执行权限,所属用户,创建日期等信息,后面使用awk配合进行处理,表示只打印第一列(即打印所有文件的执行权限信息)
ls -ll | awk '{print $1}'
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
空格进行切割并打印,空格切割test.txt,输出每一行的第一个单词跟第四个单词(如不存在,则不输出)
awk '{print $1,$4}' test.txt
awk过滤第一行,有些时候第一行是不需要的列名,需要进行过滤:
awk 'NR!=1{print $1,$4}' test.txt
缓存保存到硬盘,并清除,搞完之后使用free -m查看
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
cat /proc/cpuinfo| grep "processor"| wc -l