GBASE 8A 管理员手册(3)数据加载

加载功能

在V8. 6.1. 1版本GBase 8a中,加载功能直接集成在GBase 8a内部,不需 要额外部署外部加载工具。
与V8. 5.1. 2版本单机加载工具相比,新版加载工具具备如下一些特性和优 点:
1) 提供面向用户的SQL接口,更符合用户的使用习惯;
2) 支持从通用数据服务器拉取数据,支持ftp/http/hdfs/sftp等多种协 议;
3) 支持普通文本、gzip压缩、snappy压缩、Izo压缩等多种格式数据文 件;
4) 支持普通文本与定长文本的加载(format 3和format 4),并与 V8.5.1.2版本格式兼容;
5) 支持错误数据溯源功能,可以准确定位错误数据在源文件中的位置;

语法格式

语法:
LOAD DATA INFILE ' file_list' INTO TABLE tbl_name [options]
tbl_name:
[database_name. ] table_name
options:
[DATA_FORMAT number [HAVING LINES SEPARATOR]]
[NULL_VALUE ' string ]
[FIELDS
[TERMINATED BY ' string ]
[ENCLOSED BY ' string ]
[PRESERVE BLANKS]
[AUTOFILL]
[{LENGTH|DEFINER} ' string ]
[TABLE_FIELDS ' string ]
]
[LINES
[TERMINATED BY ' string']
]
[MAX_BAD_RECORDS number]
[DATETIME FORMAT format]
[DATE FORMAT format]
[TIMESTAMP FORMAT format]
[TIME FORMAT format]
[TRACE number]
[TRACE_PATH ' string ]
[PARALLEL number]
[SKIP_BAD_FILE number]
[SET col_name = value[,...]]
参数说明:
FILE_LIST:待加载文件列表。支持以本地文件方式和URL方式指定数据 文件路径,以英文逗号(',')作为多个文件的分隔符。
scheme://[user:password@]host[:port]/path, 
scheme://[user:password@]host[:port]/path
同时文件名、目录部分均支持使用通配符,具体如下表所示。默认对路径 及文件进行匹配。当关闭目录、文件通配功能时,对于SQL中出现的通配符按 7.2节的使用约束当做特殊字符处理。
通配符	含义	说明
*	匹配0或多个字符	a*b
a与b之间可以有任意长度的任意字符, 也可以一个也没有,如aabcb, axyzb, a012b, ab。
?	匹配任意一个字符	a?b
a与b之间必须也只能有一个字符,可 以是任意字符,如aab, abb, acb, a0b。
[list]	匹配list中的任意 单一字符	a[xyz]b
a与b之间必须也只能有一个字符,但 只能是X或y或z,如:axb, ayb, azb。
[!list]	匹配除list中的 任意单一字符	a[!0-9]b
a与b之间必须也只能有一个字符,但 不能是阿拉伯数字,如axb, aab, a-b。
[c1-c2]	匹配c1-c2中的任 意单一字符如: [0-9]	[a-z]	a[0-9]b
0与9之间必须也只能有一个字符如 a0b, a1b... a9b。
{string1,str ing2,...}(此 功能不支持, {}作为普通字 符处理)	匹配sring1或 string2	(或更多)其
一字符串,string也 可以是通配符	a{abc, xyz, 123} b
a与b之间只能是abc或xyz或123这 三个字符串之一。(匹配三次,得到三 次的结果,即最多可以有三个重复的结 果)
{1..3}.txt	这种情况就只可能是
1.txt 或 2. txt 或 3. txt a{1,2}b{3, 4}这样会依次匹配输出 结果是 a1b3 a1b4 a2b3 a2b4

例如:
http://10. 10.1.1/data/??????/*.tbl
OPTIONS:
DATA_FORMAT:用来指定使用哪种方式解析数据文件并加载。指定为3,表 示使用文本方式加载。指定为4表示使用定长方式加载。如果某列数据可能 包含了行分隔符,则需要在SQL中输入'HAVING LINES SEPARATOR,子句。指定 为5,表示使用文本文件宽松模式,即数据源文件为包围符中含有换行符和包 围符文本文件,或多列少列文本文件。
NULL_VALUE:用于指定空值字符,支持不超过15个任意字符的组合,参 数值以引号包围,指定方式与字段包围符一样。
FIELDS 子段:
TERMINATED BY:用于指定字段分隔符,支持不超过15个任意字符的组合, 支持任意字符,参数值以单引号包围,仅当使用文本方式加载时有效。可使用 字符本身(仅限可见字符,如:"丨”)、C风格转义字符仗口: "\a")、\xhh十六进 制仗口: "\xFF")或X''十六进制(如:"x' 09'")四种方式指定。例如:'|',表 示用|作为分隔字符。
ENCLOSED BY:用于指定字段包围符,支持任意单字符,参数值以单引号 包围,仅当使用文本方式加载时有效。可使用字符本身(仅限可见字符,如:"|")、 C风格转义字符(如:"\a")、\xhh十六进制(如:"\xFF")或x''十六进制(如: "x'09'")四种方式指定。
PRESERVE BLANKS :用于设定是否保留字段内容两端的空格,默认不保留 空格。
AUTOFILL:用于设定是否启用缺失列自动补齐功能,启用该参数后,对缺 失分割符的字段数据按照default值或者NULL值进行加载,默认不自动补齐。
LENGTH|DEFINER:在使用定长模式加载时,用于设定字段长度的参数。定 长格式数据导入时,设置每个字段的长度,有多个字段时,用逗号分隔。
TABLE_FIELDS:用于指定列加载,对于日期时间类型可以设置每一列的格 式。
SET:指定列值加载,加载系统将待加载文件和指定加载列值加载到集群 系统的表中。输入的类型应为常量,包括字符串、整数值、浮点值和NULL。
1、	支持指定所有列类型加载值;
2、	指定列值为常量值(包括NULL),包括字符串(单引号包围)、十进制 数值(1。)、浮点值(1。.9)、NULL、16进制表示的字符串(0xbac3)、 科学计数法(10e4);
3、	支持多列同时指定加载值。最多可SET表列数-1 ,如果设置的列数与 表定义中的列数一致将报错:Specified all fields .
4、	支持 format=3、format=4 以及 format=5;
使用限制说明:
1、	输入除常量值外的其他值,如列名、表达式等会报错,报错信息为 Column 'addr' should be const value;
2、	指定的列不能存在于TABLE_FIELDS中,否则报错;
3、	如果没有指定AUTOFILL,指定值的列数+数据中列数之和必须等于表 定义或者TABLE_FIELDS (若指定了 TABLE_FIELDS)中的列数,否则会 产生错误数据;如果指定了 AUTOFILL,则可以小于表定义的列数,缺 少的列会自动补全。如果TABLE_FIELDS列数+SET列数小于表定义的 列数,能够正常加载,没有涉及的列按照default值补齐;
4、	同一列在SQL中不能重复指定,否则报错。
LINES子段:
TERMINATED BY:行分隔符,支持任意单字符,参数值以引号包围。指定 方式与包围符一样。默认行分隔符为'\n'。
MAX_BAD_RECORDS :在每次加载的任务中,设定错误数据行数的上限。当 本次加载任务产生的错误数据行数大于max_bad_records设定的值时,加载任 务回滚,加载工具报错退出。此参数取值范围为:[。,4294967295] o此参数为 可选参数,默认不限制错误条数。。表示只要有错误数据就报错退出。
DATE FORMAT:用来指定date列类型的默认格式,默认为'%Y-%m-%d'。
DATETIME FORMAT :用来指定datetime列的默认格式,默认为 '%Y-%m-%d %H:%i:%s'。
TIMESTAMP FORMAT :用来指定timestamp列的默认格式,默认为 '%Y-%m-%d %H:%i:%s'。
TIME FORMAT:用来指定time列的默认格式,默认为’%H:%i:%s'。
TRACE:用来指示本次加载是否保存错误数据溯源。如果指定为0,则不溯 源。如果指定为1,则进行溯源。默认值为1。
溯源信息包括:错误数据所在的文件,所在行号。
TRACE_PATH:用来指定本次加载过程中产生的错误数据和日志存放路径。 缺省情况下,错误数据和溯源日志记录在加载机节点的 /opt/gnode/log/gbase/loader_logs下。新版支持加载错误数据和溯源信息日 志直接上传至FTP/SFTP服务器。可以由参数trace_path指定上传的路径,如: trace_path 'ftp://gbase:gbase@192.168.6.15/loadlogs'。注意上传 ftp 功 能需要在gbase_loader_logs_collect=0的情况下起效。
PARALLEL:用来控制加载并行度,取值范围[0,1024]。默认值为0,表示 并行度取值是线程池最大可用线程数。
SKIP_BAD_FILE:用来指定本次加载任务中是否忽略不存在或没有读取权 限的数据文件继续加载。如果指定为0,则加载报错终止。如果指定为1,则忽 略异常文件继续加载。默认值为0。 

使用约束

2.	当使用文本加载模式时,NULL—VALUE的默认值为’\N'。
3.	当使用文本加载方式时,行分隔符默认为’\n'。
4.	当使用文本加载方式时,如果某列数据可能包含了行分隔符,则需要 在SQL中输入'HAVING LINES SEPARATOR'子句,同时需要输入入'ENCLOSED BY' 指定字段包围符
5.	当在加载文件列表的URL中的用户名(user)、密码(password)、主 机名(host)或文件路径(path)中包含下表所列的特殊字符时,对特殊字符 需要用百分号编码代替。
URL: scheme://[user:password@]host[:port]/path
百分号编码二% +特殊字符的两字符十六进制值
特殊字符	百分号编码	说明
%	%25		要求百分号编码
	%3A		标准 gen-delims 要求百分号编码
/	%2F	
?	%3F	
#
[	%23
%5B	
]	%5D	
@	%40	
	%21		标准 sub-delims 建议百分号编码
$	%24	
	%26	
	%27	
(	%28	
)	%29	
以下斜体字内容引用自标准RFC-3986,虽然可能部分保留字符也不会引起 URI解析问题,但仍建议对所有非保留字符外的字符均使用百分号编码。更详 尽的URI编码规则请参阅标准RFC-3986文档。

pct-encoded = "%” HEXDIG HEXDIG
Reserved Characters
reserved = gen-delims / sub-delims
gen-delims	=	": "	/	"/"	/	"?"	/	/	"["	/	"”	/	”矿
sub-delims	=	” "	/	"$"	/	"&'	/	””	/	^(	/	""
/	*	/	"+"	/	" "	/	";"	/	"="
Unreserved Characters
unreserved = ALPHA / DIGIT / "-" / " " / "_" / ”~
示例:FTP用户名为test,密码为abc/def
错误:gbase> load data infile 'ftp://test:abc/def@192.168.0.1/data/*.tbl' into table t data_format 3;
正确:gbase> load data infile 'ftp://test:abc%2Fdef@192.168.0.1/data/*.tbl' into table t data_format 3;
6,当在加载文件列表的URL中的用户名(user)、密码(password)、主 机名(host)或文件路径(path)中包含下表所列的特殊字符时,对特殊字符 需要用转义字符代替。
特殊字符	转义字符	说明
\	\\	要求用转义字符
	\'	要求用转义字符
注:如果上表所列特殊字符已用百分号编码,则无需再用转义字符代替。

示例:FTP用户名为test,密码为abc\def
错误:gbase> load data infile 'ftp://test:abc\def@192.168.0.1/data/*.tbl' into table t data_format 3;
正确:gbase> load data infile 'ftp://test:abc\\def@192.168.0.1/data/*.tbl' into table t data_format 3;
7.宽松模式处理规则与文本方式加载处理规则不一致的有:
/ 行分隔符、列分隔符、包围符仅支持单字符(单字节),指定多字 符报错;
/数据中有空值时,入库数据为null,不是default值,设定default 值对加载结果没有影响;
/支持超宽列自动截断;
/数据文件的包围符、列分隔符与设置的不一致,如果第一列为字 符型,数据截断入库,后面的字段都为空值;如果第一列为数值 型,则都为错误数据。
/ 指定auto—fill—column,在少列的时候自动补齐,无论列定义是 否有default值,都会用null值补齐缺失列,而不是default 值。

使用示例

和默认列分隔符。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a. tbl' INTO TABLE test.t DATA_FORMAT 3;
2.	以文本方式加载位于FTP服务器上的a.tbl文件,使用默认行分隔符, 并指定为列分隔符。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a. tbl' INTO TABLE test.t DATA_FORMAT 3 FIELDS TERMINATED BY '|';
3.	以文本方式加载位于FTP服务器上data目录下的所有扩展名为tbl 文件,使用默认行分隔符和默认列分隔符。
LOAD DATA INFILE '	ftp://127. 0.0. 1/data/*.tbl' INTO TABLE test. t
DATA_FORMAT 3;
4.	以文本方式加载位于FTP服务器上的a.tbl文件,字段内容中有默认 行分隔符'\n',指定字段包围符。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t
DATA_FORMAT 3 HAVING LINES SEPARATOR FIELDS ENCLOSED BY '"';
5.	以文本方式加载位于FTP服务器上的a.tbl文件,指定空值'\N',保 留字段两端空格,并自动补齐缺失列。
LOAD DATA INFILE 'ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t DATA_FORMAT 3 NULL_VALUE '\\N' FIELDS PRESERVE BLANKS AUTOFILL;
6.	以文本方式加载位于FTP服务器上的a.tbl文件,指定行分隔符’|', 使用默认列分隔符。
LOAD DATA INFILE 'ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t
DATA_FORMAT 3 LINES TERMINATED BY
7.	以定长方式加载位于HTTP服务器上的b.tbl文件,使用默认行分隔符。
LOAD DATA INFILE ' http://127. 0.0. 1/data/b.tbl' INTO TABLE test.t
DATA_FORMAT 4 FIELDS LENGTH '20,11,10' TABLE_FIELDS
'name, mphone,birthday date ""%m-%d-%Y"';
8.	以文本方式加载位于HTTP服务器上的b.tbl.gz压缩文件,使用默认 行分隔符和默认列分隔符。
LOAD DATA INFILE ' ftp://127.0. 0.1/data/b.tbl.gz' INTO TABLE test. t DATA_FORMAT 3;
9.	以文本方式加载位于HDFS服务器上的a.tbl.snappy压缩文件,使用 默认行分隔符和默认列分隔符。
LOAD DATA INFILE
'hdp://gbase:gbase@127.0.0.1: 50070/data/a.tbl. snappy' INTO TABLE test.t DATA_FORMAT 3;
10.	以文本方式加载位于FTP服务器上的a.tbl文件,指定错误数据溯源, 并指定错误数据和日志存放路径。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t
DATA_FORMAT 3 TRACE 1 TRACE_PATH '/home/gbase/loader_logs'
11.	以文本方式加载位于FTP服务器上的a.tbl文件,指定默认日期时间 格式。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t
DATA_FORMAT 3 DATETIME FORMAT '%H:%i:%s %Y-%m-%d';
12.	以文本方式加载位于FTP服务器上的a.tbl文件,指定最大允许错误 条数。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a. tbl' INTO TABLE test.t DATA_FORMAT 3 MAX_BAD_RECORDS 0
13.	以文本方式加载位于FTP服务器上的test.tbl.lzo压缩文件,使用默 认行分隔符和默认列分隔符。
LOAD DATA INFILE ' ftp://127.0.0.1/data/test.tbl.lzo' INTO TABLE test.t DATA_FORMAT 3;
14.	以文本方式加载位于SFTP服务器上的a.tbl文件,使用默认行分隔符 和默认列分隔符,用sftp://user:password@host/path方式指定SFTP服务器的 用户名和密码。
LOAD DATA INFILE ' sftp://gbase:gbase@127. 0.0. 1/data/a.tbl' INTO TABLE test.t DATA_FORMAT 3;
15.	以文本方式加载位于FTP服务器上的a.tbl文件,指定忽略异常文件。
LOAD DATA INFILE ' ftp://127.0.0.1/data/a.tbl' INTO TABLE test.t DATA_FORMAT 3 SKIP_BAD_FILE 1;
16.	以文本方式加载位于FTP服务器上的a.tbl文件,使用默认行分隔符 和默认列分隔符,用ftp://user:password@host/path方式指定FTP服务器的用 户名和密码。
LOAD DATA INFILE ' ftp://gbase:gbase@127.0.0.1/data/a.tbl' INTO
TABLE test.t DATA_FORMAT 3;
17.	以文本方式加载位于HTTP服务器上的a.tbl文件,使用默认行分隔符 和默认列分隔符,用http://user: password@host/path方式指定HTTP服务器的 用户名和密码。
LOAD DATA INFILE ' http: //gbase:gbase@127. 0.0. 1/data/a.tbl' INTO TABLE test.t DATA_FORMAT 3;

数据服务器配置

V8.6.1.1版本加载功能支持从通用数据服务器拉取数据,支持 ftp/http/hdfs等多种协议。
以下简要描述 Red Hat Enterprise Linux 6.2 平台上 FTP、HTTP 和 HDFS 三种通用文件服务器的配置方法。

FTP服务器配置

使用vsftp搭建FTP服务器

#	rpm -qa vsftpd
vsftpd-2. 2. 2-6. el6_0. 1. x86_64
2.	安装 vsftpd
#	rpm -ivh vsftpd-2.2.2-6.el6_0.1.x86_64.rpm
3.	修改FTP服务器默认配置
#	vim /etc/vsftpd/vsftpd.conf
#表示允许匿名用户登录(默认为YES).
anonymous_enable=YES
#表示允许本地用户登录(默认为YES).
local_enable=YES
#表示幵放对本地用户的写权限(默认YES,如仅用作加载文件服务器,可改为NO). write_enable=NO
#设置本地用户的文件生成掩码(默认对本地用户的文件生成掩码是077,可改为022) local_umask=022
#允许匿名FTP用户上载义件(默认为NO).
#anon_upload_enable=YES
#允许匿名FTP用户创建目录(默认为NO).
#anon_mkdir_write_enable=YES
#启用FTP数据端口的连接请求(默认为YES).
connect_from_port_20=YES
#使用PAM认证的配置义件名,义件位于/etc/pam.d目录下
pam_service_name=vsftpd
#是否使用userlist文件控制访问FTP服务器
userlist_enable=YES
#设置禁止访问的文件或目录
# deny_file= {*. mp 3,*. mo v,. private}
#设置隐藏的义件或目录
#hide_file= {*.mp3,.hidden,hide*,h?}
#设置FTP被动模式幵放端□范围
pasv_min_port=20001
pasv_max_port=21000
#设置非匿名登录用户的主目录
#local_root=/var/ftp/pub
更多的配置可查看vsftpd.conf文档
#	man vsftpd.conf
4.	配置允许或禁止访问FTP服务器的用户列表(可跳过)
#	vim /etc/vsftpd/user_list
当/etc/vsftpd/vsftpd.conf 中配置如下时,禁止/etc/vsftpd/user_list 中的所有用户访问FTP服务器
userlist_enable=YES
userlist_deny=YES (缺省为 YES)
当/etc/vsftpd/vsftpd.conf 中配置如下时,允许/etc/vsftpd/user_list 中的所有用户访问FTP服务器
userlist_enable=YES
userlist_deny=NO
5.	配置禁止访问FTP服务器的用户列表(可跳过)
#	vim /etc/vsftpd/ftpusers
6.	关闭SELINUX功能或更改其配置(两种方式二选一即可)
1)关闭SELINUX功能
#	vim /etc/selinux/config
#	This file controls the state of SELinux on the system.
#	SELINUX= can take one of these three values:
#	enforcing - SELinux security policy is enforced.
#	permissive - SELinux prints warnings instead of enforcing.
#	disabled - No SELinux policy is loaded.
SELINUX=disable
#	SELINUXTYPE= can take one of these two values:
#	targeted - Targeted processes are protected,
#	mls - Multi Level Security protection.
SELINUXTYPE=targeted 
重启或者执行
# setenforce 0
2)更改SELINUX配置
# setsebool ftp_home_dir 1
注:当用浏览器访问FTP服务器遇到“ 500 OOPS: cannot change directory:/home/... ” 时,可能为此问题。
7.	关闭或配置防火墙
1)关闭防火墙
停止防火墙服务
# service iptables stop
iptables:清除防火墙规则:	[确定]
iptables:将链设置为政策 ACCEPT: filter	[确定]
iptables:正在卸载模块:	[确定]

查看防火墙是否在开机时自动启动
# chkconfig 一一list iptables
iptables	0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
禁止防火墙在开机时自动启动
#	chkconfig	iptables	off
或
#	chkconfig	iptables	off	一level	2345
设置后防火墙在开机时自动启动状态
# chkconfig 一一list iptables
iptables	0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭
2)配置防火墙
设置默认规则
#	iptables -A INPUT -j DROP (注:添加此条规则会阻止未处理的传入数据包,如在此规
则之前未添加允许规则将会阻止远程连接)
#	iptables -A FORWARD -j ACCEPT
开放FTP端口
# iptables -I INPUT -p tcp --dport 21 -j ACCEPT # iptables -I OUTPUT -p tcp --sport 21 -j ACCEPT # iptables -I INPUT -p tcp --dport 20 -j ACCEPT # iptables -I OUTPUT -p tcp --sport 20 -j ACCEPT # iptables -I INPUT -p tcp --dport 20001:21000 -j ACCEPT # iptables -I OUTPUT -p tcp --sport 20001:21000 -j ACCEPT
保存防火墙设置
# iptables-save > /etc/sysconfig/iptables
8.启动vsftpd服务并设置为开机启动项
# service vsftpd start
为 vsftpd 启动 vsftpd:
# chkconfig vsftpd on	[确定]

9.复制文件到FTP目录
1)	如未设置 local_root=/var/ftp/pub 时,复制文件到/home/xxxx	(用
户的home目录)
2)	如已设置 local_root=/var/ftp/pub 时,复制文件到/var/ftp/pub
3)	如已设置anonymous_enable=YES时,复制文件到/var/ftp或 /var/ftp/pub (匿名登录的主目录) 

