因为最近公司事情比较忙,就忘了更新,接着上一篇讲,上一篇文章讲了安装oushudb的一些准备工作,这篇文章主要讲安装oushudb前相应组件的安装。
一、安装zookeeper
1.创建一个zkhostfile包含要安装zookeeper的机器:
touch zkhostfile
2.添加下面主机名到zkhostfile,该文件记录安装zookeeper的主机名称,因为我们在准备工作中准备了三台机器,分别为oushum1,oushum2,oushus1:
oushum1
oushum2
oushus1
3.安装Zookeeper:
因为在准备工作中我们之前提到过,需要使用OushuDB命令行工具”hawq ssh-exkeys”来简化无密码登录设置以及使用“hawq ssh”来简化集群操作,所以我们在oushum1上先安装OushuDB,因此这里也可以用到hawq命令来给三台机器一起安装,首先source环境变量
source /usr/local/hawq/greenplum_path.sh
hawq ssh -f zkhostfile -e 'yum install -y zookeeper'
4.创建zookeeper数据目录:
hawq ssh -f zkhostfile -e 'mkdir -p /data1/zookeeper/data'
hawq ssh -f zkhostfile -e 'chown -R zookeeper:zookeeper /data1/zookeeper'
5.分别在三台配置了zookeeper的节点上配置myid文件,分别节点oushum1、oushum2、oushus1创建文件myid,内容分别是1、2和3,然后为zookeeper用户加上权限:
source /usr/local/hawq/greenplum_path.sh
echo 1 > myid
hawq scp -h oushum1 ./myid =:/data1/zookeeper/data
echo 2 > myid
hawq scp -h oushum2 ./myid =:/data1/zookeeper/data
echo 3 > myid
hawq scp -h oushus1 ./myid =:/data1/zookeeper/data
hawq ssh -f zkhostfile -e "sudo chown -R zookeeper:zookeeper /data1/zookeeper/data"
复制zoo.cfg(右键保存)到oushum1上/etc/zookeeper/conf/zoo.cfg, 在oushum1上文件/etc/zookeeper/conf/zoo.cfg中添加以下内容:
server.1=oushum1:2888:3888
server.2=oushum2:2888:3888
server.3=oushus1:2888:3888
说明: server.n中的n值,即是myid文件的内容,在配置zookeeper节点需要注意:
在oushum1上文件/etc/zookeeper/conf/zoo.cfg中修改dataDir:
dataDir=/data1/zookeeper/data
然后再拷贝zoo.cfg到所有zookeeper节点:
cd ~
hawq scp -f zkhostfile /etc/zookeeper/conf/zoo.cfg =:/etc/zookeeper/conf/zoo.cfg
6.在oushum1,使用”hawq ssh”启动所有节点zookeeper:
hawq ssh -f zkhostfile -e 'sudo -u zookeeper /usr/hdp/current/zookeeper-server/bin/zkServer.sh start'
zookeeper启动后,使用下面的命令查看zookeeper是否启动成功:
hawq ssh -f zkhostfile -e 'sudo -u zookeeper /usr/hdp/current/zookeeper-server/bin/zkServer.sh status'
二、安装hdfs
由于hadoop依赖于特定版本的snappy,请先卸载snappy确保安装的顺利进行:
hawq ssh -f hostfile -e 'yum remove -y snappy'
1.OUSHUDB的HDFS采用HA的方式进行安装配置。安装Hadoop可执行文件。
hawq ssh -f hostfile -e 'yum install -y hadoop hadoop-hdfs'
2.配置NameNode目录,按照我们之前准备的机器,需要配置的节点有两个,oushum1 和 oushum2。创建nnhostfile,类似前文hostfile:
touch nnhostfile
配置nnhostfile内容为hadoop的NameNode节点hostname:
oushum1
oushum2
创建DataNode主机文件dnhostfile,类似前文nnhostfile:
touch dnhostfile
配置dnhostfile内容为hadoop的DataNode节点hostname:
oushus1
oushus2
3.创建NameNode目录:
hawq ssh -f nnhostfile -e 'mkdir -p /data1/hdfs/namenode'
hawq ssh -f nnhostfile -e 'chmod -R 755 /data1/hdfs'
hawq ssh -f nnhostfile -e 'chown -R hdfs:hadoop /data1/hdfs'
4.创建DataNode目录:
本次安装我们每台机器上有两个数据盘,分别mount在/data1和/data2上
hawq ssh -f dnhostfile -e 'mkdir -p /data1/hdfs/datanode'
hawq ssh -f dnhostfile -e 'mkdir -p /data2/hdfs/datanode'
hawq ssh -f dnhostfile -e 'chmod -R 755 /data1/hdfs'
hawq ssh -f dnhostfile -e 'chmod -R 755 /data2/hdfs'
hawq ssh -f dnhostfile -e 'chown -R hdfs:hadoop /data1/hdfs'
hawq ssh -f dnhostfile -e 'chown -R hdfs:hadoop /data2/hdfs'
5.修改oushum1上的配置文件/etc/hadoop/conf/core-site.xml 首先需要打开HA,即去掉如下所示的HA注释:
<!-- HA
...
HA -->
去掉下面的内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdfs-nn:9000</value>
</property>
修改下面的内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://oushu</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>oushum1:2181,oushum2:2181,oushus1:2181</value>
</property>
...
<property>
<name>ipc.server.listen.queue.size</name>
<value>3300</value>
</property>
...
<configuration>
6.修改oushum1上的配置文件/etc/hadoop/conf/hdfs-site.xml 首先打开HA,即去掉如下所示的两行注释:
<!-- HA
...
HA -->
HA打开后,修改内容如下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>file:/data1/hdfs/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:/data1/hdfs/datanode,file:/data2/hdfs/datanode</value>
<final>true</final>
</property>
...
<property>
<name>dfs.block.local-path-access.user</name>
<value>gpadmin</value>
</property>
...
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
...
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
<description>
If "true", access tokens are used as capabilities for accessing
datanodes.
If "false", no access tokens are checked on accessing datanodes.
</description>
</property>
...
<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.http-address.oushu.nn1</name>
<value>oushum2:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.oushu.nn2</name>
<value>oushum1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.oushu.nn2</name>
<value>oushum1:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://oushum1:8485;oushum2:8485;oushus1:8485/oushu</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled.oushu</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.oushu</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data1/hdfs/journaldata</value>
</property>
...
7.修改oushum1上/etc/hadoop/conf/hadoop-env.sh:
...
export JAVA_HOME="/usr/java/default"
...
export HADOOP_CONF_DIR="/etc/hadoop/conf"
...
export HADOOP_NAMENODE_OPTS="-Xmx6144m -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
export HADOOP_DATANODE_OPTS="-Xmx2048m -Xss256k"
...
export HADOOP_LOG_DIR=/var/log/hadoop/$USER
...
8.修改oushum1上/etc/hadoop/conf/slaves 将所有DataNode的HostName写入该文件:
oushus1
oushus2
拷贝oushum1上/etc/hadoop/conf中的配置文件到所有节点:
hawq scp -r -f hostfile /etc/hadoop/conf =:/etc/hadoop/
9.在oushum1节点,格式化ZKFailoverController
sudo -u hdfs hdfs zkfc -formatZK
在配置journal的所有节点上,启动journalnode。创建jhostfile,类似前文hostfile,内容为配置journal的节点hostname:
oushum1
oushum2
oushus1
使用下面的命令,启动journalnode:
hawq ssh -f jhostfile -e 'sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start journalnode'
10.格式化并启动oushum1上的NameNode:
sudo -u hdfs hdfs namenode -format -clusterId ss
sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start namenode
11.在另一个NameNode oushum2中进行同步操作,并启动NameNode:
hawq ssh -h oushum2 -e 'sudo -u hdfs hdfs namenode -bootstrapStandby'
hawq ssh -h oushum2 -e 'sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start namenode'
12.通过hawq ssh启动所有datanode节点:
hawq ssh -f dnhostfile -e 'sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start datanode'
通过hawq ssh启动oushum2上的zkfc进程,使其成为active namenode:
hawq ssh -h oushum2 -e 'sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start zkfc'
通过hawq ssh启动oushum1上的zkfc进程,使其成为standby namenode:
hawq ssh -h oushum1 -e 'sudo -u hdfs /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh start zkfc'
13.检查hdfs是否成功运行:
su - hdfs
hdfs dfsadmin -report
hdfs dfs -mkdir /testnode
hdfs dfs -put /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh /testnode/
hdfs dfs -ls -R /
Oushu Database(简称OushuDB)是由Apache HAWQ创始团队打造的新一代云原生数据仓库,该产品采用了存储与计算分离技术架构,具有MPP的所有优点,还具有弹性,支持混合工作负载和高扩展性等优点。 同时支持公有云与私有云。高可扩展,遵循ANSI-SQL标准,具有极速执行器,提供PB级数据交互式查询能力。并且提供对主要BI工具的描述性分析支持和高级机器学习功能。兼容Oracle,GPDB和PostgreSQL,可以轻松取代传统数据仓库包括Teradata,Oracle,DB2,Greenplum和SQL-on-Hadoop引擎。并且原生支持Kubernetes容器平台,帮助企业无缝迁移到最新的云计算平台。OushuDB已在金融、电信、制造、医疗和互联网等行业得到广泛的部署和应用。