2.记录本地安装oushudb——安装zk和hdfs

本文详细介绍了如何在多台机器上安装Zookeeper和配置HDFS,作为安装OushuDB的前提步骤。首先,创建并编辑zkhostfile,接着在各节点安装Zookeeper,配置myid文件,启动Zookeeper集群。然后,卸载旧版snappy,安装Hadoop,并配置NameNode、DataNode目录。通过修改core-site.xml和hdfs-site.xml开启HDFS HA,启动NameNode、JournalNode和DataNode。最后,验证HDFS运行正常。OushuDB是一款云原生数据仓库,支持弹性扩展和高性能查询,广泛应用于多个行业。
摘要由CSDN通过智能技术生成

因为最近公司事情比较忙,就忘了更新,接着上一篇讲,上一篇文章讲了安装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已在金融、电信、制造、医疗和互联网等行业得到广泛的部署和应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值