HTTP服务器配置

使用apache搭建HTTP文件服务器

#	rpm -ivh
apr-1. 3. 9-3. el6_1. 2. x86_64. rpm
apr-util-1. 3. 9-3. el6_0. 1. x86_64. rpm apr-util-ldap-1. 3. 9-3. el6_0. 1. x86_64. rpm
#	rpm -ivh
httpd-2. 2. 15-15. el6. x86_64. rpm
httpd-manual-2. 2. 15-15. el6. noarch. rpm httpd-tools-2. 2. 15-15. el6. x86_64. rpm
2、	修改HTTP服务器默认配置
#	vim /etc/httpd/conf/httpd. conf
修改服务器名称
#	If your host doesn't have a registered DNS name, enter its IP address here.
#	You will have to access it by its address anyway, and this will make
#	redirections work in a sensible way.
#ServerName www. example. com:80
ServerName 192. 168. 10. 114:80
修改以下位置,将其中的"/var/www/html"修改为"/var/www/files” 也可直接使用"/var/www/html"作为文件存储位置,跳过这一步
#	DocumentRoot: The directory out of which you will serve your
#	documents. By default, all requests are taken from this directory, but
#	symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "/var/www/html"
DocumentRoot "/var/www/files"
#
#	This should be changed to whatever you set DocumentRoot to.
#
#<Directory 〃/var/www/html〃>
〈Directory 〃/var/www/files〃>
3、	编辑默认欢迎页配置
#	vim /etc/httpd/conf. d/welcome. conf
注释掉以下几行(默认如果html下没有默认页面将显示403错误页面)
#<LocationMatch ""/+$〃〉
#	Options -Indexes
#	ErrorDocument 403 /error/noindex. html
#</LocationMatch>
4、	关闭或配置防火墙
1)关闭防火墙
停止防火墙服务
# service iptables stop	
iptables :清除防火墙规则:	[确定]
iptables :将链设置为政策 ACCEPT: filter	[确定]
iptables :正在卸载模块:	[确定]

