どこかに向かうらしい話

迷走エンジニアの放浪記

NoSQL on CentOS7

はじめに

NoSQLを勉強しようとして、以下の書籍を買った。

RDB技術者のためのNoSQLガイド

RDB技術者のためのNoSQLガイド

すぐに新しくなってしまう分野のため、鉄は熱いうちに打ての精神で読んでみた。
簡単に言えば、NoSQLに該当するプロダクトの特徴、使いどころ(ユースケース)、限界について綺麗に書かれてる印象。
ただ、各プロダクトのインストールの仕方までは書籍では取り扱われていない。
そのため、ここではCentOS7に各プロダクトのインストール方法について、自分の環境で試して見た結果をメモしてみようと試みた。

なお、ユースケースより自分の興味の持ったNoSQLは以下の通り。
(めんどくさそうなのを削除したともいう…)

  • MongoDB
  • Cassandra
  • Redis
  • Neo4j

上記4つのインストール手順について、CentOSの最小インストール + Firewalld無効化 + SELinux無効化 以降の手順を以下の通り示す。

MongoDB 3.2

インストール

/etc/yum.repos.d/mongodb-org-3.2.repoを以下の内容で作成する。

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1

yumコマンドでインストールする。

# yum install mongodb-org

起動と自動起動

起動は以下の通り行う。

# systemctl start mongod

なお、自動起動についてだが、mongodはCentOS7のネイティブデーモンではないため、従来通りchkconfigを用いる。

# chkconfig mongod on

Cassandra 3.0

事前準備

Cassandraを動かすためには、最新版のJava8(Oracle Java SE 8 か OpenJDK 8)をインストールするように求められているため、OpenJDKを事前に入れておく。

# yum install java

インストール

/etc/yum.repos.d/datastax.repoを以下の内容で作成し、Datastaxのリポジトリを追加する。

[datastax]
name=DataStax Repo for Apache Cassandra
baseurl=http://rpm.datastax.com/community
enabled=1
gpgcheck=0

以下のコマンドを実行し Cassandra をインストールする。
なお、インストールによりCassandraユーザーが作成され、Cassandraの起動時に使用されます。

# yum install cassandra30

起動と自動起動

systemctlでやろうとするとこけるので、旧来の方法で行う。

# service cassandra start
# chkconfig cassandra on

Redis 3.2

書籍で取り扱われているRedisのバージョンは、3.0系である。
しかし、2016年8月25日現在、Redisは、REMIリポジトリには3.2系しかなく、EPELリポジトリには2.8系が最新の状況である。
そのため、3.0系以降のバージョンであるREMIリポジトリからパッケージを取得する方針を取ることにする。

インストール

Redisの最新版を取得するために、REMIリポジトリを追加する。

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yumコマンドでインストールする。
ここで直接REMIリポジトリを指定することを忘れないこと。

# yum install --enablerepo=remi redis

起動と自動起動

お決まりのパターンで行う。

# systemctl start redis
# systemctl enable redis

Neo4j 2.3

Neo4jにはCommunityバージョンとEnterpriseバージョンがあるが、今回はCommunityバージョンをインストールすることにした。
また、ここでインストールするバージョンは2.3.6とする。

事前準備

Neo4jは、サーバーでオープンできるファイル数について、40000以上を推奨している。
今回作成するのは検証環境なので、最大の65536にする。
/etc/security/limits.confに以下の通り追記する。

*                soft    nofile          65536
*                hard    nofile          65536

.bash_profile に以下を追加する。

export NEO4J_HOME=/usr/neo4j

ここで設定を反映させるため、再起動をする。

Neo4jを動かすためには、JDK7以上が必要なので、JDKを事前に入れておく。 また、lsofも入れておく。

# yum install java lsof

インストール

ブラウザで https://neo4j.com/download/other-releases/ にアクセスし、「Linux/Mac Neo4j 2.3.6 (tar)」を選択すると、「neo4j-community-2.3.6-unix.tar.gz」をダウンロードする。

そして、tarファイルを/rootに配置し、展開を行う。

