I have received my new PC.

社会主义的本质,是解放生产力,发展生产力,……

Install and Configure CentOS 7

  1. setup the boot device
  2. install and reboot

Disable SELinux

sudo visudo
sudo ln -sf /usr/share/zoneinfo/Hongkong /etc/localtime
sudo sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo setenforce 0
sudo passwd root

Configure Network and Firewall

sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eno1 << EOF
ONBOOT=yes
BOOTPROTO=static
DEVICE=eno1
IPADDR=192.168.1.168
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
EOF

sudo tee -a /etc/resolv.conf << EOF
nameserver 114.114.114.114
EOF
sudo firewall-cmd --zone=public --add-port=9870/tcp --permanent  # hdfs ui
sudo firewall-cmd --zone=public --add-port=19999/tcp --permanent # net-data
sudo firewall-cmd --zone=public --add-port=23333/tcp --permanent # yikesaiting
sudo firewall-cmd --zone=public --add-port=38324/tcp --permanent # planchecker
sudo systemctl restart firewalld.service
yum install openssh-server -y
service sshd start

test -f ~/.ssh/id_rsa || ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
sudo yum install -y NetworkManager-wifi dnsmasq
IFNAME="wlo1"
CON_NAME="exciting-wifi"
sudo nmcli con add type wifi ifname $IFNAME con-name $CON_NAME autoconnect yes ssid $CON_NAME
sudo nmcli con modify $CON_NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
sudo nmcli con modify $CON_NAME wifi-sec.key-mgmt wpa-psk
sudo nmcli con modify $CON_NAME wifi-sec.psk "MyStrongHotspotPass"
sudo nmcli con up $CON_NAME

Run on Memory

rm -rf /opt /usr/local
mkdir -p /data0/opt /data0/local
ln -sf /data0/opt /opt
ln -sf /data0/local /usr/local

useradd -md /dev/shm/$USER
/dev/shm/db_data
/dev/shm/hdfs/
/dev/shm/opt
/dev/shm/cores/



sudo tee -a /etc/sysctl.conf << EOF
net.ipv4.ip_forward=1
EOF

Others

  1. config disk volume

    Pay attention to that it is not allowed to reduce lvm when mounted, which might cause super block corruption.

    Be familiar with pvs, lvs, /etc/fstab, lvcreate, lvremove.

    https://www.tecmint.com/extend-and-reduce-lvms-in-linux/

    https://stackoverflow.com/questions/26305376/resize2fs-bad-magic-number-in-super-block-while-trying-to-open

    https://www.cyberciti.biz/faq/linux-mount-an-lvm-volume-partition-command/

    http://yallalabs.com/linux/how-to-reduce-shrink-the-size-of-a-lvm-partition-formatted-with-xfs-filesystem/

Install Software

sudo yum install coreutils vim

Install Docker

sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER

# Binary
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.9.tgz
sudo mkdir -p /data0/bin
sudo tee -a /etc/sudoers << EOF
Defaults    secure_path = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/data0/bin
EOF
sudo tee -a /etc/security/pam_env.conf << EOF
PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/data0/bin
EOF
sudo tar xf docker-18.09.9.tgz --strip-components=1 -C /data0/bin
sudo dockerd --exec-root=/data3/docker-root \
             --data-root=/data3/docker-data \
             --pidfile=/data3/docker.pid &
sudo chmod a+rw /var/run/docker.sock
docker ps -a | awk '{print $1}' | xargs docker rm

Install Netdata

sudo bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh) --stable-channel

Install Hadoop

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
tar xf hadoop-3.1.3.tar.gz
sudo mv hadoop-3.1.3 /usr/local/

sudo install -o $USER -d /hdfs
sudo install -o $USER -d /var/lib/hadoop-hdfs
sudo adduser hdfs
sudo usermod -aG hdfs $USER
# Log out and log back in so that your group membership is re-evaluated.

export HADOOP_HOME=/usr/local/hadoop-3.1.3
cd $HADOOP_HOME
tee etc/hadoop/core-site.xml << CORE_SITE
<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:8020</value>
   </property>
</configuration>
CORE_SITE