查看防火墙是否在开机时自动启动
#	chkconfig 一一list iptables
Iptables	0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
禁止防火墙在开机时自动启动
#	chkconfig iptables off
或
#	chkconfig iptables off 一level 2345
设置后防火墙在开机时自动启动状态
#	chkconfig 一一list iptables
Iptables	0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭
2)配置防火墙
设置默认规则
#	iptables -A INPUT -j DROP
#	iptables -A FORWARD -j ACCEPT
开放HTTP端口
#	iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#	iptables -I OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
保存防火墙设置
#	iptables-save > /etc/sysconfig/iptables
5、	启动httpd服务并设置为开机启动项
#	service httpd start
正在启动httpd:	[确定]
#	chkconfig httpd on
6、	将数据文件复制到/var/www/files (或/var/www/html)下
7、用浏览器访问http://192.168.10.114即可看到文件列表(前面配置的 ServerName 192.168.10. 114:80)

HDFS服务器配置

使用Apache Hadoop 2.6. 0搭建HDFS服务器

操作系统用户:gbase
集群各节点间的ssh互信已建立。
集群已配置C3工具。
开源产品版本:
Apache Hadoop 2.6. 0
JVM 1.6或1.7版本
集群节点功能规划示例:
IP	主机名	功能
192.168.10.114	ch-10-114	NameNode, DataNode
192.168.10.115	ch-10-115	DataNode
192.168.10.116	ch-10-116	DataNode