# tar -xf neo4j-community-2.3.6-unix.tar.gz
# mv neo4j-community-2.3.6 /usr/neo4j

起動

標準設定では、外部からの接続はできない。
外部からブラウザでNeo4jに接続するためには、${NEO4J_HOME}/conf/neo4j-server.propertiesの標準設定を変更する必要がある。

org.neo4j.server.webserver.address=0.0.0.0

以下のコマンドにより起動する。

# ${NEO4J_HOME}/bin/neo4j console

ブラウザより、以下の通りアクセスを行う。

http://【IPアドレス】:7474

Neo4jのログイン画面で、初期ユーザーとパスワードを入力し、Neo4に接続する。
初期ユーザーはneo4jであり、そのパスワードはneo4jである。
なお、初回ログイン時にパスワードの変更が求められるので、変更を行う。

CentOS7のシステムバックアップに導入する必要のあるパッケージ一覧

はじめに

以下の要件を満たすシステムイメージのバックアップを行うオープンソースソフトウェアを調査した。

  • 導入が容易である。
  • データの配置先として、「ローカルディスク」「NFSサーバ」「USB メモリ」「テープ」「CD/DVD」「LVM」に対応している。
  • LVMに対応している。

その結果として、有名なものにRelax and RecoverとMondo Rescueがあがった。

Relax and Recover

http://relax-and-recover.org/

Relax and Recover とは、NFSサーバなどバックアップデータの保存先と、レスキューイメージを使って簡単にシステムイメージのバックアップ・リストアができるオープンソースソフトウェアである。
Relax-and-Recoverには以下のような特徴がある。

  • RHEL 7.2から同梱されるようになった(yumで簡単にインストール可能)
  • Bashのみから成る
  • バックアップ、リストアの手順が非常に簡単
  • バックアップデータとレスキューイメージを使ったリストアを行う

参考
Relax and Recoverでのシステム回復
https://oss.sios.com/redhat-ch/blog/rear

Mondo Rescue

http://www.mondorescue.org/

Mondo Rescue とは、システムイメージのバックアップ・リストアができるオープンソースソフトウェアである。
パッケージが用意されているため、簡単に導入が可能。
Mondo Rescueには以下のような特徴がある。

  • リストア時にパーティションのサイズ変更や、grubなど、システムの調整ができる
  • 特定ディレクトリを除外できる
  • バックアップデータを使ったリストアを行う

この記事の目的

機能面も大事だが、あんまりパッケージを入れないで使えるほうが望ましい。
最小インストールが行われたCentOS7.2に対して、どれだけのパッケージのインストールが必要になるかの検証を行う。

結果

ほとんど入れる必要のないRelax and Recoverと、リポジトリの登録が必要なうえに大量のパッケージの導入が必要になるMondo Rescueと、結果が明確に分かれた。
以降、検証結果を示す。

検証

Relax and Recoverのインストール

本体のインストール

# yum install rear

【中略】

========================================================================================================================
 Package                  アーキテクチャー           バージョン                          リポジトリー              容量
========================================================================================================================
インストール中:
 rear                     noarch                     1.17.2-1.el7                        base                     354 k
依存性関連でのインストールをします:
 attr                     x86_64                     2.4.46-12.el7                       base                      66 k

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 419 k
インストール容量: 1.1 M

【以下略】

関連パッケージのインストール

以下の通りインストールする。

# yum install mkisofs syslinux

【中略】

========================================================================================================================
 Package                       アーキテクチャー         バージョン                         リポジトリー            容量
========================================================================================================================
インストール中:
 genisoimage                   x86_64                   1.1.11-23.el7                      base                   298 k
 syslinux                      x86_64                   4.05-12.el7                        base                   990 k
依存性関連でのインストールをします:
 libusal                       x86_64                   1.1.11-23.el7                      base                   135 k
 mtools                        x86_64                   4.0.18-5.el7                       base                   203 k

トランザクションの要約
========================================================================================================================
インストール  2 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 1.6 M
インストール容量: 4.1 M

【以下略】

Mondo Rescueのインストール

本体のインストール