tee etc/hadoop/hdfs-site.xml << HDFS_SITE
<configuration>
    <property>
        <name>dfs.client.read.shortcircuit</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.domain.socket.path</name>
        <value>/var/lib/hadoop-hdfs/dn_socket</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions.supergroup</name>
        <value>hdfs</value>
    </property>
</configuration>
HDFS_SITE
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
$HADOOP_HOME/bin/hdfs namenode -format
$HADOOP_HOME/bin/hdfs --daemon start namenode
$HADOOP_HOME/bin/hdfs --daemon start datanode

Install Eclipse

Use xev to check key bindings.

sudo yum install xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps xorg-x11-server-utils xorg-x11-utils xorg-x11-xinit -y

tee ~/.xmodmaprc << XMODMAPRC
clear Mod2
clear control
keycode 63 = Control_L
keycode 71 = Control_R
add control = Control_L Control_R
XMODMAPRC

echo 'xmodmap ~/.xmodmaprc' > ~/.bashrc
wget http://yumazure.oushu-tech.com:12000/oushurepo/yumrepo/internal/linux/toolchain/eclipse-cpp-photon-R-linux-gtk-plugins-x86_64.tar.gz

Install Planchecker

wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
sudo tar xf go1.12.5.linux-amd64.tar.gz -C /usr/local/
export PATH="/usr/local/go/bin/:$PATH"

mkdir -p ~/dev/goprojects/src/github.com/chiyang10000/
cd ~/dev/goprojects/src/github.com/chiyang10000/
git clone git@github.com:chiyang10000/planchecker
ln -s ~/dev/goprojects/src/github.com/chiyang10000/planchecker ~/dev/planchecker
cd ~/dev/planchecker
go get
go build

Install Python3.6

sudo yum install centos-release-scl
sudo yum install rh-python36
sudo /opt/rh/rh-python36/root/usr/bin/pip3 install requests
export PATH="/opt/rh/rh-python36/root/usr/bin/:$PATH"

Install SMB

https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

How to fix the permission problem?

sudo yum install samba samba-client
sudo systemctl enable smb.service
sudo systemctl enable nmb.service
sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --zone=public --add-service=samba

sudo systemctl restart smb.service
sudo systemctl restart nmb.service

Install Linux perf and KDAB/hotspot

git clone --recurse-submodules git@github.com:KDAB/hotspot.git
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
sudo yum install install cmake gcc glibc-static gcc-c++ libstdc++-static qt5 qt5-devel \
    extra-cmake-modules elfutils-devel kf5-threadweaver-devel kf5-ki18n-devel \
    kf5-kconfigwidgets-devel kf5-kitemviews-devel kf5-kitemmodels-devel \
    kf5-kio-devel kf5-solid-devel kf5-kwindowsystem-devel -y
sudo yum install perf -y
sudo yum install kde-runtime -y

Install PostgreSQL

sudo yum install postgresql-server -y

Install HAWQ

sudo tee -a /etc/sysctl.conf << SYSCTL
kernel.shmmax = 1000000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 200000
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 200000
fs.nr_open = 3000000
kernel.threads-max = 798720
kernel.pid_max = 798720
# increase network
net.core.rmem_max=2097152
net.core.wmem_max=2097152

kernel.core_pattern=/cores/core.%e.%p
SYSCTL

sudo tee /etc/security/limits.d/$USER.conf << LIMITS
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 131072
* hard nproc 131072
LIMITS
sudo yum install -y perl-XML-LibXML
sudo chmod a+w /opt
sudo install -o $USER -d /usr/local/hawq
sudo install -o $USER -d /db_data
cp -r /opt/clang/lib/* /usr/local/hawq/lib/
cp -r /opt/dependency-clang-x86_64-Linux/package/lib/* /usr/local/hawq/lib/
cp -r /opt/dependency-clang-x86_64-Linux/package/bin/python* /usr/local/hawq/bin/

# fix hdfs-client.xml domain socker setting

Install GPDB

Install HTTP Server

https://www.linode.com/docs/web-servers/apache/install-and-configure-apache-on-centos-7/

sudo yum install httpd -y

sudo systemctl enable httpd.service
sudo systemctl restart httpd.service

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo systemctl restart firewalld

Install Reverse Proxy

wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar xf frp_0.29.0_linux_amd64.tar.gz
/lib/systemd/system/