如果您用的是 Oushu Lava 私有云,或者公有云 2.0+,您能够通过 Lava UI 主动部署 OushuDB,详情请见:http://oushu.io/docs/ch/lava-…。
如果您不应用 Oushu Lava,只想独自部署 OushuDB,请依照本节步骤装置。
首先在 oushum1,批改 /usr/local/hawq/etc/slaves,将所有 OushuDB 的 segment 节点的 hostname 写入 slaves 中,在本次装置中,应该写入 slaves 的有 oushus1 和 oushus2,slaves 内容为:oushus1oushus2
在其余节点上装置 hawq:
hawq ssh -h oushum2 -e "yum install -y hawq"hawq ssh -f slaves -e "yum install -y hawq"
在 oushum1 节点上,在配置文件 /etc/sysctl.conf 增加内容:
kernel.shmmax = 1000000000kernel.shmmni = 4096kernel.shmall = 4000000000kernel.sem = 250 512000 100 2048kernel.sysrq = 1kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.msgmni = 2048net.ipv4.tcp_syncookies = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_max_syn_backlog = 200000net.ipv4.conf.all.arp_filter = 1net.ipv4.ip_local_port_range = 10000 65535net.core.netdev_max_backlog = 200000net.netfilter.nf_conntrack_max = 524288fs.nr_open = 3000000kernel.threads-max = 798720kernel.pid_max = 798720# increase networknet.core.rmem_max=2097152net.core.wmem_max=2097152net.core.somaxconn=4096
拷贝 oushum1 上 /etc/sysctl.conf 中的配置文件到所有节点:
hawq scp -r -f hostfile /etc/sysctl.conf =:/etc/
在 oushum1,应用“hawq ssh”执行上面的命令,使所有节点的 /etc/sysctl.conf 中的系统配置失效 >:hawq ssh -f hostfile -e "sysctl -p"
在 oushum1,创立文件 /etc/security/limits.d/gpadmin.conf:
* soft nofile 1048576* hard nofile 1048576* soft nproc 131072* hard nproc 131072
拷贝 oushum1 上 /etc/security/limits.d/gpadmin.conf 中的配置文件到所有节点:
hawq scp -r -f hostfile /etc/security/limits.d/gpadmin.conf =:/etc/security/limits.d
在 oushum1,在 Hadoop 上创立 /hawq/default_filespace,并赋予 gpadmin 权限:
sudo -u hdfs hdfs dfs -mkdir -p /hawq/default_filespacesudo -u hdfs hdfs dfs -chown -R gpadmin /hawq
在 oushum1,创立 mhostfile,记录所有 hawq 的 master 和 standby master 的 hostname,相似 hostfile:touch mhostfile
mhostfile 记录内容:oushum1oushum2
在 oushum1,创立 shostfile,记录所有 hawq 的 segment 的 hostname,相似 hostfile:touch shostfile
shostfile 记录内容:oushus1oushus2
在 oushum1,应用“hawq ssh”在 master 和 standby 节点创立 master 元数据目录和长期文件目录,并授 予 gpadmin 权限:
创立 master 元数据目录 hawq ssh -f mhostfile -e 'mkdir -p /data1/hawq/masterdd'# 创立长期文件目录 hawq ssh -f mhostfile -e 'mkdir -p /data1/hawq/tmp'hawq ssh -f mhostfile -e 'mkdir -p /data2/hawq/tmp'hawq ssh -f mhostfile -e 'chown -R gpadmin:gpadmin /data1/hawq'hawq ssh -f mhostfile -e 'chown -R gpadmin:gpadmin /data2/hawq'
在 oushum1,应用“hawq ssh”在所有 segment 创立 segment 元数据目录和长期文件目录,并授予 gpadmin 权限:
创立 segment 元数据目录 hawq ssh -f shostfile -e 'mkdir -p /data1/hawq/segmentdd'# 创立长期文件目录 hawq ssh -f shostfile -e 'mkdir -p /data1/hawq/tmp'hawq ssh -f shostfile -e 'mkdir -p /data2/hawq/tmp'hawq ssh -f shostfile -e 'chown -R gpadmin:gpadmin /data1/hawq'hawq ssh -f shostfile -e 'chown -R gpadmin:gpadmin /data2/hawq'
在 oushum1,切换 hawq 用户,hawq 相干的配置文件都须要应用该用户权限:
su - gpadmin
批改 /usr/local/hawq/etc/hdfs-client.xml:(与 hdfs 相似,先去掉 HA 的正文):<configuration><property><name>dfs.nameservices</name><value>oushu</value></property><property><name>dfs.ha.namenodes.oushu</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.oushu.nn1</name><value>oushum2:9000</value></property><property><name>dfs.namenode.rpc-address.oushu.nn2</name><value>oushum1:9000</value></property><property><name>dfs.namenode.http-address.oushu.nn1</name><value>oushum2:50070</value></property><property><name>dfs.namenode.http-address.oushu.nn2</name><value>oushum1:50070</value></property>...<property><name>dfs.domain.socket.path</name><value>/var/lib/hadoop-hdfs/dn_socket</value><description>Optional. This is a path to a UNIX domain socket that will be used for communication between the DataNode and local HDFS clients.If the string "_PORT" is present in this path, it will be replaced by the TCP port of the DataNode.</description></property>...</configuration>
在 oushum1,批改 /usr/local/hawq/etc/hawq-site.xml 留神:hawq_dfs_url 中的 oushu 是 dfs.nameservices 的值,在 hdfs-site.xml 中配置;magma_nodes_url 中的值最好取 /usr/local/hawq/etc/slaves 文件中的前两行:
<configuration><property><name>hawq_master_address_host</name><value>oushum1</value></property>...<property><name>hawq_standby_address_host</name><value>oushum2</value><description>The host name of hawq standby master.</description></property>...<property><name>hawq_dfs_url</name><value>oushu/hawq/default_filespace</value><description>URL for accessing HDFS.</description></property><property><name>magma_nodes_url</name><value>oushus1:6666,oushus2:6666</value><description>urls for accessing magma.</description></property><property><name>hawq_master_directory</name><value>/data1/hawq/masterdd</value><description>The directory of hawq master.</description></property><property><name>hawq_segment_directory</name><value>/data1/hawq/segmentdd</value><description>The directory of hawq segment.</description></property><property><name>hawq_master_temp_directory</name><value>/data1/hawq/tmp,/data2/hawq/tmp</value><description>The temporary directory reserved for hawq master. NOTE: please DONOT add "" between directories. </description></property><property><name>hawq_segment_temp_directory</name><value>/data1/hawq/tmp,/data2/hawq/tmp</value><description>The temporary directory reserved for hawq segment. NOTE: please DONOT add" " between directories. </description></property><property><name>default_storage</name><value>hdfs</value><description>Sets the default storage when creating table</description></property><property><name>hawq_init_with_hdfs</name><value>true</value><description>Choose whether init cluster with hdfs</description></property>...<property><name>hawq_rm_yarn_address</name><value>oushum1:8032</value><description>The address of YARN resource manager server.</description></property><property><name>hawq_rm_yarn_scheduler_address</name><value>oushum1:8030</value><description>The address of YARN scheduler server.</description></property>...<property><name>hawq_rm_yarn_app_name</name><value>hawq</value><description>The application name to register hawq resource manager in YARN.</description></property>...<property><name>hawq_re_cgroup_hierarchy_name</name><value>hawq</value><description>The name of the hierarchy to accomodate CGroup directories/files for resource enforcement.For example, /sys/fs/cgroup/cpu/hawq for CPU sub-system.</description></property>...</configuration>
OushuDB4.0 版本新增 Magma 的独自配置和启停性能,应用 magam 服务时, 在 oushum1,应用“hawq ssh”在所有 slave 节点创立 node 数据目录,并授予 gpadmin 权限
hawq ssh -f shostfile -e 'mkdir -p /data1/hawq/magma_segmentdd'hawq ssh -f shostfile -e 'mkdir -p /data2/hawq/magma_segmentdd'hawq ssh -f shostfile -e 'chown -R gpadmin:gpadmin /data1/hawq'hawq ssh -f shostfile -e 'chown -R gpadmin:gpadmin /data2/hawq'
而后编辑配置 /usr/local/hawq/etc/magma-site.xml:
<property><name>nodes_file</name><value>slaves</value><description>The magma nodes file name at GPHOME/etc</description></property><property><name>node_data_directory</name><value>file:///data1/hawq/magma_segmentdd,file:///data2/hawq/magma_segmentdd</value><description>The data directory for magma node</description></property><property><name>node_log_directory</name><value>~/hawq-data-directory/segmentdd/pg_log</value><description>The log directory for magma node</description></property><property><name>node_address_port</name><value>6666</value><description>The port magma node listening</description></property><property><name>magma_range_number</name><value>2</value></property><property><name>magma_replica_number</name><value>3</value></property><property><name>magma_datadir_capacity</name><value>3</value></property>
在 oushum1,切换成 root 用户:su - root
拷贝 oushum1 上 /usr/local/hawq/etc 中的配置文件到所有节点:
source /usr/local/hawq/greenplum_path.shhawq scp -r -f hostfile /usr/local/hawq/etc =:/usr/local/hawq
在 oushum1,切换到 gpadmin 用户,创立 hhostfile:
su - gpadminsource /usr/local/hawq/greenplum_path.sh #设置 hawq 环境变量 touch hhostfile
hhostfile 文件记录所有 OushuDB 节点主机名称,内容如下:oushum1oushum2oushus1oushus2
应用 root 用户登录到每台机器,批改 gpadmin 用户明码:
sudo echo 'password' | sudo passwd --stdin gpadmin
针对 gpadmin 用户替换 key,并且依照提醒输出相应节点的 gpadmin 用户明码:
su - gpadminsource /usr/local/hawq/greenplum_path.sh #设置 hawq 环境变量 hawq ssh-exkeys -f hhostfile
在 oushum1,应用 gpadmin 用户权限,初始化 OushuDB 集群,当提醒“Continue with HAWQ init”时,输 入 Y:hawq init cluster //OushuDB4.0 默认不启动 magma 服务
hawq init cluster --with_magma //OushuDB4.0 新增,3.X 版本不反对该用法
// OushuDB4.0 版本新增 --with_magma 选项,但只有 hawq init|start|stop cluster 命令能够带 --with_magma 选项。
留神:
在做 OushuDB 集群初始化的时候,须要保障在创立的 /data*/hawq/ 目录下,masterdd 和 segmentdd> 都是空目录,在 hadoop 上创立的 /hawq/default_filespace 确保是空目录 #另外,如果 hawq init cluster 失败,能够先执行上面的命令进行 hawq 集群,清空目录,找出 > 问题起因后从新初始化。hawq stop cluster# 在 OushuDB master 节点,依据本次装置的配置,s 应用上面的命令清空所有 hawq 目录,而后重建 hawq 子目录:
hawq ssh -f hhostfile -e 'rm -fr /data1/hawq/masterdd/*'hawq ssh -f hhostfile -e 'rm -fr /data1/hawq/segmentdd/*'hawq ssh -f hhostfile -e 'rm -fr /data1/hawq/magma_masterdd/*'hawq ssh -f hhostfile -e 'rm -fr /data1/hawq/magma_segmentdd/*'hawq ssh -f hhostfile -e 'rm -fr /data2/hawq/magma_segmentdd/*'# 在 HDFS namenode 节点,应用上面的命令,清空 /hawq/default_filespace,如果 /hawq/default_filespace 中有用户数据,留神备份数据,防止造成损失:hdfs dfs -rm -f -r /hawq/default_filespace/*
你也须要查看 HDFS 的参数配置是否正确,最好以 gpadmin 用户来查看。如果参数配置不正确的话,> 尽管有时 HDFS 能够失常启动,但在高负载状况下 HDFS 会呈现谬误。
su – gpadminsource /usr/local/hawq/greenplum_path.shhawq check -f hostfile –hadoop /usr/hdp/current/hadoop-client/ –hdfs-ha
查看 OushuDB 是否运行失常:
su - gpadmin
source /usr/local/hawq/greenplum_path.sh
psql -d postgres
select * from gp_segment_configuration; #确定所有节点是 up 状态
create table t(i int);
insert into t select generate_series(1,1000);
select count(*) from t;