CentOS 6.10にVertica10.0をインストールする

##はじめに

勤務先でVerticaを運用しているので自宅学習用にVertica環境を準備してみようと言うことで実際に行った操作や設定等をまとめていこうと思います。



##環境について
OS：CentOS 6.10
SW：Vertica10.0.0

※Oracle VirtualBoxを使用しローカルの仮想環境にて実施しています。
※VerticaはEnterprise Modeで作成しています。

##事前準備
Oracle VirtualBoxのインストール
→今回は省略させていただきます。

CentOSのisoファイルのダウンロード
以下URLからCentOS6.10のisoをダウンロードしておいてください。
https://www.centos.org/download/

Verticaの試用版のダウンロード
以下URLから「Access Our Free Community Edition Trial」の『Download Now』をクリック。
https://www.vertica.com/try/



ユーザ情報を登録するとrpmファイルがダウンロードできます。



##事前作業
####VirtualBoxで仮想環境を作成し、CentOS6.10をインストールする。
基本はデフォルトで進めますが、ストレージのサイズは10GB以上にしないと溢れる可能性があります。

また、以下の設定は別途実施しています。


１.ネットワークの設定
VirtualBoxの設定から「ネットワーク」→「アダプター１」→「割り当て」をブリッジアダプターに変更します。
この作業はssh接続でログインして作業できるようにプライベートLANのIPがふられるように設定しています。(詳細は調べきれていないです。。。)


２.ディスクの追加
Verticaの「data領域」と「catalog領域」を別パーティションにするために2つディスクを作成します。

VirtualBoxの設定から「ストレージ」→「コントローラ：SATA」→「ハードディスクの追加」を選択し、10GBのストレージを2つ作成します。

![スクリーンショット 2020-09-22 19.01.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/732691/1a625c0b-ed6e-7340-b7fb-1dd1362ba679.png)



##本作業
####ディスクの追加

作成しておいたストレージがあることを確認します。

```
# ll /dev/sd*
brw-rw---- 1 root disk 8, 16  9月 22 15:59 2020 /dev/sdb
brw-rw---- 1 root disk 8, 32  9月 22 15:59 2020 /dev/sdc



# fdisk /dev/sdb　<==ディスク作成一回目
# fdisk /dev/sdc　<==ディスク作成二回目
...
コマンド (m でヘルプ): n  <==nを入力してEnter
コマンドアクション
    e   拡張
    p   基本領域 (1-4)
p   <==pを入力してEnter
領域番号 (1-4): 1  <==一回目は1を選択、二回目は2を選択
最初 シリンダ (1-652, default 1): 1　<==とりあえず左の最小値を入力
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-652, default 652): 652　<==右の最大値を入力
コマンド (m でヘルプ): w　<==wを入力して書き込みを行う。


# ll /dev/sd*
brw-rw---- 1 root disk 8, 16  9月 22 15:59 2020 /dev/sdb
brw-rw---- 1 root disk 8, 17  9月 22 15:59 2020 /dev/sdb1
brw-rw---- 1 root disk 8, 32  9月 22 15:59 2020 /dev/sdc
brw-rw---- 1 root disk 8, 34  9月 22 15:59 2020 /dev/sdc2

ext4でファイルシステムを作成
# mkfs -t ext4 /dev/sdb1
# mkfs -t ext4 /dev/sdc2

Vertica用にマウントポイントを作成
# mkdir /data
# mkdir /catalog

マウントを実施
# mount -t ext4 /dev/sdb1 /data
# mount -t ext4 /dev/sdc2 /catalog

マウントされたことを確認
# df -h
ilesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      8.3G  6.7G  1.2G  85% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot
/dev/sdb1             9.8G   23M  9.2G   1% /data　<==Verticaのdata領域
/dev/sdc2             9.8G  1.8G  7.5G  19% /catalog　<==Verticaのcatalog領域

ディスクID(UUID)を確認
# blkid /dev/sdb1
# blkid /dev/sdc2
/dev/sdb1: UUID="ffb142f2-62c3-4646-950b-8f1f9e543c8c" TYPE="ext4"


OS起動時に自動でマウントされるように設定
# cp -p /etc/fstab /etc/fstab.org　<==バックアップ取得
# vi /etc/fstab
UUID=<確認したUUIDを記載> /data ext4 defaults 1 1
```


####パッケージのインストール

```
# yum install gcc unzip wget dialog perl
```


####Verticaインストール時のエラーに対応
<details><summary>**HINT「S0305」に対応**</summary>
==エラー内容========
HINT(eS0305): TZ is unset for dbadmin. Consider updating .profile or .bashrc
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0305</details>



```
tzdataの更新を行う
# yum update tzdata

タイムゾーンを確認
# cat /etc/sysconfig/clock

バックアップ取得
# cp -p /etc/profile /etc/profile.org

プロファイルにタイムゾーンを追加
# vi /etc/profile
	以下を追加
	export TZ="Asia/Tokyo"

環境変数を適用
# source /etc/profile

適用されたことを確認
# env | grep TZ
export TZ="Asia/Tokyo"
```