# cd /etc/yum.repos.d 
# wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
# yum install mondo

【中略】

========================================================================================================================
 Package                                アーキテクチャー バージョン                         リポジトリー           容量
========================================================================================================================
インストール中:
 mondo                                  x86_64           3.2.2-1.centos7                    mondorescue           902 k
依存性関連でのインストールをします:
 afio                                   x86_64           2.5-1.centos7                      mondorescue            75 k
 buffer                                 x86_64           1.19-8.centos7                     mondorescue            23 k
 bzip2                                  x86_64           1.0.6-13.el7                       base                   52 k
 dosfstools                             x86_64           3.0.20-9.el7                       base                  101 k
 gdbm-devel                             x86_64           1.10-8.el7                         base                   47 k
 genisoimage                            x86_64           1.1.11-23.el7                      base                  298 k
 glibc-devel                            x86_64           2.17-106.el7_2.8                   updates               1.0 M
 glibc-headers                          x86_64           2.17-106.el7_2.8                   updates               663 k
 kernel-headers                         x86_64           3.10.0-327.28.2.el7                updates               3.2 M
 libdb-devel                            x86_64           5.3.21-19.el7                      base                   38 k
 libusal                                x86_64           1.1.11-23.el7                      base                  135 k
 mindi                                  x86_64           3.0.2-1.centos7                    mondorescue           202 k
 mindi-busybox                          x86_64           1.21.1-1.centos7                   mondorescue           276 k
 mtools                                 x86_64           4.0.18-5.el7                       base                  203 k
 net-tools                              x86_64           2.0-0.17.20131004git.el7           base                  304 k
 perl                                   x86_64           4:5.16.3-286.el7                   base                  8.0 M
 perl-CPAN-Meta                         noarch           2.120921-5.el7                     base                  113 k
 perl-CPAN-Meta-Requirements            noarch           2.122-7.el7                        base                   24 k
 perl-CPAN-Meta-YAML                    noarch           0.008-14.el7                       base                   24 k
 perl-Carp                              noarch           1.26-244.el7                       base                   19 k
 perl-Data-Dumper                       x86_64           2.145-3.el7                        base                   47 k
 perl-Digest                            noarch           1.17-245.el7                       base                   23 k
 perl-Digest-MD5                        x86_64           2.52-3.el7                         base                   30 k
 perl-Encode                            x86_64           2.51-7.el7                         base                  1.5 M
 perl-Exporter                          noarch           5.68-3.el7                         base                   28 k
 perl-ExtUtils-CBuilder                 noarch           1:0.28.2.6-286.el7                 base                   67 k
 perl-ExtUtils-Install                  noarch           1.58-286.el7                       base                   73 k
 perl-ExtUtils-MakeMaker                noarch           6.68-3.el7                         base                  275 k
 perl-ExtUtils-Manifest                 noarch           1.61-244.el7                       base                   31 k
 perl-ExtUtils-ParseXS                  noarch           1:3.18-2.el7                       base                   77 k
 perl-File-Path                         noarch           2.09-2.el7                         base                   26 k
 perl-File-Temp                         noarch           0.23.01-3.el7                      base                   56 k
 perl-Filter                            x86_64           1.49-3.el7                         base                   76 k
 perl-Getopt-Long                       noarch           2.40-2.el7                         base                   56 k
 perl-HTTP-Tiny                         noarch           0.033-3.el7                        base                   38 k
 perl-IO-Interface                      x86_64           1.05-2.el7                         mondorescue            26 k
 perl-IPC-Cmd                           noarch           1:0.80-4.el7                       base                   34 k
 perl-JSON-PP                           noarch           2.27202-2.el7                      base                   55 k
 perl-Locale-Maketext                   noarch           1.23-3.el7                         base                   93 k
 perl-Locale-Maketext-Simple            noarch           1:0.21-286.el7                     base                   49 k
 perl-Module-Build                      noarch           2:0.40.05-2.el7                    base                  281 k
 perl-Module-CoreList                   noarch           1:2.76.02-286.el7                  base                   84 k
 perl-Module-Load                       noarch           1:0.24-3.el7                       base                   11 k
 perl-Module-Load-Conditional           noarch           0.54-3.el7                         base                   18 k
 perl-Module-Metadata                   noarch           1.000018-2.el7                     base                   26 k
 perl-Module-ScanDeps                   noarch           1.10-3.el7                         base                   45 k
 perl-MondoRescue                       noarch           3.2.2-1.centos7                    mondorescue            82 k
 perl-Net-IPv4Addr                      noarch           0.10-6.el7                         mondorescue            16 k
 perl-Params-Check                      noarch           1:0.38-2.el7                       base                   18 k
 perl-Parse-CPAN-Meta                   noarch           1:1.4404-5.el7                     base                   14 k
 perl-PathTools                         x86_64           3.40-5.el7                         base                   82 k
 perl-Perl-OSType                       noarch           1.003-3.el7                        base                   20 k
 perl-Pod-Escapes                       noarch           1:1.04-286.el7                     base                   50 k
 perl-Pod-Perldoc                       noarch           3.20-4.el7                         base                   87 k
 perl-Pod-Simple                        noarch           1:3.28-4.el7                       base                  216 k
 perl-Pod-Usage                         noarch           1.63-3.el7                         base                   27 k
 perl-ProjectBuilder                    noarch           0.14.1-1.centos7                   mondorescue           133 k
 perl-Scalar-List-Utils                 x86_64           1.27-248.el7                       base                   36 k
 perl-Socket                            x86_64           2.010-3.el7                        base                   49 k
 perl-Storable                          x86_64           2.45-3.el7                         base                   77 k
 perl-Test-Harness                      noarch           3.28-3.el7                         base                  302 k
 perl-Text-ParseWords                   noarch           3.29-4.el7                         base                   14 k
 perl-Time-HiRes                        x86_64           4:1.9725-3.el7                     base                   45 k
 perl-Time-Local                        noarch           1.2300-2.el7                       base                   24 k
 perl-constant                          noarch           1.27-2.el7                         base                   19 k
 perl-devel                             x86_64           4:5.16.3-286.el7                   base                  452 k
 perl-libs                              x86_64           4:5.16.3-286.el7                   base                  687 k
 perl-macros                            x86_64           4:5.16.3-286.el7                   base                   43 k
 perl-parent                            noarch           1:0.225-244.el7                    base                   12 k
 perl-podlators                         noarch           2.5.1-3.el7                        base                  112 k
 perl-threads                           x86_64           1.87-4.el7                         base                   49 k
 perl-threads-shared                    x86_64           1.43-6.el7                         base                   39 k
 perl-version                           x86_64           3:0.99.07-2.el7                    base                   84 k
 pyparsing                              noarch           1.5.6-9.el7                        base                   94 k
 syslinux                               x86_64           4.05-12.el7                        base                  990 k
 systemtap-sdt-devel                    x86_64           2.8-10.el7                         base                   65 k
 wodim                                  x86_64           1.1.11-23.el7                      base                  320 k