2、主机名配置
各节点的主机名需要正确配置,以192.168. 10. 114节点示例如下,其他节 点直接拷贝该配置即可。
127. 0. 0. 1 localhost localhost. localdomain localhost4 localhost4. localdomain4
::1	localhost localhost. localdomain localhost6 localhost6. localdomain6
192. 168. 10. 114 ch-10-114
192. 168. 10. 115 ch-10-115
192. 168. 10. 116 ch-10-116
注意:第一行如果配置成如下形式是错误的,安装完成后会出现Hadoop 的Datanode无法连接Namenode的情况。
127. 0. 0. 1	ch-10-114	localhost localhost. localdomain localhost4
localhost4.localdomain4
如果没有为GBase 8a配置DNS服务器,为保证GBase 8a可以解析Hadoop 的Namenode和Datanode的主机名,需要配置/etc/hosts文件,在其中加入如 上Hadoop的Namenode和Datanode的IP地址和主机名映射。如未配置 /etc/hosts文件,执行加载HDFS服务器上文件时,会报类似 “Couldn't resolve host name” 字样的错误。
检查方法:
1)	通过jps查看,发现DataNode已经启动,但是检查DataNode上的日志,
发现DataNode在不断尝试连接NameNode节点的9000端口(HDFS的 RPC端匚I )。
2)	在NameNode节点执行netstat -an,看到如下信息:
$ netstat -an | grep 9000
tcp 0	0 127. 0. 0. 1:9000	0.0.0.0:*	LISTEN
错误原因:TCP监听的IP是127.0.0.1,导致只有本机能够连接到9000端口。 原因是NameNode的/etc/hosts文件配置错误。
解决办法:去掉第一行的红色字体(ch-10-114),或者将第一行内容后置 均可。
192. 168. 10. 114 ch-10-114
192. 168. 10. 115 ch-10-115
192. 168. 10. 116 ch-10-116
127. 0. 0. 1 localhost localhost. localdomain localhost4 localhost4. localdomain4
::1	localhost localhost. localdomain localhost6 localhost6. localdomain6
重启HDFS,再次用netstat -an | grep 9000查看,端口和IP正确。
$ netstat -an | grep 9000
tcp 0	0 192. 168. 10. 114:9000	0. 0. 0. 0:*	LISTEN
3、目录规划 
目录	用途
/home/gbase/bin	放置Hadoop生态系统,包括Hadoop等
/home/gbase/hdfs	放置HDFS文件,包括tmp、name、data
添加环境变量${HADOOP_HOME}

