GREENPLUM系列介绍之安装_blockdev --setra 16384 /dev/sd*-程序员宅基地

技术标签: server  greenplum  linux  服务器  64bit  solaris  

与ORACLE安装,尤其是RAC安装相比,GREENPLUM的安装,应该说是极其简单的。大致的过程可以分成四大部分。
1、准备硬件
2、准备操作系统
3、安装GP软件
4、初始化系统。

硬件环境的准备(如果只是构建测试平台,不考虑性能,这部分内容可以忽略)

    首先就是硬件准备。GREENPLUM本身只能运行X86架构的服务器上。因此甭管是普通的PC机还是PC SERVER,甚至是虚拟机都可以运行GREENPLUM。唯一的差别就是效率。
按照官方文档的说法,主要是针对生产环境,构造一个标准的GREENPLUM系统需要三台PC服务器。根据实际使用经验,这些服务器至少应该是XEON以上的CPU,MASTER节点
需要16GB内存,如果使用千兆网卡构建内联环境,至少5块千兆网卡,其中四块千兆网卡用来构建系统的INTERCONNECT,一块用来作为连接系统的PUBLIC网卡。当然如果有条件的话,内联可以用万兆网卡或者IB,效率会更高。MASTER的存储没有什么特殊要求。
    SEGMENT节点需要32G内存。如果使用千兆网卡构建内联环境,至少4块千兆网卡,不需要外联网卡。数据存储可以使用PC SERVER内置硬盘,也可以使用外置存储阵列方式(取决于成本和性能的平衡),总数据量不超过可用存储的70%既可。
    总体而言,与专用设备和系统相比,构建GREENPLUM的生产环境的硬件成本是很低廉的。
  
   
操作系统的准备
   
    支持GREENPLUM运行的操作系统平台主要包括LINUX(REDHAT 5.4 or later/CENTOS 5.4 or later/SUSE 10.2 or later) 32bit/64bit,solaris x86 64bit,以及MAC OS 64bit。这里主要介绍LINUX平台的设置,其它平台大同小异。
    首先在每台PC SERVER上安装LINUX操作系统,然后设置内核参数,这决定了GREENPLUM可以获取多少资源使用。官方文档给出的内核参数配置如下
    编辑/etc/sysctl.conf文件
    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 1
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.sem = 250 64000 100 512
    kernel.shmmax = 500000000
    kernel.shmmni = 4096
    kernel.shmall = 4000000000
    kernel.sem = 250 64000 100 512
    net.ipv4.tcp_tw_recycle=1
    net.ipv4.tcp_max_syn_backlog=4096
    net.core.netdev_max_backlog=10000
    vm.overcommit_memory=2
    net.ipv4.conf.all.arp_filter = 1
    对于练习环境来说,这个配置是没有问题的。但是在生产环境中,整个系统中有大量SEGMENT实例和镜像实例时,这样的配置可能导致无法启动服务。所以,请加大kernel.sem = 250 64000 100 512中最后一位的配置,比如把512改成1024,2048这样的值。另外,可以加大共享内存相关的配置,比如kernel.shmmax和kernel.shmall。