依存性関連での更新をします:
 glibc                                  x86_64           2.17-106.el7_2.8                   updates               3.6 M
 glibc-common                           x86_64           2.17-106.el7_2.8                   updates                11 M

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ (+77 個の依存関係のパッケージ)
更新                       (  2 個の依存関係のパッケージ)

総ダウンロード容量: 38 M

【以下略】

関連パッケージのインストール

  • lzo(高速圧縮ライブラリ)
  • lzop(高速圧縮ユーティリティ)

以下の通りインストールする。

# yum install lzo lzop
【中略】
パッケージ lzo-2.06-8.el7.x86_64 はインストール済みか最新バージョンです
【中略】
========================================================================================================================
 Package                   アーキテクチャー            バージョン                       リポジトリー               容量
========================================================================================================================
インストール中:
 lzop                      x86_64                      1.03-10.el7                      base                       54 k

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 54 k
インストール容量: 99 k

【以下略】

Oracle Database 12c を CentOS7にインストールしたときの備忘録

インストール手順は、以下のサイトを参考に行った。

CentOS 7 : Oracle Database 12c : インストール環境の設定 : Server World

その際のインストール時の備忘録として記載する。

インストールパッケージについて

インストール要件にkshがあるが、これに対応するパッケージはpdkshである。
これは実際には、mkshをインストールすることにより、pdkshがインストールされる。