$ echo “export HADOOP_HOME=/home/gbase/bin/Hadoop-2. 6. 0" >> ~/. bashrc
$.	~/. bashrc
注:下文中的${HADOOP_HOME}指/home/gbase/bin/Hadoop-2.6.0
4、准备 Hadoop 2. 6.0
把 hadoop-2.6. O.tar.gz 解压到各节点的/home/gbase/bin。
$ tar xfz hadoop-2. 6. 0. tar. gz -C /home/gbase/bin
5、	配置 hadoop-env.sh
文件路径:${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
$ cd ${HADOOP_HOME}
$ vi etc/hadoop/hadoop-env. sh
Name node和Data node均按如下配置。
把 export JAVA_HOME=$JAVA_HOME 修改为:
export JAVA_HOME=/usr/lib/jvm/jre-1. 6.0-openjdk.x86_64
把 export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}修改为:
export HADOOP_CONF_DIR=/home/gbase/bin/hadoop-2.6.O/etc/hadoop
6、	配置 core-site.xml 文件
文件路径:${HADOOP_HOME}/etc/hadoop/core-site. xml
$ cd ${HADOOP_HOME}
$ vi etc/hadoop/core-site. xml
Name node和Data node均按如下配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://ch-10-114:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/gbase/hdfs/tmp</value>
</property>
</configuration>
7、配置 hdfs-site.xml
文件路径:${HADOOP_HOME}/etc/hadoop/hdfs-site. xml
$ cd ${HADOOP_HOME}
$ vi etc/hadoop/hdfs-site.xml
Name node 配置
<configuration>
<property>
<name>dfs. replication</name>
<value>2</value>
</property> <property>
<name>dfs. name. dir</name>
<value>file:/home/gbase/hdfs/name</value> <description>name node dir </description> </property>
<property>
<name>dfs.permissions</name> <value>false</value> </property>
</configuration>
Data Node 配置
<configuration>
<property>
<name>dfs. data. dir</name>
<value>file:/home/gbase/hdfs/data</value>
<description>data node dir</description>
</property>
</configuration>
8、配置 Masters 和 Slaves
文件路径: ${HADOOP_HOME} /etc/hadoop/masters ${HADOOP_HOME}/etc/hadoop/slaves 只需要在NameNode节点配置即可。
$ cd ${HADOOP_HOME}
$ vi etc/hadoop/masters
${HADOOP_HOME} /etc/hadoop/masters 文件内容
ch-10-114
$ cd ${HADOOP_HOME}
$ vi etc/hadoop/slaves
${HADOOP_HOME}/etc/hadoop/slaves 文件内容
ch-10-114
ch-10-115
ch-10-116
9、格式化 NameNode
NameNode的格式化需要在启动HDFS之前进行。
$ cexec rm -fr /home/gbase/hdfs/*
$ cd ${HADOOP_HOME}
$ bin/hdfs namenode -format
10、	启动 HDFS
$ cd ${HADOOP_HOME}
$ sbin/start-dfs.sh
启动完毕后,通过jps检查各节点的进程,如下即为正确启动了。
$ cexec jps
	192. 168. 10.114	
31318 SecondaryNameNode
31133 NameNode
31554 Jps
	192. 168. 10.115	
10835 DataNode
11000 Jps
	192. 168. 10.116	
10145 DataNode
10317 Jps
11、	停止 HDFS
$ cd ${HADOOP_HOME}
$ sbin/stop-dfs.sh

SFTP服务器配置

SFTP服务无需布署额外的软件包,开启sshd服务即可。

#	service sshd status
openssh-daemon (pid 2243) is running...
2.	默认配置的目录访问。使用默认配置时,sshd不限制用户的目录访问。用 户通过sftp登录后,可以在有访问权限的任何目录间跳转。在这种情况下,以 下加载语句的URL中的文件路径为系统的绝对路径:
load data infile
‘sftp://gbase:gbase@192.168. 10.114/opt/data/test.tbl' into table
test.t data_format 3;
3.	修改sshd默认配置。
当并发加载任务数较大时,会出现sftp文件加载失败的情况,此时可按以 下方式修改sshd配置文件。
编辑/etc/ssh/sshd_config 文件
# vi /etc/ssh/sshd_config
按以下加粗字体内容修改配置文件
#	MaxStartups的值表示为“start:rate:full”,默认值为10:30:100,当未认证连接
数达到start(10)时,新的连接尝试有"rate/100"	(30%)的可能会被sshd拒绝,
当未认证连接数达到full(100)时,所有新的连接尝试都会被拒绝。
#在最大并发加载任务数为N时MaxStartups的推荐值为(N+10):30:(N*2)
#	MaxStartups 10:30:100
MaxStartups 20:30:100
出于安全原因,希望对sftp登录用户的访问权限进行限制,只能让用户在 自己的home目录下活动。
启用sshd目录锁定功能需要使用到chroot,openssh 4. 8p1以后都支持 chroot,可用以下命令检查当前系统的openssh版本。
#	ssh -V
OpenSSH 5. 3p1, OpenSSL 1.0.0-fips 29 Mar 2010 编辑/etc/ssh/sshd_config 文件
#	vi /etc/ssh/sshd_config
按以下加粗字体内容修改配置文件
#	override default of no subsystems
#修改默认子系统为internal-sftp
#Subsystem	sftp /usr/libexec/openssh/sftp-server
Subsystem	sftp internal-sftp
#	Example of overriding settings on a per-user basis
#	Match User sftp表示以下规则仅匹配于名称为sftp的用户,如果需要匹配 多个用户名,多个用户名间用逗号分隔。也可用Match Group sftp来匹配名称 为sftp的组,同样如果需要匹配多个组,多个组名间用逗号分隔
Match User sftp
#	X11Forwarding no
#	AllowTcpForwarding no
#强制执行进程内sftp server,忽略~/. ssh/rc文件中的命令
ForceCommand internal-sftp
#用chroot将用户的根目录指定到%h,%h代表用户的home目录,可选的参数 还有%u,代表用户名
ChrootDirectory %h
注意:sftp目录的权限配置要点:
1)	由ChrootDirectory指定的目录开始一直向上到系统根目录为止的目录拥 有者都只能是root
2)	由ChrootDirectory指定的目录开始一直向上到系统根目录为止都不可有 群组写入的权限,即权限值不能高于755
4.	配置完成后重启sshd服务
#	service sshd restart
在已配置目录锁定的情况下,以下加载语句的URL中的文件路径为系统的
相对路径,test.tbl 的绝对路径应为/home/gbase/opt/data/test.tbl
load data infile
‘sftp://gbase:gbase@192.168. 10.114/opt/data/test.tbl' into table
test.t data_format 3;
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值