<details><summary>**HINT「S0041、S0040、S0045」に対応**</summary>
<div>==エラー内容========

HINT(eS0041): Could not find the following tools normally provided by the mcelog package: mcelog
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0041

HINT(eS0040): Could not find the following tools normally provided by the pstack or gstack package: pstack/gstack
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0040

HINT(eS0045): Could not find the following tools normally provided by the sysstat package: iostat, mpstat
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0045</div></details>


```
以下パッケージをインストール
# yum install pstack mcelog sysstat
```


<details><summary>**WARN「N0010」に対応**</summary>
==エラー内容========
WARN(eN0010): Linux iptables (firewall) has some non-trivial rules in tables: filter
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=N0010
</details>

```
iptablesのサービスを停止。(本番環境では非推奨)
# service iptables save
# service iptables stop
# chkconfig iptables off

# service ip6tables save
# service ip6tables stop
# chkconfig ip6tables off
```


<details><summary>**WARN「S0112」に対応**</summary>
==エラー内容========
WARN(eS0112): vm.swappiness is higher than recommended: your 60 > 1
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0112
</details>



```
# sysctl -a | grep vm.swappiness
# cp -p /etc/sysctl.conf /etc/sysctl.conf.org
# vi /etc/sysctl.conf
	以下を追加
	vm.swappiness = 1
# reboot
# sysctl -a | grep vm.swappiness
# cat /proc/sys/vm/swappiness
```

<details><summary>**FAIL「S0020」に対応**</summary>
==エラー内容========
FAIL(eS0020): Readahead size of  (/dev/mapper/VolGroup-lv_root) is too low for typical systems: 256 < 2048
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0020</details>

```
# /sbin/blockdev --setra 2048 /dev/mapper/VolGroup-lv_root
# echo '/sbin/blockdev --setra 2048 /dev/mapper/VolGroup-lv_root' >> /etc/rc.local
```



<details><summary>**FAIL「S0180」に対応**</summary>
==エラー内容========
FAIL(eS0180): Insufficient swap size. Need 2.00 GB, have 0.80 GB
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0180</details>

```
# dd if=/dev/zero of=/swapfile bs=1M count=2048
# mkswap /swapfile
# chmod 600 /swapfile
# swapon /swapfile
# swapon -s

# vi /etc/fstab
	以下を追加
	/swapfile		swap			swap	defaults	0 0
# reboot
```

<details><summary>**FAIL「S0030」に対応**</summary>
==エラー内容========
FAIL(eS0030): ntp daemon process is not running: ['ntpd', 'ntp', 'chronyd']
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0030</details>

```
# yum install ntp
# service ntpd start
# chkconfig ntpd on
```


<details><summary>**FAIL「S0081」に対応**</summary>
==エラー内容========
FAIL(eS0081): SELinux appears to be enabled and not in permissive mode.
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0081</details>


```
# getenforce  <==disabledが出力された場合は対応不要
# vi /etc/selinux/config
　以下行をdisabledに変更し無効にする。
　SELINUX=disabled

# reboot
# getenforce　<==disabledが出力されること
```



<details><summary>**FAIL「S0310」に対応**</summary>
==エラー内容========
FAIL(eS0310): Transparent hugepages is set to 'always'. Must be 'never' or 'madvise'.
https://www.vertica.com/docs/10.0.x/HTML/index.htm#cshid=S0310</details>

```
以下を実行しneverに変更する。
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
```



####Verticaのインストール

WinSCPなどでサーバ上にrpmファイルを配置してください。
sshで接続している場合は以下コマンドで/home/root直下に配置が可能です。

scp <ローカルのrpm配置先> root@IPアドレス:~/


RPMからインストールを実行

```
# rpm -Uvh vertica-10.0.0-0.x86_64.RHEL6.rpm
```

インストールされた資材からさらにインストール実行
実行中にパスワードを聞かれるため、dbadminユーザのパスワードを設定

```
# /opt/vertica/sbin/install_vertica --hosts 127.0.0.1 --rpm ~/vertica-10.0.0-0.x86_64.RHEL6.rpm
```

作成したvertica用のディレクトリのパーミッションを変更する。

```
# chown -R dbadmin.verticadba /data
# chown -R dbadmin.verticadba /catalog
```

Verticaデータベースの作成

```
dbadminユーザに切り替え
# su - dbadmin

admintoolsを使用しコマンドラインでデータベースの作成を行う。
$ admintools -t create_db --data_path=/data --catalog_path=/catalog --database=vdb --password=<任意のデータベースのパスワード> --hosts=localhost
```

無事に作成が終われば以下コマンドでDBへの接続ができるようになります。

```
$ vsql
```

##参考サイト
Vertica公式ドキュメント
https://www.vertica.com/docs/10.0.x/HTML/Content/Home.htm



##おわりに

基本はVerticaの公式ドキュメントを読んで進めているため、大ハマりはせずに進めました。

これでVerticaを好き放題できる準備は整ったのでいろいろ検証してみたいと思います。


以上、ご覧いただきありがとうございました。