# yum search pdksh
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
===================================================== 一致: pdksh ======================================================
mksh.x86_64 : MirBSD enhanced version of the Korn Shell

Oracle Database 12c インストール時の文字化け

Oracle Database 12c をインストールするとき、文字化けが発生し、日本語が「□□□」になった。

対応方法は、

  • 端末から「export LANG=C」と入力して、英語でインストールする。
  • jreの場所を直接指定してインストーラを起動する。

JREは /usr/lib配下にあるので、以下のように検索を行う。

$ find /usr/lib -name jre

そこで出てきたPATHを指定してrunInstallerを起動する。

$ ./runInstaller -jreLoc /usr/lib/jvm/java-1.8.0.71-.b15.el7_2.x86_64/jre

これで日本語でインストーラが起動する。

「PRVF-0002:ローカル・ノード名を取得できませんでした」のエラー

/etc/hostsファイルに、自ホスト名を追記すればOK。
自ホスト名が「ora12c」とする場合は、以下のようになる。

127.0.0.1   ora12c localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         ora12c localhost localhost.localdomain localhost6 localhost6.localdomain6

DBCAでも文字化けが発生

DBCAでも、文字化けが発生し、日本語が「□□□」になった。

対応方法は、

  • 端末から「export LANG=C」と入力して、英語でDBCAを起動する。
  • ${ORACLE_HOME}/bin/dbcaのJRE_DIRをOS標準の日本語フォントに対応したjreに書き換えてDBCAを起動する。

JREは /usr/lib配下にあるので、以下のように検索を行う。

$ find /usr/lib -name jre

そこで出てきたPATHを指定に書き換える。

(71行目)
# JRE_DIR=/u01/app/oracle/product/12.1.0/dbhome_1/jdk/jre
JRE_DIR=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre

そして、DBCAを起動する。

$ dbca

これで日本語でインストーラが起動する。

おまけ

Oracleが公表してるガイドは以下のものがある。

http://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/db121linux-x64-ja-v10-1984264-ja.pdf

CentOS7にGuest Additionsのインストール

GUEST ADDITIONS

Guest Additionsのなかでも特に以下の機能を使用したい。

GUEST ADDITIONSをインストール

必要なパッケージとそのパッケージのインストール

必要なパッケージは以下の通り。

  • Development Tools (開発ツール)
  • kernel-devel
  • kernel-headers

以下の様にパッケージをインストールする。

# yum groupinstall "Development Tools"
# yum install kernel-devel kernel-headers

ゲストマシン上のメニュー「デバイス」→「Guest AdditionsのCDイメージを挿入」をクリックする。

次にゲストマシン上のターミナルを開いて、作業ディレクトリを作成して、GuestAdditionsのマウント先に移動する。

# mkdir /mnt/cdrom
# mount -r /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom

CentOSなので、対応するインストールスクリプトを実行する。

# ./VBoxLinuxAdditions.run

すると、こんなエラーメッセージを吐き出した。

The missing package can be probably installed with
yum install kernel-devel-3.10.0-327.el7.x86_64

なので、

# yum install kernel-devel-3.10.0-327.el7.x86_64

を実行した。
その後再度以下を実行。

# ./VBoxLinuxAdditions.run

インストールスクリプトが終了し、プロンプトが戻ってきたらOSを一度リブートする。 以上でGuest Additionsのインストールは終了。

スライスと逆順が同時に使うとき気をつけないといけない件

Python3の話。

文字列sの3文字目から5文字目までの部分文字列は、スライスを用いてs[2:5]で取得が可能。
文字列sの逆の文字列は、s[::-1]で取得が可能。