完成编辑之后,以root身份执行命令sysctl -p或者重启系统,使其配置生效。
   
    修改内核参数后,向/etc/security/limits.conf中添加如下配置
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
   
    由于数据仓库属于IO敏感性应用,为了提高系统效率,生产环境中,我们应该在LINUX内核上修改IO调度的算法。以root身份编辑/boot/grub/menu.lst,添加一行
    elevator=deadline,但是不要修改failsafe的定义,重启系统(必须),再以root身份执行命令cat /sys/block/*/queue/scheduler,输出的每行应该含有有[deadline],
    比如noop anticipatory [deadline] cfq
   
    然后应该设置磁盘预读,优化磁盘IO效率。以root身份编辑/etc/rc.d/rc.local,添加类这样的内容blockdev --setra 16384 /dev/sd*,重启系统。使用命令blockdev --getra /dev/sd* 可以验证设置。
   
    接下来配置域名解析,可以定义DNS,也可以在每台服务器上定义/etc/hosts,每块网卡要有一个名字,比如
   
    127.0.0.1      localhost loghost
    10.1.18.138    mdw-ext1    #eth0 on master node. Use IP sensible for LAN
    172.28.0.250   mdw-sp      #iDRAC - Shared Management port on master node
    172.28.4.250   mdw-cm      #eth0 - Shared with management port
    172.28.8.250   mdw-1 mdw   #eth4 on master node
    172.28.12.250  mdw-2       #eth5 on master node
   
    10.1.18.140 smdw-ext1 #eth0 on standby master node. IP sensible for LAN
    172.28.0.251 smdw-sp #iDRAC - Shared Management port on master node
    172.28.4.251 smdw-cm #eth0 - Shared with management port
    172.28.8.251 smdw-1 smdw #eth4 on standby master node
    172.28.12.251 smdw-2 #eth5 on standby master node
   
    172.28.0.1 sdw1-sp #iDRAC - Shared Management port on master node
    172.28.4.1 sdw1-cm #eth0 - Shared with management port
    172.28.8.1 sdw1-1 sdw1 #eth2 on first segment node
    172.28.12.1 sdw1-2 #eth3 on first segment node
   
    172.28.0.2 sdw2-sp #iDRAC - Shared Management port on master node
    172.28.4.2 sdw2-cm #eth0 - Shared with management port
    172.28.8.2 sdw2-1 sdw2 #eth2 on second data node
    172.28.12.2 sdw2-2 #eth3 on second segment node
   
    安装所需要的文件系统。GREENPLUM只能使用文件系统存放数据,不支持裸设备。出于性能考虑,EMC官方建议在LINUX上使用XFS文件系统,SOLARIS上使用ZFS文件系统。如果是练习环境则无所谓,只要相应操作系统可以支持的文件系统即可。对于LINUX来说,SUSE的安装介质上就带有XFS文件系统。REHL 6.0以下/CENTOS 6.0以下版本则需要到相关网站单独下载XFS文件系统安装。
64bit:
    rpm -ivh kmod-xfs-0.4-2.x86_64.rpm
    rpm -ivh xfsprogs-2.9.4-1.el5.centos.x86_64.rpm
   
32bit:
    rpm -ivh kmod-xfs-0.4-2.i686.rpm
    rpm -ivh xfsprogs-2.9.4-1.el5.centos.i386.rpm
   
    先用fdisk -l查看要格式化的设备,然后使用命令mkfs -t xfs /dev/sdc,创建mount点,比如mkdir -p /data/vol1
    为了保证系统重启后,可以自动mount磁盘,以root身份编辑/etc/fstab,添加条目
    [device file] /data xfs logbufs=8,noatime,nodiratime 1 1
    也可以每次系统启动,自己用命令mount /data/vol1进行mount。
   
    为了保证每个服务器的时间同步,可以在master服务器上设置NTP服务。在master上,以root身份编辑/etc/ntp.conf
    # server 0.0.0.0
      server [NTP SERVER IP ADDRESS]
      enable auth monitor
      driftfile /var/lib/ntp/drift/ntp.drift
      logfile /var/log/ntp
      statsdir /var/lib/ntp/ntpstats                    
      filegen peerstats file peerstats type day enable  
      filegen loopstats file loopstats type day enable  
      filegen clockstats file clockstats type day enable
      keys /etc/ntp.keys                                
      trustedkey 0                                      
      requestkey 0 controlkey 0               
      
    确保所有用户可以读取这个文件
    chmod 744 /etc/ntp.conf
    touch /var/lib/ntp/drift/ntp.drift
   
    最终以root用户启动NTP服务
    chkconfig --levels 2345 ntpd on
    /etc/init.d/ntp start
   
    在segment节点上编辑/etc/ntp.conf,添加类似内容
    server 172.28.4.250
    server 172.28.4.251
    同样要确保所有用户可以读取它
    chmod 644 /etc/ntp.conf
    最终以root身份启动ntp服务
    chkconfig --levels 2345 ntpd on
    /etc/init.d/ntp start

    接下来就可以进行GP软件安装了。首先去下载安装包,安装包可以从gpn.greenplum.com上获得,不是很大,大约50MB。这个网站在国内不是很好访问,所以如果哪位有网盘共享出来,我愿意给大家share安装包。最新的软件包是4.1版,这个版本不但修复了GP的一些bug,而且提供了一些重要的新特性,比如,关联更新和删除不再必须使用数据分布键做条件,极大提升了业务类型操作的性能等等。下载的版本和生产环境一模一样,只是软性license,这一点与oracle一样,所以大家可以放心使用,没有限制,只是没 有官方支持和服务罢了。
    完成安装包下载之后,上传安装包到master节点的目录,以root身份用unzip解压,比如unzip greenplum-db-4.1.0-build-3-RHEL5-x86_64.zip,得到一个文件greenplum-db-4.1.0-build-2-RHEL5-x86_64.bin,接下来执行它
./greenplum-db-4.1.0-build-2-RHEL5-x86_64.bin
系统会提示接受协议,提示默认安装目录,是否新建目录等等。所以只需要按提示yes,回车,或者输入安装路径就可以了。这样就完成了软件的安装。以此类推,每个节点
都可以这样安装软件,每个节点再创建一个gpadmin的用户,把软件的安装目录所属从root改成gpadmin,最后建立各个节点间gpadmin用户的ssh等效性就可以了。
但是如果遇到大规模节点部署,这样做效率就非常差。所以,我们利用master装好的软件首先建立各个节点间root用户的ssh等效性。这可以使用gpssh-exkeys这个工具完成。
首先编辑一个文本文件,比如称为all_hosts。在这个文件中,每台主机网卡的名字占一行,比如
mdw1
sdw1-1
sdw1-2
sdw2-1
sdw2-2
sdw3-1
sdw3-1
......
然后,进入安装目录,GP的默认安装目录是/usr/local/greenplum-db(这是安装目录的link),用命令source greenplum_path.sh设置环境变量。这样可以在任意目录使用greenplum的工具和命令。
然后执行 gpssh-exkeys -f all_hosts,系统提示每台主机的root密码,这样就建立各个机器间root用户的等效性,以后跨机器以root身份通过ssh执行系统命令不再需要密码了。
再编辑一个文件称作all_hosts1,每个主机一个名字,占一行
接下来在每个节点上创建gpadmin用户,这可以使用gpssh完成
用命令gpssh -f all_hosts1,系统出现提示符
=>
在这个提示符下执行的命令会连接到每台all_hosts文件中指定的主机上进行执行。比如创建用户组和用户
=> groupadd -g 3030 gpadmin
[mdw]
[sdw1]
[sdw2]
=>useradd -u 3030 -g gpadmin -d /home/gpadmin -s /bin/bash -m gpadmin
[mdw]
[sdw1]
[sdw2]
=>passwd gpadmin
.....


执行exit,退出所有连接。切换到gpadmin用户,再次执行gpssh-exkeys -f all_hosts,建立所有机器间gpadmin用户的等效性。
改变软件安装目录的所有权限到gpadmin
chown -R gpadmin:gpadmin /usr/local/greenplum-db-4.1.0

然后vi建立一个文件,比如all_segments,这个文件中含有所有segment主机的名称。比如
sdw1
sdw2
......
每个主机名要占用一行。

再建立一个all_seg,这个文件中每个段主机的网卡名要占用一行。

在master上,对已经安装的文件打包
tar -cvf /home/gpadmin/gp.tar greenplum-db-4.1.0
执行如下命令,把打好包的安装包拷贝到每个segment节点。
gpscp -f all_segments /home/gpadmin/gp.tar =:/usr/local
执行命令
gpssh -f all_segments
在所有segment服务器上解包
=> tar --directory /usr/local -xvf /usr/local/gp.tar
在所有segment服务器上为安装包创建link
=> ln -s /usr/local/greenplum-db-4.1.0 /usr/local/greenplum-db
在所有segment服务器上改变greenplum的所属到gpadmin
=> chown -R gpadmin:gpadmin /usr/local/greenplum-db
在所有segment服务器上删除gp.tar
=> rm /usr/local/gp.tar

至此,完成所有服务器上的软件部署工作。

接下来要进行数据库服务的初始化工作。首先要创建数据目录。在master节点上,创建数据目录mkdir -p /data/vol1/master,改变它的读写权限到gpadmin
chown -R gpadmin:gpadmin /data/vol1/master.
在所有segment上创建数据目录,以root身份
gpssh -f all_segments
=> mkdir -p /data/vol1/gpdb
....
=> chown -R gpadmin:gpadmin /data/vol1/gpdb
....

编辑系统初始化的参数文件,这个文件的编辑可以使用模版,模板文件在安装目录的/usr/local/greenplum-db/docs/cli_help/,gp_init_config_example。
里面的内容如下
ARRAY_NAME="Greenplum"   服务名称,随便起名,符合系统规范即可
MACHINE_LIST_FILE=/home/gpadmin/all_seg  指定所有参与到系统的段,以及使用的网卡名  
SEG_PREFIX=gpseg             指定系统创建子目录时的前缀
PORT_BASE=50000              每个segment使用的端口号
declare -a DATA_DIRECTORY=(/data/vol1 /data/vol1 /data/vol1 /data/vol1)   指定数据目录,它决定了每个段主机上的segment数量。比如例子中每个机器设置4个segment,它会在指定的目录下为每个段创建不同的子目录。
MASTER_HOSTNAME=mdw            指定master主机的名称
MASTER_DIRECTORY=/data/vol1/master  指定master主机的数据目录
MASTER_PORT=5432          指定应用连接系统的端口号
TRUSTED SHELL=ssh
CHECK_POINT_SEGMENT=8
ENCODING=UNICODE          数据库使用的字符集,对于中文目前只能使用UNICODE或者UNIX扩展中文字符集,建议使用unicode。

编辑好初始化参数的文件后,以gpadmin执行命令
gpinitsystem -c /usr/local/greenplum-db/docs/cli_help/gp_init_config_example
进行系统初始化。系统在初始化前会先进行自检,如果发现问题它会中断初始化,让我们去解决问题后再进行初始化。比如节点间联通性存在问题,目录权限存在问题等等。
完成初始化后,服务已经启动,我们可以再上面创建自己的应用了,我们可以使用客户端工具psql进行简单测试。
psql -d template1回车
进入提示符
template1=>
我们可以执行sql
比如
template1=>select current_date;
返回正确结果后,表明系统可以使用了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u9999/article/details/6732916

智能推荐

微信小程序蓝牙连接打印机_微信小程序蓝牙打印失败-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏27次。微信小程序蓝牙连接打印机_微信小程序蓝牙打印失败

python安装opencv库、提示找不到pip_【Python】pip安装opencv-python包失败的一个处理方法...-程序员宅基地

文章浏览阅读687次。出现的问题在Windows10系统中,在cmd中(或者在pycharm的Terminal中)输入pip install opencv-python会出现如下报错ERROR: Exception:Traceback (most recent call last):File "C:\Users\bzm84\Anaconda3\lib\site-packages\pip\_vendor\urllib3\..._file "c:\users\lneovo\anaconda3\envs\tf2.1\lib\site-packages\pip\_vendor\url

举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤_matlab 生成c-程序员宅基地

文章浏览阅读1.1k次。MATLAB Coder可以从MATLAB代码生成独立的、可读性强、可移植的C/C++代码。使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法;检查MATLAB代码的兼容性(有些matlab代码语句并不能生成c/c++代码);产生最终使用的源代码或MEX。利用MATLAB Coder生成c++代码,并在vs2008中验证:一个简单的例子,两数相乘_matlab 生成c

如何下载、选择dbSNP数据库的变异位点vcf文件(hg19/hg38)_dbsnp信息下载-程序员宅基地

文章浏览阅读7.6k次,点赞4次,收藏7次。创作日志:下载的增强子数据文件里,没给增强子中包含的SNP信息,所以要自己写脚本补充。本来是想通过爬虫的方法在dbSNP的网站上边爬取边补充,但是谁知道dbSNP的搜索功能做得那么垃圾!于是就只能下载dbSNP的变异位点文件,然后再自己做处理。当我经历了九九八十一难终于下载并解压好了120+G的vcf文件后,打印信息的时候tmd发现自己下载错了版本,我要用的是hg19,却下载成了hg38,欲哭无泪… 文件名不标版本真的很气人。于是读了读README文档,谁让以前不读呢。具体步骤 注意:由于下载的v_dbsnp信息下载

如何通过病毒营销打造爆款产品-程序员宅基地

文章浏览阅读696次。  病毒营销是通过提供有价值的产品或服务,让用户主动对其进行传播实现“营销杠杆”的作用,逐步获得尽人皆知,尽人参与的成效。如今,病毒式营销已经成为网络营销最为独特的手段,被越来越多的商家和网站成功利用。那么,如何才能通过病毒营销打造爆款呢?    旅行青蛙背后的佛理哲学支撑,产品设计上的随缘玩法,这两点是旅行青蛙病毒营销的关键。  佛理支撑:一切没有捷径,只有止观。它会离开、它会回来、但你无法掌控它的一切。  萌宠心态:它会长大、会淘气、会离开、它是你内心的萌宠,让你注入情感,让你.

人脸识别技术在HBase中的探索和应用 -程序员宅基地

文章浏览阅读171次。一、HBase基础与存储的优势HBase主要具有五大核心优势,即海量存储、列式存储、易扩展、高并发以及稀疏矩阵。HBase所能够应用的场景包括对象存储、用户画像推荐、聊天消息实时流、索引、报表以及轨迹数据和监控数据等。二、HBase应用分享这里主要分享一下HBase在人脸识别场景中的应用。在京东,人脸识别主要应用于无人超市、动态广告牌以及AR试装镜等项..._人脸识别系统hbase开发

随便推点

过滤器Filter_"@webfilter(filtername = \"encodingfilter\",urlpat-程序员宅基地

文章浏览阅读63次。29. 过滤器Filter:● 为什么要用过滤器?项目开发中,经常会用到重复代码的实现。1、请求每个servlet都要设置编码2、判断用户是否登录,只有登录了才有操作权限。●过滤器相关Api:interface Filter 过滤器核心接口1、init(FilterConfig filterConfig) 初始化方法,在服务器启动的时候就执行2、doFilter(ServletRequest request, ServletResponse response,.._"@webfilter(filtername = \"encodingfilter\",urlpatterns = \"/*\")"

深入Kubernetes:K8s的容器持久化存储操作_kubernetes.io/no-provisioner-程序员宅基地

文章浏览阅读1.4k次。从一个例子入手PV、PVCKubernetes 项目引入了一组叫作 Persistent Volume Claim(PVC)和 Persistent Volume(PV)的 API 对象用于管理存储卷。简单的说PersistentVolume (PV) 是集群中已由管理员配置的一段网络存储,是持久化存储数据卷;Persistent Volume Claim(PVC)描述的,则是 Pod 所希望使用的持久化存储的属性,比如,Volume 存储的大小、可读写权限等等。上面的这段文字说明可能过于模糊,_kubernetes.io/no-provisioner

nodejs操作Excel_nodejs excel-程序员宅基地

文章浏览阅读4k次。在nodejs中可以选择使用node-xlsx包来操作Excel文件_nodejs excel

Two Ways To FLIP Players In Unity2D_private float movementinputdirection; private floa-程序员宅基地

文章浏览阅读1.6k次。Two Ways To FLIP Players In Unity2D前言方法一方法二总结前言相信大多数人(新手)在写Unity2D的游戏中都会遇到角色翻转问题,本次针对此问题提出两个方法以便游戏制作和后续学习!此处先准备好了一个角色和场景!如图:方法一代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public cla._private float movementinputdirection; private float jumptimer;

LINUX下编译遇到“archiver requires 'AM_PROG_AR'”-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏2次。在编译VLC时遇到提示:/usr/share/automake-1.14/am/ltlibrary.am: warning: 'lib/libtiger.la': linking libtool libraries using a non-POSIX/usr/share/automake-1.14/am/ltlibrary.am: archiver requires 'AM_PROG_AR_am_prog_ar

java 之Math库类的使用简单介绍-程序员宅基地

文章浏览阅读6.3k次。Math类简介Math继承于java.lang.Object类。Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 字段摘要static doubleE 比任何其他值都更接近 e(即自然对数的底数)的 double 值。static doublePI

推荐文章

热门文章

相关标签