Linux_BigData常用配置/命令

Linux

双网卡配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0    #配置网卡/更改IP
rm -rf  /etc/udev/rules.d/70-persistent-net.rules #删除MAC地址
service network restart   #重启网络
service iptables stop  	  #关闭防火墙(centos6)
systemctl stop firewalld	#关闭防火墙(centos7)
chkconfig iptables off    # 关闭防火墙自启(centos6)
systemctl disable firewalld	#关闭防火墙自启(centos7)
ifconfig                  # 查看网络信息(centos6)
ip addr               # 查看网络信息(centos7)
vi /etc/hosts             # 主机名和IP的映射
vi /etc/sysconfig/network #配置主机名与IP的映射关系
NETWORKING=yes
HOSTNAME=HadoopNode00
vi /etc/sysconfig/network #更改主机名
192.168.11.20 HadoopNode00
#ssh免密登陆
ssh-keygen -t rsa   # 生成密钥
ssh-copy-id HadoopNOde00

网卡一

DEVICE=eth0 
TYPE=Ethernet 
ONBOOT=yes 
NM_CONTROLLED=yes
BOOTPROTO=static 
IPADDR=192.168.134.99 
NETMASK=255.255.255.0
BROADCAST=192.168.134.255 
#解释:
#网卡1使用NAT模式
#静态IP
#网段与自身虚拟机配置保持一致 即可
#作为虚拟机之前通信使用

网卡二

DEVICE=eth1 
TYPE=Ethernet 
ONBOOT=yes 
NM_CONTROLLED=yes 
BOOTPROTO=dhcp

#解释: 
#网卡1使用桥接模式
#动态IP
#作为连接公网使用

同步时钟

ntpdate -u ntp.api.bz

查询进程

ps -ef |grep 进程名

ps:将某个进程显示出来
-A  显示所有程序。
-e  此参数的效果和指定"A"参数相同。
-f  显示UID,PPIP,C与STIME栏位。
grep命令是查找
中间的|是管道命令 是指ps命令与grep同时执行

杀死进程

kill -9 UID

Hadoop

#格式化namenode
hdfs namenode -format

#启动hdfs
start-dfs.sh   # 开启HDFS 
stop-dfs.sh    # 关闭hdfs 

#上传文件
hadoop fs -put  /root/install.log  /1.txt

#ls文件
hadoop fs -ls /

#下载文件
hadoop fs -get  /1.txt /root/1.txt

#删除文件
hadoop fs -rm /2.txt

#删除文件夹
hadoop fs -rm -r -f /data

#查看文件
hadoop fs -cat /1.txt

#创建文件夹
hadoop fs -mkdir /data

#复制文件
hadoop fs -cp /1.txt /data/

#启动YARN
start-yarn.sh

#远程Jar 包部署
hadoop jar jar包名 Job全限定名

Zookeeper

#启动
./bin/zkServer.sh  start ./conf/zk.conf

#状态查看
./bin/zkServer.sh  status ./conf/zk.conf

#连接
./bin/zkCli.sh -server 192.168.15.130:2181

#其他指令
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
quit 
printwatches on|off
create [-s] [-e] path data acl  默认持久节点  -s 顺序节点 -e 临时节点
stat path [watch]
close 
ls2 path [watch]
history 
setAcl path acl
getAcl path
addauth scheme auth
delete path [version]

#connect (链接ZooKeeper)
connect localhost:2181

#ls / ls2 (查看子节点)
[zk: localhost:2181(CONNECTED) 19] ls /
[dubbo, hadoop-ha, zookeeper]

