0%

设置ulimit

centos服务器设置ulimit,ulimit是指服务器允许的最大打开文件数目

查看ulimit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ulimit -a

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127567
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 655350
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

open files默认是1024,有时候会不够,可以进行修改

阅读全文 »

设置网络参数

调整/etc/sysctl.conf 文件中的相关参数

  • net.core.netdev_max_backlog 当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目
  • net.core.somaxconn 用于调节系统同时发起的TCP连接数,默认128,当存在高并发的情况下,该值过小,可能导致连接超时或者重传的问题
  • net.ipv4.tcp_syncookies 当并发请求数目超过了1000之后,服务器自身可能会认为是收到了syn泛洪攻击,但对于高并发系统,要禁用此设置,0表示关闭
  • net.ipv4.tcp_max_syn_backlog 用于记录尚未收到客户端确认信息的连接请求的最大值,参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求
  • net.ipv4.tcp_tw_recycle 参数决定是否加速TIME_WAIT的sockets的回收,默认为0,表示关闭
  • net.ipv4.tcp_tw_reuse 参数决定是否可将TIME_WAIT状态的sockets用于新的TCP连接,默认为0,表示关闭
  • net.ipv4.tcp_max_tw_buckets 参数决定TIME_WAIT状态的sockets总数量,可根据连接数和系统资源需要进行设置
  • net.ipv4.tcp_max_orphans 用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上,如果超过该数字,没有与用户文件句柄关联的TCP套接字将立即被复位,同时给出警告信息,可以防止简单的Dos攻击
  • net.ipv4.tcp_timestamps 用于设置时间戳,可以避免序列号的卷绕,为0时,表示禁用TCP时间戳的支持
  • net.ipv4.tcp_synack_retries 用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送SYN并附带一个回应前一个SYN的ACK,该参数影响这个过程,一般为1,即内核放弃连接之前发送一次SYN+ACK包
  • net.ipv4.tcp_syn_retries 与net.ipv4.tcp_synack_retries参数类似,设置内核放弃建立连接之前发送SYN包的数量
  • net.ipv4.tcp_fin_timeout 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
  • net.ipv4.tcp_keepalive_time 表示当keepalive启用时,tcp发送keepalive消息的频度。默认是2小时
  • net.ipv4.ip_local_port_range 表示向外连接的端口范围,默认为32768~61000
  • net.ipv4.tcp_max_tw_buckets 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并苏处警告信息,默认180000
1
2
3
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1

执行 /sbin/sysctl -p生效

sqoop导出

sqoop导出是指从大数据集群中(hdfs/hive/hbase)中向关系型数据库传输数据,使用export

1
2
3
4
5
6
7
8
sqoop export \
--connect jdbc:mysql://localhost:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t"

sqoop导入

sqoop导入是指从关系型数据库向大数据集群中(hdfs/hive/hbase)中传输数据,使用import

可以使用多种方式来进行导入

全部导入到hdfs

可以将整张表数据进行导入到hdfs中

1
2
3
4
5
6
7
8
9
sqoop import \
--connect jdbc:mysql://localhost:3306/company \
--username root \
--password 123456 \
--table staff \
--target-dir /user/sqoop/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

将staff表中的数据全部导入到hdfs中/user/sqoop/company目录下,字段之间使用\t分隔

阅读全文 »

sqoop简介

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql等)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

sqoop原理

将导入或导出命令翻译成mapreduce程序来实现,在翻译出的mapreduce中主要是对inputformat和outputformat进行定制