HDFS命令
- HDFS命令
Usage: hdfs [--config confdir] COMMAND where COMMAND is one of:
命令 | 说明 |
---|---|
dfs | 执行hadoop支持的文件系统命令run a filesystem command on the file systems supported in Hadoop. |
namenode -format | 格式化文件系统format the DFS filesystem |
secondarynamenode | 启用secondary namenode服务 run the DFS secondary namenode |
namenode | 启用namenode服务 run the DFS namenode |
journalnode | 启用journalnode服务 run the DFS journalnode |
zkfc | 启用 ZK 备援控制驻守服务 run the ZK Failover Controller daemon |
datanode | 启用 datanode服务 run a DFS datanode |
dfsadmin | 启用 DFS admin客户端 run a DFS admin client |
haadmin | 启用 DFS HA admin 客户端 run a DFS HA admin client |
fsck | 启用 DFS 文件系统检查组件 run a DFS filesystem checking utility |
balancer | 启用 集群负载均衡工具 run a cluster balancing utility |
jmxget | get JMX exported values from NameNode or DataNode. |
oiv | 应用脱机fsimage查看器 apply the offline fsimage viewer to an fsimage |
oev | 应用脱机编辑查看器 apply the offline edits viewer to an edits file |
fetchdt | 从NameNode分发一个代理token fetch a delegation token from the NameNode |
getconf | 获取配置信息 get config values from configuration |
groups | 获取用户所属的组 get the groups which users belong to |
snapshotDiff | 比较一个目录的两个快照的不同 diff two snapshots of a directory or diff the current directory contents with a snapshot |
lsSnapshottableDir | 列举属于本用户的所有表快照目录 list all snapshottable dirs owned by the current user |
portmap | 启用portmap服务 run a portmap service |
nfs3 | run an NFS version 3 gateway |
- 常用命令
对于HDFS dfs命令,针对在shell命令在大部分可以使用,只要在相应的命令前加 -。使用时,在Hive Cli可以省略hadoop命令。
展示hdfs文件中的根目录:
hdfs dfs -ls /
展示home目录下的信息:
hdfs dfs -ls
创建home目录下创建目录product,当没有加目录时,就是在对应用户的home目录
hdfs dfs -mkdir product
拷贝文件到HDFS,将product.csv文件拷贝到刚才创建的product文件夹下。
hdfs dfs -put product.csv product
将文件从HDFS上拷贝到本地系统
hdfs dfs -get product/prodcut.csv product_copy.csv
在HDFS文件系统内进行文件拷贝
hdfs dfs -cp product/product.csv product_copy.csv
删除文件
hdfs dfs -rm product_copy.csv
删除一个目录
hdfs dfs -rm -r product
获取HDFS转态报告(限管理员)
hdfs dfsadmin -report
对HDFS文件系统的健康型检查
hdfs fsck /
Hive命令
JDBC连接元数据
Hive元数据存储了如表的模式和分区等信息,用户执行如CREATE TABLE或ALTER TABLE等命令会制定这些信息,对于这些会存在并发同时访问,所以
默认的内置数据库不适合于生产环境,目前绝大多数情况系啊,使用Mysql进行存储元数据信息,Mysql驱动的存放位置为:
hive-site.xml 配置文件中
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://sandbox-hdp.hortonworks.com/hive?createDatabaseIfNotExist=true</value>
</property>
命令行选项
执行 hive -h 或 hive --help 可以查看命令选项
命令 | 说明 |
---|---|
-d,--define <key=value> | 定义变量 Variable substitution to apply to Hive commands. e.g. -d A=B or --define A=B |
-e <quoted-query-string> | 从命令行执行sql SQL from command line |
-f <filename> | 从sql文件中调用 SQL from files |
-H,--help | 打印帮助信息 Print help information |
-h <hostname> | 连接到远程Hive服务 Connecting to Hive Server on remote host |
--hiveconf <property=value> | 对给定的属性应用给定的值 Use value for given property |
--hivevar <key=value> | 在Hive命令中进行参数替换Variable substitution to apply to hive commands. e.g. --hivevar A=B |
-i <filename> | 初始化SQL文件 Initialization SQL file |
-p <port> | 连接Hive Server 的端口号 Connecting to Hive Server on port number |
-S,--silent | 在集成Shell中开启静默模式 Silent mode in interactive shell |
-v,--verbose | 详细信息输出到控制台 Verbose mode (echo executed SQL to the console) |
变量和属性
--define key = value 等价于 --hivevar key=value,可在命令行定义用户自定义变量以便在Hive脚本中引用,来满足不同的执行。
Hive将这些键值对放到Hivevar命名空间,这样可以和其他的3中内置命名空间hiveconf,system,env 进行区分。
相关命名空间:
命名空间 | 使用权限 | 描述 |
---|---|---|
hivevar | 可读/可写 | 用户自定义变量 |
hiveconf | 可读/可写 | Hive相关的配置属性 |
system | 可读/可写 | 系统环境变量,Java可定义的配置属性 |
env | 只可读 | Shell环境定义的环境变量 |
使用 set 命令对各不同命名空间中的变量进行设置,shell环境变量,对应的可以使用 echo $param 来进行输出现实。通用的
配置信息可以在 /etc/profile,/etc/bashrc , ~/bash_profile 文件中定义。
set env:home | echo $HOME
set env:HADOOP_HOME | echo $HADOOP_HOME
set env:JAVA_HOME | echo $JAVA_HOME
使用 -d 或 --hivevar进行定义变量。
hive -d max_year=2018
hive --hivevar configinfo=something --hivevar hosturl=hostname
--hiveconf 配置信息,hive的配置参数,覆盖hive-site.xml中的参数值
hive --hiveconf hive.cli.print.current.db=true --hiveconf hive.cli.print.header=true;
hive --hiveconf hive.root.logger=INFO,console
hiverc | hive -i 文件配置,在Hive cli中使用-i参数进行制定一个配置文件,在cli启动时,在提示符出现前会执行这个文件。Hive会自动在HOME目录下寻找名为.hiverc的文件,而且会自动
执行这个文件中的命令。
对于用户需要频繁执行的命令,使用这个文件是很方便的。例如设置系统属性,或增加对于Hadoop的分布内存进行自定义的Hive扩展Java包。
查看.hiverc文件,在对应账号的home目录,如果没有,就自己创建一个。对于配置的内容,通用使用 set 命令进行设置。
Hive常用设置
配置项 | 说明 |
---|---|
hive.root.logger=DEBUG,console | 在会话里输出日志信息 |
hive.cli.print.current.db=true | 显示当前数据库 |
hive.cli.print.header=true | 显示列名 |
hive.enforce.bucketing=true | 启用bucket |
hive.exec.dynamic.partition=true | 开启动态分区 |
hive.exec.dynamic.partition.mode=nostrict | 动态分区模式:strict至少要有个静态分区,nostrict不限制 |
hive.exec.max.dynamic.partitions.pernode=100 | 每个mapper节点最多创建100个分区 |
hive.exec.max.dynamic.partitions | 总共可以创建的分区数 |
hive.mapred.mode=strict | 不执行有风险(巨大的mapreduce任务)的操作 |
hive.exec.compress.intermediate=true | 压缩mapreduce中间数据 |
hive.exec.compress.output=true | 压缩mapreduce输出结果 |
hive.archive.enabled=true | 启用对分区归档 |
使用举例
hive -e 一次性执行Hive Sql语句。
结合使用 hivevar
hive --hivevar param=data -e "SELECT * FROM TABLE WHERE cloum > ${hivevar:param} "
hive -f 指定Hive Sql脚本文件
hive --hivevar param=data -f "hive sql file path"
查看Hive操作历史命令:
Hive 会将近10000行命令记录到文件 $HOME/.hivehistory
在Hive中执行Shell命令,在命令前加 ! 即可
> !ls;