[zk: localhost:2181(CONNECTED) 20] ls2 /
[dubbo, hadoop-ha, zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x1001
cversion = 4
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 4

#create(创建节点)
[zk: localhost:2181(CONNECTED) 15] create /test'1'
Created /test

#delete(删除节点)
[zk: localhost:2181(CONNECTED) 21] delete /test
[zk: localhost:2181(CONNECTED) 22] ls /
[dubbo, hadoop-ha, zookeeper]

#rmr (递归删除节点)
[zk: localhost:2181(CONNECTED) 28] ls /test
[cjh]
[zk: localhost:2181(CONNECTED) 44] rmr /test/cjh
[zk: localhost:2181(CONNECTED) 46]  ls /test
[]

#quit(退出ZookeeperSHell客户端)
quit

#stat(查看节点状态)
[zk: localhost:2181(CONNECTED) 51] stat /test
cZxid = 0x1004
ctime = Tue Mar 12 15:28:00 CST 2019
mZxid = 0x1004
mtime = Tue Mar 12 15:28:00 CST 2019
pZxid = 0x100f
cversion = 10
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 0

HBase

单机

启动

start-hbase.sh

连接

hbase shell

Shell操作

status	#查看HBase状态
version	#查看版本
whoami

命名空间(namespace类似RDBMS的数据库)操作

create_namespace "cjh"	#创建一个普通的命名空间
create_namespace "cjh",{'name'=>'666'}	#创建带属性的命名空间
drop_namespace 'baizhi'	#删除命名空间
describe_namespace 'shahe'	# 描述命名空间
alter_namespace 'cjh',{METHOD => 'set', 'name'=>'777'}	# 修改命名空间
list_namespace	# 列出所有命名空间

表操作(DDL数据定义语言)

create 'cjh:t_user','cf1','cf2'	# 创建cjh namespace的下的表叫做 t_user,有两个列簇叫做 cf1 cf2
# 创建一个最多有三个版本的表
create 'cjh:t_user',{NAME=>'cf1',VERSIONS=>3}
describe 'cjh:t_user'	#描述表
#删除表,不可以直接删除,要先禁用
disable 'cjh:t_user'
drop 'cjh:t_user'
list	#列出所有表
list_namespace_tables 'cjh'	# 列出某个命名空间下的表

数据操作(数据管理语言 DML)

#put
put 'cjh:t_user','1','cf1:name','zhangsan'	# 最普通的插入语句的方式
t = get_table 'cjh:t_user'	# 将表对象复制给变量t
# 使用复制对象t 对表进行操作
t.put '1','cf1:age',18
# 覆盖操作和put插入相似 写入相同的条件  写入值就可覆盖
t.put '1','cf1:age',19
# 扫描 当前的表
t.scan


#get
# 获取cjh:t_user 下的rowk为1 的所有的cell
get 'cjh:t_user' ,'1'
t.get '1'
#获取某一值的不同版本的数据
t.get '1',{COLUMN=>'cf1:name',VERSIONS=>3}


#delete /deleteall
t.delete '1','cf1:name'
# 根据时间戳进行删除
t.delete '1','cf1:age',1569279066158
#删除所有
deleteall 'cjh:t_user','1'


#scan
#  查询列簇为cf1 从第一行开始
scan 'cjh:t_user',{COLUMNS=>['cf1'],STARTROW=>'1'}
#  查询列簇为cf1 从第一行开始 只显示一行
scan 'cjh:t_user',{COLUMNS=>['cf1'],STARTROW=>'1',LIMIT=>1}


#count 查询表中数据条数
count 'cjh:t_user'


#append在指定值上追加数据
append 'cjh:t_user','1','cf1:name','666'


#truncate(删除)(执行之前买好飞机票)
truncate 'cjh:t_user'

Hive

#启动
./bin/hive

#查看当前数据库
select  current_database();

#展示所有数据库
show databases;

#显示所有表
show tables;

#直接查询
./bin/hive -e 'select * from t_user'

#服务启动-JDBC
./bin/hiveserver2	#启动hive服务,挂起

#以cloudera-scm 的身份 以jdbc 的方式连接远程的 hiveserver2
./bin/beeline -u jdbc:hive2://$HOSTNAME:10000 -n root	

Hive表操作

#创建表
create table t_user(
  id int,
  name string,
  sex boolean,
  birthDay date,
  salary double,
  hobbies array<string>,
  card map<string,string>,
  address struct<country:string,city:string> 
)

#将数据导入到表中(写好数据格式)
#不常用
[root@centos ~]# hdfs dfs -put t_user /user/hive/warehouse/cjh.db/t_user

#使用hive加载数据(先进入hive命令行)
0: jdbc:hive2://CentOS:10000> load data local inpath '/root/t_user_c' overwrite into table t_user_c;
#'local'表示本地加载信息,‘overwrite’:表示数据覆盖。

#自定义分隔符
create table t_user_c(
  id int,
  name string,
  sex boolean,
  age int,
  salary double,
  hobbies array<string>,
  card map<string,string>,
  address struct<country:string,city:string> 
)
row format delimited fields terminated by ','
collection items terminated by '|'
map keys terminated by '>'
lines terminated by '\n';

#CSV格式文件
CREATE TABLE t_csv(
  id int,
  name string,
  sex boolean,
  age int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = ",",
   "escapeChar"    = "\\"
);

#JSON格式数据
create table t_user_json(
	id int,
	name varchar(32),
	sex boolean,
	birth date
)ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';

#数据导入(管理员)
#x新建表
0: jdbc:hive2://CentOS:10000> create table t(id string ,name string);
#批量插入
0: jdbc:hive2://CentOS:10000> INSERT into t(id,name) values(1,'zs'),(2,'ww');
#复制表
0: jdbc:hive2://CentOS:10000> insert into table t select ip,last_time from t_access;
#复制表结构
0: jdbc:hive2://CentOS:10000> create table temp1 as select ip,last_time from t_access;

Hive SQL操作

#使用正则表达式
#需要设置如下属性才能使用  注意 在Hive编程指南中没有对此问题作出解答
set hive.support.quoted.identifiers=none;

select  userid, `.*string` from logs;
#注意次引号为 反单引号 (ESC那个!)

#limit限制返回数据条数
select * from testuser limit 2;

#where条件查询
select * from testuser where id = '1' ;


#group by分组
#根据性别进行分组查询每个性别的平均工资
select sex , avg(salary) as avgSalary   from testuser group by sex;

#join
#内连
#使用内连接,查询性别不同但是工资相同的人
select  a.sex, a.name, a.salary , b.sex , b.name,b.salary from testuser a join testuser b on a.salary = b.salary where a.sex = false and b.sex = true;

#三表连接
#使用内连接,查询来自三个不同城市的人且具有相同的第二种爱好
 select 
 a.address.city  , a.name as name , a.hobbies[1] as hobby , 
 b.address.city  , b.name as name ,b.hobbies[1] as hobby ,
 c.address.city  , c.name as name ,c.hobbies[1] as hobby 
 from testuser a  
 join testuser b on a.hobbies[1] = b.hobbies[1]  
 join testuser c on a.hobbies[1] = c.hobbies[1]   
 where a.address.city = 'bj' and b.address.city = 'sh' and c.address.city = 'ly'; 

#LEFT OUTER JOIN  左外连接(左链接,显示关键词left左边表中的所有数据,右边表数据数据少了补NULL值,数据多了不显示;)
#连接部门表查询员工来自哪个部门
select a.name  ,b.depname from testemp a left join testdep  b on a.depid = b.id;

#FULL OUTER JOIN 全连接|满外连接
#RIGHT OUTER JOIN  右外连接(左表中匹配不上的字段值用NULL代替。)
select a.name  ,b.depname from testemp a right  join testdep  b on a.depid = b.id;

#笛卡尔积JOIN(将左表每条数据与右表每条数据分别相连)
#不带条件
SELECT * FROM testemp , testdep;

#带条件
SELECT   * FROM testemp a  ,testdep b where a.depid = b.id;

#排序 ORDER BY | SORT BY|CLUSTER BY

#order by 
#在这里叫全局排序,也就是一个MR程序中,升序的关键字ASC,默认升序。DESC为降序。 ORDER BY 子句在SELECT语句的结尾。
#按照工资就行降序排序(默认升序asc,可以不写)
select * from testuser order by salary desc;

#SORT  BY 
#每个MapReduce内部进行排序,对全局结果集来说不是排序,但是对于Reduce=1的情况是无法体现和ORDER BY的区别
#设置Reduce个数
set mapreduce.job.reduces=2;
#查看Reduce个数
get mapreduce.job.reduces;
#按工资升序查询
select * from testuser sort  by salary;

#Distribute By
#Distribute By:类似MR中partition,进行分区,结合sort by使用。
#注意,Hive要求DISTRIBUTE BY语句要写在SORT BY语句之前。
select * from logs distribute by dateString sort by  timeString;

#Cluster By
#当distribute by和sorts by字段相同时,可以使用cluster by方式。cluster by除了具
#有distribute by的功能外还兼具sort by的功能。但是排序只能是倒序排序,不能指定排
#序规则为ASC或者DESC。
select * from logs cluster by timeString;
select * from logs distribute by timeString sort by timeString;
#上述两种写的方式是相同的

#抽样
#Hive提供了另外一种按照百分比进行抽样的方式,这种事基于行数的,按照输入路径下的数
#据块百分比进行的抽样。
select * from testuser  tablesample(0.1 percent);
#提示:这种抽样方式不一定适用于所有的文件格式。另外,这种抽样的最小抽样单元是一个HDFS数据块。因此,如果表的数据大小小于普通的块大小128M的话,那么将会返回所有行。

#分桶
#分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据和优化查询的
#便利方式。不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适
#的划分大小这个疑虑。分桶是将数据集分解成更容易管理的若干部分的另一个技术。
#创建表
create table 
logs_buck
(
    uuid string,
    userid string ,
    fromUrl string ,
    dateString string,
    timeString string,
    ipAddress string,
    browserName string,
    pcSystemNameOrmobileBrandName string ,
    systemVersion string,
    language string, 
    cityName string
)
clustered by(uuid)
into 3 buckets row format delimited fields terminated by ' ';

set hive.enforce.bucketing = true;#启用桶表

load data local inpath '/root/realclean.log' overwrite into table logs_buck;
#我们看到虽然设置了强制分桶,但实际student表下面只有一个logs一个文件。分桶也就是分
#区,分区数量等于文件数,所以上面方法并没有分桶。

##创建一个新表
create table 
logs_buck1
(
    uuid string,
    userid string ,
    fromUrl string ,
    dateString string,
    timeString string,
    ipAddress string,
    browserName string,
    pcSystemNameOrmobileBrandName string ,
    systemVersion string,
    language string, 
    cityName string
)
clustered by(uuid)
into 3 buckets row format delimited fields terminated by ' ';

#这是我们这是的是3个桶
#所以设置一下reducetask的个数
set mapreduce.job.reduces=3;

insert into table logs_buck1 select *  from logs_buck distribute by(timeString) sort by(timeString asc);

Hive函数

#查询系统现在已经存在函数
show functions;

#显示自带函数用法
desc function upper;

#详细显示自带函数用法
desc function extended upper

Flume

启动Flume Agent服务实例(加载配置)

[root@HadoopNode00 apache-flume-1.7.0-bin]# bin/flume-ng agent --conf conf --conf-file conf/simple.properties --name a1 -Dflume.root.logger=INFO,console
读取指定文件
[root@Spark apache-flume-1.7.0-bin]# ./bin/flume-ng avro-client --host hadoopnode01 --port 44444 --filename /root/a.txt

Kafka

启动

[root@HadoopNode0* kafka_2.11-2.2.0]# bin/kafka-server-start.sh -daemon config/server.properties
关闭

[root@HadoopNode0* kafka_2.11-2.2.0]# bin/kafka-server-stop.sh config/server.properties
新建Topic

[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --topic t1 --partitions 3 --replication-factor 3 --create

展示Topic列表

[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --list

删除Topic

[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --delete --topic t2

描述Topic
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --describe --topic t1
修改Topic
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-topics.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --alter --topic t1 --partitions 5
发布消息
[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-console-producer.sh --broker-list HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 --topic t1
订阅消息
[root@HadoopNode02 kafka_2.11-2.2.0]# bin/kafka-console-consumer.sh --topic t1 --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092
生产者的批量发送

# 生产者方 添加如下配置项即可
# 两个条件 满足其一即可
batch.size = 16384Bytes  16kb// 缓冲区大小
linger.ms = 毫秒值    // 缓冲区中数据的驻留时长

Kafka Streaming

生产者

[root@HadoopNode01 kafka_2.11-2.2.0]# bin/kafka-console-producer.sh --topic t8  --broker-list HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092

消费者

bin/kafka-console-consumer.sh --bootstrap-server HadoopNode01:9092,HadoopNode02:9092,HadoopNode03:9092 \
    --topic t9 \
    --from-beginning \
    --formatter kafka.tools.DefaultMessageFormatter \
    --property print.key=true \
    --property print.value=true \
    --property key.deserializer=org.apache.kafka.common.serialization.StringDeserializer \
    --property value.deserializer=org.apache.kafka.common.serialization.LongDeserializer

Spark

Standalone(独立模式)
启动
[root@Spark spark-2.4.4]# sbin/start-all.sh

Spark shell 命令窗口
[root@Spark spark-2.4.4]# bin/spark-shell --master spark://Spark:7077 --total-executor-cores 2

Spark On Yarn

启动
[root@SparkOnYarn spark-2.4.4]# bin/spark-shell --master yarn --executor-cores 2 --num-executors 2

jar包执行
[root@SparkOnYarn spark-2.4.4]# bin/spark-submit --master yarn --class com.baizhi.WordCountApplication3 --executor-cores 2 --num-executors 1 /root/spark-day1-1.0-SNAPSHOT.jar

Flink

启动
[root@Spark ~]# ./bin/start-cluster.sh

本地jar包执行
[root@Spark flink-1.8.1]# ./bin/flink run -c com.baizhi.quickstart.FlinkWordCountsQuickStart -p 3 /root/flink-1.0-SNAPSHOT-jar-with-dependencies.jar

查看已运行flink的进程
[root@Spark flink-1.8.1]# ./bin/flink list -m Spark:8081

取消flink进程
[root@Spark flink-1.8.1]# ./bin/flink cancel -m Spark:8081 36e8f1ec3173ccc2c5e1296d1564da87

取消任务,并将状态保存在默认配置的savepoints中
[root@Spark bin]# ./flink cancel -m spark:8081 -s 62e06a69c34d24036c0f09db368dc77d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值