为了让各位伙伴能够尽快上手体验,所选案例就以上一篇中的“机动车缉查布控即席查询与分析”为例,上篇我们已经比较详尽的分析了用户需求,没好好听课的小伙伴赶紧把“大数据即席查询与分析(中篇)”再好好复习一下,这里不再赘述。需要特别强调是,为了尽量降低大家搭建Demo的门槛,主要是为了让大家充分了解到Demo搭建的过程;另外,请大家务必按照如下步骤严格执行,任何一个参数的问题都可能引起后续的问题。
一、原材料准备
硬件环境:大数据环境搭建,强烈建议使用物理机
如果实在没有条件,每个虚拟机配置不要低于4核,32G,否则严重影响效果。
本次Demo采用如下配置服务器3台 硬件配置项 |
详细信息 |
机器型号 |
IBM 3650 M3(某宝上2000大洋搞定) |
CPU |
2C*6核 |
内存 |
DDR3 64GB |
数据盘 |
SAS盘 300G 6块裸盘挂载 |
Raid 配置 |
RAID 0 |
网卡 |
千兆网卡 |
交换机 |
TPLINK千兆普通交换机 |
软件配置项 |
详细信息 |
操作系统 |
CentOS 6.6 |
hadoop版本 |
HDP 2.5 |
延云ydb版本 |
YDB 1.1.6 |
测试数据 |
详细信息 |
数据条数 |
1亿条 |
原始文本数据大小 |
5G |
二、操作系统安装与配置
推荐安装Centos 6.5或6.6的操作系统(不要使用centos7哦),选择安装英文语言环境,安装桌面版(不要安装最简版)。
1. 配置机器名及hosts域名解析
规划三台机器为ydbmaster,ydbslave01, ydbslave02
在每台机器上按照相应名字修改:
hostname ydbmaster
vi /etc/sysconfig/network
vi /etc/hosts
切记hosts文件中 不要将localhost给注释掉,并且配置完毕后,执行下 hostname -f 看下 是否能识别出域名
2. 在每台机器上修改Ulimit配置
操作系统默认只能打开1024个文件,打开的文件超过这个数发现程序会有“too many open files”的错误,1024对于大数据系统来说显然是不够的,如果不设置,基本上整个大数据系统是“不可用的”,根本不能用于生产环境。
配置方法如下:
echo "* soft nofile 128000" >>/etc/security/limits.conf
echo "* hard nofile 128000" >>/etc/security/limits.conf
echo "* soft nproc 128000" >>/etc/security/limits.conf
echo "* hard nproc 128000" >>/etc/security/limits.conf
cat / etc /security/limits.conf
sed -i 's/1024/unlimited/'/etc/security/limits.d/90-nproc.conf
cat /etc/security/limits.d/90-nproc.conf
ulimit -SHn 128000
ulimit -SHu 128000
3. 在每台机器上一定要禁用Swap
在10~20年前一台服务器的内存非常有限,64m~128m,所以通过Swap可以将磁盘的一部分空间用于内存。但是现今我们的服务器内存普遍达到了64G以上,内存已经不再那么稀缺,但是内存的读取速度与磁盘的读取相差倍数太大,如果我们某段程序使用的内存映射到了磁盘上,将会对程序的性能造成非常严重的影响,甚至导致整个服务的瘫痪。
禁用方法如下,让操作系统尽量不使用swap:
echo "vm.swappiness=1" >>/etc/sysctl.conf
sysctl -p
sysctl -a|grep swappiness
4. 在每台机器上修改网络配置优化
echo " net.core.somaxconn = 32768 " >>/etc/sysctl.conf
sysctl –p
sysctl -a|grep somaxconn
5. 在每台机器上配置SSH无密码登录
安装 Hadoop与Ambari均需要无密码登录
设置方法请参考如下命令:
ssh-keygen
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id root@ydbslave01
ssh-copy-id root@ydbslave02
…..
6. 在每台机器上关闭防火墙
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
chkconfig iptables off
/etc/init.d/iptables stop
service iptables stop
iptables –F
7. 在每台机器上修改setenforce与Umask配置
setenforce设置:
setenforce 0
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/refresh-packagekit.conf
cat /etc/yum/pluginconf.d/refresh-packagekit.conf
Umask设置:
umask 0022
echo umask 0022 >>/etc/profile
8. 在每台机器上修改检查/proc/sys/vm/overcommit_memory的配置值
如果为2,建议修改为0,否则有可能会出现,明明机器可用物理内存很多,但jvm确申请不了内存的情况。
9. 在每台机器上修改语言环境配置
先修改机器的语言环境
#vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
然后配置环境变量为utf8
echo "exportLANG="en_US.UTF-8 " >> ~/.bashrc
source ~/.bashrc
export|grep LANG
10. 配置时间同步
集群时间必须同步,不然会有严重问题
参考资料如下:http://www.linuxidc.com/Linux/2009-02/18313.htm
11. 环境变量
请大家千万不要在公共的环境变量配置Hadoop,Hive,Spark等环境变量,极可能产生相互冲突。
12. 请检查盘符,不要含有中文
尤其是ambari,有些时候,我们使用U盘或移动硬盘复制软件,但是这个移动硬盘挂载点是中文路径,这样在安装ambar