文字列sの2文字目から4文字目までの部分文字列を取得し、その取得した部分文字列の逆の文字列は、スライスを用いてs[2:5:-1]で取得ができそうだが、結果は''となってしまい、うまくいかない。
実際はs[2:5][::-1]s[4:1:-1]で取得することが可能。
以下のサンプルを見れば、なんとなく理解できるかと思われる。

>>> s = "abcdefg"

>>> s[2:5]
'cde'
>>> s[2:5:-1]
''
>>> s[2:5][::-1]
'edc'
>>> s[4:1:-1]
'edc'

Python3におけるformat形式を自分のためにまとめてみた件

主なネタはココにある通り。
http://docs.python.jp/3.5/library/string.html#formatspec

自分がよく使うパターンに絞ってメモしてみる。

>>> printf("hoge")
hoge(改行あり)
>>> print("hoge", end="")
hoge(改行なし)

ポジション引数を使ったアクセス:

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{0} {1} {0}'.format('abra', 'cad')   # 引数のインデクスは繰り返すことができます
'abra cad abra'

引数の要素へのアクセス:

>>> coord = (3, 5)
>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
'X: 3;  Y: 5'

テキストの幅を指定した整列:

>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # 詰め文字に '*' を使う
'***********centered***********'

%+f と %-f, % f の置換、そして符号の指定:

>>> '{:+f}; {:+f}'.format(3.14, -3.14)  # 常に表示する
'+3.140000; -3.140000'
>>> '{:f}; {:f}'.format(3.14, -3.14)  # 正の数にはスペースを表示
'3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)  # マイナスだけを表示 -- '{:f}; {:f}' と同じ
'3.140000; -3.140000'

dによる指定:

>>> print("{0:d}".format(123))
123
>>> print("{0:+d}".format(123))
+123
>>> print("{0:04d}".format(123))
0123
>>> print("{0:+04d}".format(123))
+123
>>> print("{0:06d}".format(123))
000123
>>> print("{0:+06d}".format(123))
+00123

固定小数点の出力に関する指定:

標準では以下の通り。

>>> print("{0:f}".format(12.3456))
12.345600

小数点の位置に注目。

>>> print("{0:.1f}".format(12.3456))
12.3
>>> print("{0:.2f}".format(12.3456))
12.35
>>> print("{0:.3f}".format(12.3456))
12.346
>>> print("{0:.4f}".format(12.3456))
12.3456
>>> print("{0:.5f}".format(12.3456))
12.34560

小数点と表示させる桁数の比較。 x.yfは、小数点y桁だけ必ず表示しつつ、x文字分の表示領域に収めるように出力される。 (小数点も1文字としてカウントする)
ただし、出力対象がx文字分の表示領域に収まらない場合は、その分はオーバーして出力される。

>>> print("{0:3.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、3文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12.3
>>> print("{0:4.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、4文字分の表示領域に収めるように出力される。
12.3
>>> print("{0:5.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、5文字分の表示領域に収めるように出力される。
 12.3
>>> print("{0:6.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、6文字分の表示領域に収めるように出力される。
  12.3
>>> print("{0:4.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、4文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12.35
>>> print("{0:5.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、5文字分の表示領域に収めるように出力される。
12.35
>>> print("{0:6.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、6文字分の表示領域に収めるように出力される。
 12.35
>>> print("{0:7.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、7文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12345.68
>>> print("{0:8.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、8文字分の表示領域に収めるように出力される。
12345.68
>>> print("{0:9.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、9文字分の表示領域に収めるように出力される。
 12345.68

split()とsplit(" ")で出力が異なる件について

掲題の通り。
split()split(" ")では、微妙に出力結果が違うことに注意。

>>> space1 = "a b"

>>> space2 = "a  b"

>>> space3 = "a   b"

>>> [i for i in space1.split()]
['a', 'b']

>>> [i for i in space1.split(" ")]
['a', 'b']

>>> [i for i in space2.split()]
['a', 'b']

>>> [i for i in space2.split(" ")]
['a', '', 'b']

>>> [i for i in space3.split()]
['a', 'b']

>>> [i for i in space3.split(" ")]
['a', '', '', 'b']