華爲雲-鯤鵬集羣-大數據環境搭建

本環境搭建是在,可參考

華爲雲——數字中國創新大賽·鯤鵬賽道·天府賽區暨四川鯤鵬應用開發者大賽

1 環境搭建準備

本文詳細描述了在華爲雲鯤鵬生態下的 BigData Pro 解決方案實驗手段, 涵蓋集羣搭建
及驗證, 本指導手冊所涉及的大數據組件版本如下所示

組件 版本
Hadoop 2.8.3
Spark 2.3.0
Hive 2.3.3
Hbase 2.1.0

各節點主機名

內網IP 主機名
192.168.1.122 node1
192.168.1.27 node2
192.168.1.133 node3
192.168.1.101 node4

1.1修改完畢後,效果如下(以node1爲例):

在這裏插入圖片描述

1.2增加 ip 及節點的映射關係,且確保 ip 爲內網 ip

vi /etc/hosts

修改完畢後,效果如下(以node1爲例):
在這裏插入圖片描述

1.3關閉各節點防火牆

systemctl stop firewalld
systemctl disable firewalld

1.4節點之間建立互信

ssh-keygen -t rsa
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3
ssh-copy-id root@node4

驗證是否互連(以node1爲例)
在這裏插入圖片描述

1.5將數據盤掛載到/home 目錄

1、各節點均需要執行如下命令,對一臺節點掛載目錄的手段如下:

fdisk /dev/vdb

2、輸入 n 後連續回車到 Command (m for help):命令行, 輸入 w自動退出命令行

partprobe
mkfs -t ext4 /dev/vdb1

3、將/dve/vdb1掛載到/home目錄

mount /dev/vdb1 /home

4、查看/home/目錄已經掛載成功

df -h 

在這裏插入圖片描述

5、查看/dev/vdb1 的 UUID

blkid 

在這裏插入圖片描述

6、設置開機自動掛載,執行 vi /etc/fstab 後, 按照步驟 6 查詢到的 UUID, 添加

UUID=查詢到的 UUID /home ext4 defaults 1 1

在這裏插入圖片描述

1.6同步服務器時間

因爲我們使用的是華爲雲容器引擎,鯤鵬集羣時間已經同步
下面是檢查過程,通過Xshell工具,同時輸入命令date,各節點結果一致
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

1.7創建必要目錄

各節點執行如下命令

mkdir -p /home/modules/data/buf/
mkdir -p /home/test_tools/
mkdir -p /home/nm/localdir

在這裏插入圖片描述

1.8下載軟件包

1、在node1節點,進入/home目錄下載軟件包至/home目錄,然後進行解壓(下載鏈接僅本次實驗時間內有效)

wget https://big-data-pro-test.obs.cn-east-3.myhuaweicloud.com/arm_bigdata_suite.tar.gz

2、進入/home/arm_bigdata_suite 中使 用 如 下 命 令 下 載 CentOS-7-aarch64-Everything-1908.iso 軟 件 包(下載鏈接僅本次實驗時間內有效)

wget http://mirrors.huaweicloud.com/centos-altarch/7.7.1908/isos/aarch64/CentOS-7-aarch64-Everything-1908.iso

軟件列表如下圖

在這裏插入圖片描述

1.9安裝 openjdk

1、解壓openjdk至 /usr/lib/jvm/目錄

tar zxvf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz -C /usr/lib/jvm

2、修改環境變量vim /etc/profile ,添加JDK路徑

export JAVA_HOME=/usr/lib/jvm/jdk8u191-b12

3、同步至各節點並使其生效驗證

scp -r /usr/lib/jvm/jdk8u191-b12/ 主機名:/usr/lib/jvm
source /etc/profile
java -version

在這裏插入圖片描述

1.10配置 yum 源

1、在 node1, 執行如下命令後,執行 df -h 確認/media 目錄已經成功掛載

mount -o loop /home/arm_bigdata_suite/CentOS-7-aarch64-Everything-1908.iso/media/

df -h

在這裏插入圖片描述

2、在node1, 執行

mv /etc/yum.repos.d/* /tmp/

3、在node1, 執行 vi /etc/yum.repos.d/local.repo 將如下內容保存到本文件中

[local]
name=local
baseurl=file:///media
enabled=1
gpgcheck=0

在這裏插入圖片描述

4、在node1, 執行如下命令

yum clean all
yum makecache
yum list | grep libaio
yum list |grep mysql-connector-java

顯示如下,則代表 yum 源配置完畢
在這裏插入圖片描述

1.11準備 OBS 桶及訪問信息

本次搭建過程中需要使用到如下資源, 需提前準備好

資源名稱 備註
確認所使用的華爲雲區域 選擇具備鯤鵬彈性雲服務器的任一區域, 後續創建並行文件系統及創建鯤鵬 ECS 虛擬機需在同一區域進行。
並行文件系統 1、創建方式:登陸華爲雲, 在上述,選擇對象存儲服務,點擊並行文件系統,點擊創建並行文件系統2、 創建後記錄文件系統名稱(本文後續也稱爲:桶名),爲避免相互影響,每套大數據集羣建議對接不同的 OBS 桶。
訪問密鑰(AK 和 SK) 獲取後備用。
OBS 區域域名 上述桶所在區域的 OBS 的區域域名

2 Hadoop 集羣部署

2.1在 node1 上準備 hadoop 組件

1、在 node1 節點上執行如下命令, 解壓 hadoop 軟件包

cp /home/arm_bigdata_suite/hadoop-2.8.3.tar.gz /home/modules/
cd /home/modules/
tar zxvf hadoop-2.8.3.tar.gz

執行完畢後,可查看到如下目錄:
在這裏插入圖片描述

2、進入hadoop配置目錄

cd /home/modules/hadoop-2.8.3/etc/hadoop

在這裏插入圖片描述

3、配置hadoop-env.sh

將export JAVA_HOME=${JAVA_HOME}替換爲:

export JAVA_HOME=/usr/lib/jvm/jdk8u191-b12

在這裏插入圖片描述

4、配置core-site.xml

fs.obs.access.key、 fs.obs.secret.key、 fs.obs.endpoint 需根據obs桶進行修改

<configuration>
<property>
<name>fs.obs.readahead.inputstream.enabled</name>
<value>true</value>
</property>
<property>
<name>fs.obs.buffer.max.range</name>
<value>6291456</value>
</property>
<property>
<name>fs.obs.buffer.part.size</name>
<value>2097152</value>
</property>
<property>
<name>fs.obs.threads.read.core</name>
<value>500</value>
</property>
<property>
<name>fs.obs.threads.read.max</name>
<value>1000</value>
</property>
<property>
<name>fs.obs.write.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.read.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.connection.maximum</name>
<value>1000</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/modules/hadoop-2.8.3/tmp</value>
</property>
<property>
<name>fs.obs.access.key</name>
<value>RSM2WMT03R38ZLY2TCOL</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>KaP5ajgg8FGvRP6Sy2QX7UUO4sXFFisuPoCuseB8</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-4.myhuaweicloud.com:5080</value>
</property>
<property>
<name>fs.obs.buffer.dir</name>
<value>/home/modules/data/buf</value>
</property>
<property>
<name>fs.obs.impl</name>
<value>org.apache.hadoop.fs.obs.OBSFileSystem</value>
</property>
<property>
<name>fs.obs.connection.ssl.enabled</name>
<value>false</value>
</property>
<property>
<name>fs.obs.fast.upload</name>
<value>true</value>
</property>
<property>
<name>fs.obs.socket.send.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.socket.recv.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.max.total.tasks</name>
<value>20</value>
</property>
<property>
<name>fs.obs.threads.max</name>
<value>20</value>
</property>
</configuration>

5、配置hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node1:50091</value>
</property>
</configuration>

6、配置mapred-site.xml # 需要cp mapred-site.xml.template mapred-site.xml模板

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property><property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>mapred.task.timeout</name>
<value>1800000</value>
</property>
</configuration>

7、配置yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/nm/localdir</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>28672</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>28672</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>38</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>38</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property><property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory
limits for containers</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
</configuration>

8、在slaves中指定 datanode節點

在這裏插入圖片描述

9、在 node1 節點, 替換 snappy-java-1.0.4.1.jar 文件

cd /home/arm_bigdata_suite/

echo y | cp snappy-java-1.0.4.1.jar /home/modules/hadoop-2.8.3/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/

echo y | cp snappy-java-1.0.4.1.jar /home/modules/hadoop-2.8.3/share/hadoop/tools/lib/

echo y | cp snappy-java-1.0.4.1.jar /home/modules/hadoop-2.8.3/share/hadoop/mapreduce/lib/

echo y | cp snappy-java-1.0.4.1.jar /home/modules/hadoop-2.8.3/share/hadoop/common/lib/

echo y | cp snappy-java-1.0.4.1.jar /home/modules/hadoop-2.8.3/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/

10、在 node1 節點, 執行如下命令將 OBA-HDFS 的插件 jar 包, 添加到對應的目錄中

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/hadoop-
2.8.3/share/hadoop/common/lib/

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/hadoop-
2.8.3/share/hadoop/tools/lib

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/hadoop-
2.8.3/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/hadoop-
2.8.3/share/hadoop/hdfs/lib/

2.2分發組件到各個節點並啓動 dfs

1、在node1 執行如下命令, 將 hadoop-2.8.3 目錄拷貝到其他各個節點的/home/modules/

for i in {2..4};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done

2、在各節點,執行 vi /etc/profile 添加如下環境變量

export HADOOP_HOME=/home/modules/hadoop-2.8.3
export PATH=$JAVA_HOME/bin:$PATH
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

3、在各節點執行如下命令, 使環境變量生效

source /etc/profile

4、在 node1~node4,初始化 namenode

hdfs namenode -format

5、在 node1 節點, 執行如下命令啓動 dfs 和 yarn

start-dfs.sh
start-yarn.sh

6、在 node1 執行 jps 命令, 可以查看到 NameNode, SecondaryNameNode, ResourceManager進程。

在這裏插入圖片描述

7、在 node2~node4 執行 jps 命令, 可以查看到 NodeManager 和 Datanode 進程。

在這裏插入圖片描述

2.1.2驗證 hadoop 的基本功能

1、登陸網址 http://node1 彈性 ip:8088/cluster,頁面可正常打開

在這裏插入圖片描述

2、 執行如下命令創建目錄並查看目錄

hadoop dfs -mkdir /test_folder
hadoop dfs -ls /

在這裏插入圖片描述

3、 在 node1, 執行如下命令查看 obs 桶中的目錄

hdfs dfs -ls obs://[桶名]/

在這裏插入圖片描述

3 Spark 分佈式集羣部署

3.1在 node1 準備 spark 組件

1、 在 node1 節點上執行如下命令, 解壓 hive 軟件包,並重命名文件夾

tar zxvf /home/arm_bigdata_suite/spark-2.3.0-bin-dev-with-sparkr.tgz -C /home/modules/
cd /home/modules/
mv spark-2.3.0-bin-dev spark-2.3.0

執行完畢後,可查看到如下目錄:

2、 在 node1 節點,執行如下命令將 hadoop-huaweicloud-2.8.3.36.jar 包拷貝到 jars 目錄

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/spark-
2.3.0/jars/

3、 在 node1 節點, 替換 snappy-java-1.0.4.1.jar 文件

cd /home/arm_bigdata_suite/
echo y | cp snappy-java-1.0.4.1.jar /home/modules/spark-2.3.0/jars/

4、 在 node1 節點上, vi /home/modules/spark-2.3.0/conf/spark-env.sh 補充如下配置項

export SCALA_HOME=/home/modules/spark-2.3.0/examples/src/main/scala
export SPARK_HOME=/home/modules/spark-2.3.0
export SPARK_DIST_CLASSPATH=$(/home/modules/hadoop-2.8.3/bin/hadoop classpath)

3.2 分發組件到各個節點

1、在node1 執行如下命令將 spark-2.3.0目錄拷貝到其他各個節點的/home/modules/下

for i in {2..4};do scp -r /home/modules/spark-2.3.0 root@node${i}:/home/modules/;done

拷貝完畢後,在 node2~node4 節點, 均可出現如下目錄:

2、 在 node1~node4 節點上, vi /etc/profile 添加如下環境變量:

export SPARK_HOME=/home/modules/spark-2.3.0
export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH

3、在 node1~node4 節點上,執行如下命令使得環境變量生效

source /etc/profile

3.3驗證 spark 的基本功能

1、 通過 spark-sql 驗證基本功能,在 node1 上執行 spark-sql 命令, 進入到命令行後,執行如,可在端口4040查看任務下操作

show databases;
create database testdb;
show databases;
use testdb;
create table testtable(value INT);
desc testtable;
insert into testtable values (1000);
select * from testtable;
exit;

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

4 Hive 部署在 node1 上準備 hive 組件

4.1在 node1 上安裝 mysql

1、添加 mysql 用戶組和 mysql 用戶,用於隔離 mysql 進程

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

2、安裝依賴庫 libaio.aarch64 以及 libaio-devel.aarch64

yum install -y libaio*

3、解壓 mysql 安裝包並重命名

tar xvf /home/arm_bigdata_suite/mysql-5.7.27-aarch64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.27-aarch64 /usr/local/mysql

4、配置 mysql

mkdir -p /usr/local/mysql/logs
chown -R mysql:mysql /usr/local/mysql
ln -sf /usr/local/mysql/my.cnf /etc/my.cnf
cp -rf /usr/local/mysql/extra/lib* /usr/lib64/
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.old
ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6

5、設置開機啓動

cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl enable mysqld

6、添加環境變量, 執行 vi /etc/profile 後, 添加

export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

7、確保環境變量生效

source /etc/profile

8、初始化 mysql

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
systemctl start mysqld
systemctl status mysqld

在這裏插入圖片描述

9、修改數據庫 root 密碼, 執行 mysql_secure_installation 後按照如下操作進行

[root@node1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):<–初次運行直接回車
OK, successfully used password, moving on…Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] #是否設置 root 用戶密碼, 輸入 y 並回車
New password: #設置 root 用戶的密碼,輸入 Hadoop@2020 後回車
Re-enter new password: #再輸入 Hadoop@2020 後回車
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] #是否刪除匿名用戶,輸入 Y 並回車
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] #是否禁止 root 遠程登錄,輸入 n 並回車
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] #是否刪除 test 數據庫,直接回車
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] #是否重新加載權限表, 直接回車
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
[root@node1~]#

在這裏插入圖片描述

10、重啓 mysql 並查看 mysql 狀態

systemctl restart mysql
systemctl status mysql

在這裏插入圖片描述

4.2 mysql連接

1、允許遠程連接 mysql

mysql -u root -p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;mysql>flush privileges;

在這裏插入圖片描述

2、 在 node1 上,安裝 mysql-connector-java

yum -y install mysql-connector-java

3、 在 node1 節點上執行如下命令, 解壓 hive 軟件包,並重命名文件夾

cp /home/arm_bigdata_suite/apache-hive-2.3.3-bin.tar.gz /home/modules/
cd /home/modules/
tar zxvf apache-hive-2.3.3-bin.tar.gz
mv apache-hive-2.3.3-bin hive-2.3.3

執行完畢後,可查看到如下目錄:
在這裏插入圖片描述

4、在 node1 節點上, 將 mysql-connect-java.jar 拷貝到 hive 相關目錄下

cp /usr/share/java/mysql-connector-java.jar /home/modules/hive-2.3.3/lib/

5、在 node1 節點上,執行 vi /home/modules/hive-2.3.3/conf/hive-site.xml 後, 拷貝如下內

容到本文本中後, 保存退出。
【特別注意】此配置文件中的 javax.jdo.option.ConnectionPassword 的值需要和 mysql 的密碼保持一致

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive_metadata?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Hadoop@2020</value>
</property>
<property>
<name>hive.strict.checks.cartesian.product</name>
<value>false</value>
</property>
</configuration>

在這裏插入圖片描述

6、 在 node1 節點上, vi /home/modules/hive-2.3.3/conf/hive-env.sh 中增加 HADOOP_HOME路徑

HADOOP_HOME=/home/modules/hadoop-2.8.3

在這裏插入圖片描述

7、執行初始化 mysql 數據庫操作,顯示“schemaTool completed”則表示執行成功

cd /home/modules/hive-2.3.3/bin
./schematool -initSchema -dbType mysql

在這裏插入圖片描述

4.3分發組件到各節點並設置環境變量

1、在 node1 執行如下命令, 將 hive 目錄拷貝到其他各個節點的/home/modules/下

for i in {2..4};do scp -r /home/modules/hive-2.3.3 root@node${i}:/home/modules/;done

拷貝完畢後,在 node2~node4 節點, 均可出現如下目錄:
在這裏插入圖片描述

2、在 node1~node4 上的/etc/profile 文件中, 補充如下的內容

export HIVE_HOME=/home/modules/hive-2.3.3
export PATH=${HIVE_HOME}/bin:$PATH

3、在 node1~node4 節點執行如下命令確保環境變量生效

source /etc/profile

4.4驗證 hive 基本功能

1、在 node1 上執行 hive 命令, 進入到命令行後,執行如下操作:

show databases;
create database testdb;
show databases;
use testdb;
create table testtable(value INT);
desc testtable;
insert into testtable values (1000);
select * from testtable;
exit;

在這裏插入圖片描述

2、在 node1 上執行 hive 命令

進入到命令行後,執行如下操作, 通過 on OBS 的方式訪問 hive 數據(需提前將 bucket_name 替換爲真實使用的 OBS 桶名), 驗證存算分離
基本能力:

use testdb;
create table testtable_obs(a int, b string) row format delimited fields terminated by ","
stored as textfile location "obs://bucket_name/testtable_obs";
insert into testtable_obs values (1,'test');
select * from testtable_obs;
exit;

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3、執行 hadoop fs -ls obs://bucket_name/testtable_obs 命令, 可以查看到具體的數據文件已存儲在 OBS 桶中。

5 HBase 部署

5.1在 node1 上準備 hbase 組件

1、 在 node1 節點上執行如下命令, 解壓 hbase 軟件包至/home/modules 路徑下

tar zxvf /home/arm_bigdata_suite/hbase-2.1.0-bin.tar.gz -C /home/modules/

執行完畢後,可查看到如下目錄:

2、 在 node1 節點, vi /home/modules/hbase-2.1.0/conf/hbase-env.sh 在最後補充

export JAVA_HOME=/usr/lib/jvm/jdk8u191-b12

在這裏插入圖片描述

3、在 node1 節點

vi /home/modules/hbase-2.1.0/conf/hbase-site.xml 將和中的內容替換爲如下:
【特別說明】本配置文件中的 hbase.rootdir 參數中 bucket_name 需要替換爲實際用到的
桶名。

<configuration>
<property>
<name>hbase.regionserver.handler.count</name>
<value>1000</value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>5242880</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>obs://bucket_name/hbasetest</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.property.tickTime</name>
<value>6000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/modules/hbase-2.1.0/data/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name><value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/modules/hbase-2.1.0/tmp</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>org.apache.hadoop.hbase.wal.FSHLogProvider</value>
</property>
<property>
<name>hbase.wal.dir</name>
<value>hdfs://node1:8020/hbase</value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>2097152</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>200</value>
</property>
<property>
<name>hbase.hstore.compaction.min</name>
<value>6</value>
</property>
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>16</value>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.2</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
</configuration>

在這裏插入圖片描述

4、在 node1 節點, 配置 regionserver執行 vi/home/modules/hbase-2.1.0/conf/regionservers確保內容如下

node1
node2
node3
node4

5、node1 上執行如下命令:

cp /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml /home/modules/hbase-2.1.0/conf/

6、node1 上執行如下命令, 將 hbase 中的 hadoop-common-2.8.3.jar 組件包替換成 hadoop中的 jar 包,並通過 md5sum 命令校驗兩個 jar 文件的 MD5 值一致。

echo y | cp /home/modules/hadoop-2.8.3/share/hadoop/common/hadoop-common-
2.8.3.jar /home/modules/hbase-2.1.0/lib/
md5sum /home/modules/hbase-2.1.0/lib/hadoop-common-2.8.3.jar
md5sum /home/modules/hadoop-2.8.3/share/hadoop/common/hadoop-common-
2.8.3.jar

在這裏插入圖片描述

7、node1 上執行如下命令, 將 hadoop-huaweicloud-2.8.3.36.jar 添加至 hbase 的 lib 目錄中:

cp /home/arm_bigdata_suite/hadoop-huaweicloud-2.8.3.36.jar /home/modules/hbase-
2.1.0/lib/

8、node1 上配置 vi /home/modules/hbase-2.1.0/bin/hbase-daemon.sh,在 172 行增加如下的配置

export SERVER_GC_OPTS="-Xms20480M -Xmx20480M -XX:NewSize=2048M -XX:MaxNewSize=2048M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:MaxDirectMemorySize=2048M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M"

配置後, 截圖如下:
在這裏插入圖片描述

5.2分發組件到各個節點並啓動 hbase

1、在 node1 執行如下命令, 將 hbase 目錄拷貝到其他各個節點的/home/modules/下

拷貝完畢後,在 node2~node4 節點, 均可出現如下目錄:

for i in {2..4};do scp -r /home/modules/hbase-2.1.0 root@node${i}:/home/modules/;done

2、在 node1~node4 上的/etc/profile 文件中, 補充如下的內容

export HBASE_HOME=/home/modules/hbase-2.1.0
export PATH=${HBASE_HOME}/bin:$PATH

3、在 node1~node4 節點執行如下命令確保環境變量生效

source /etc/profile

4、在 node1 節點, 執行如下命令啓動 hbase

start-hbase.sh

5.3驗證 hbase 基本功能

1、在 node1 節點執行 jps 命令, 查看存在 HMaster、 HRegionServer、 HQuorumPeer

在這裏插入圖片描述
在這裏插入圖片描述

2、 使用 node1 的彈性 ip 地址, 登陸 Hbase 首頁網址,能夠正常打開:

http://node1彈性 ip:16010/master-status

在這裏插入圖片描述

3、在 node1 上, 執行 hbase shell 命令後, 執行如下命令可正常執行

create 't', 'f'
put 't', 'rold', 'f', 'v'
scan 't'
describe 't'
disable 't'
drop 't'
exit

在這裏插入圖片描述

6 Hibench

6.1工具準備

1、 在 node1 節點, 將 Hibench.tar.gz 解壓至/home/test_tools/目錄下

tar zxvf /home/arm_bigdata_suite/HiBench.tar.gz -C /home/test_tools/

2、 在 node1, vim /home/test_tools/HiBench/conf/hadoop.conf 將hibench.hdfs.master 中hibench.hdfs.master obs://bucket_name/test1 的 bucket_name 替換成真正的桶名

在這裏插入圖片描述

6.2 Wordcount 測試

1、 在 node1,準備 wordcount 模型的運行數據

cd /home/test_tools/HiBench/bin/workloads/micro/wordcount/prepare
sh prepare.sh

在這裏插入圖片描述
數據準備完畢後,可執行如下命令查看數據存儲的位置(bucket_name 替換成真正
的桶名)

hdfs dfs -ls obs://bucket_name/test1/HiBench/Wordcount/Input

在這裏插入圖片描述

2、以 MapReduce 的方式運行 wordcount 業務

cd /home/test_tools/HiBench/bin/workloads/micro/wordcount/hadoop
sh run.sh

在這裏插入圖片描述
在這裏插入圖片描述

3、以 Spark 的方式運行 wordcount 業務

cd /home/test_tools/HiBench/bin/workloads/micro/wordcount/spark
sh run.sh

在這裏插入圖片描述
在這裏插入圖片描述

4、測試完畢後,可通過如下命令運行結果數據存儲的位置( bucket_name 替換成真正的桶名)

hdfs dfs -ls obs://bucket_name/test1/HiBench/Wordcount/Output

在這裏插入圖片描述

6.2 Terasort 測試

1、 在 node1 上, 準備 terasort 模型的運行數據

cd /home/test_tools/HiBench/bin/workloads/micro/terasort/prepare
sh prepare.sh

在這裏插入圖片描述

2、 以 MapReduce 的方式運行 terasort 業務

cd /home/test_tools/HiBench/bin/workloads/micro/terasort/hadoop
sh run.sh

在這裏插入圖片描述
在這裏插入圖片描述

3、 以 Spark 的方式運行 terasort 業務

cd /home/test_tools/HiBench/bin/workloads/micro/terasort/spark
sh run.sh

在這裏插入圖片描述
在這裏插入圖片描述

4、測試完畢後, 可通過如下命令運行結果數據存儲的位置(bucket_name 替換成真正的桶名)

hdfs dfs -ls obs://bucket_name/test1/HiBench/Terasort/Output

在這裏插入圖片描述

6.3 YCSB

工具準備

1、 在 node1 節點, 將 ycsb-0.12.0.tar.gz 拷貝並解壓至/home/test_tools/目錄下

tar zxvf /home/arm_bigdata_suite/ycsb-0.12.0.tar.gz -C /home/test_tools/
chmod 755 -R /home/test_tools/ycsb-0.12.0/

數據準備階段

2、 在 node1 上創建表, 執行 hbase shell 後, 創建表:

create 'BTable','family',{SPLITS => (1..20).map {|i| "user#{1000+i*(9999-1000)/20}"}}
exit

在這裏插入圖片描述

3、 在 node1 節點執行如下命令, 啓動數據導入(以 10000 數據量爲例)

cd /home/test_tools/ycsb-0.12.0/
nohup bin/ycsb load hbase10 -P workloads/workloada -cp /home/modules/hbase-
2.1.0//conf:/home/modules/hbase-2.1.0/lib/*:hbase10-binding/lib/hbase10-binding-
0.12.0.jar -p table=BTable -p columnfamily=family -p recordcount=10000 -threads 100
-s 2> workload-loadrun.txt -s 1> workload-loadresult.txt &

4、ps -ef |grep ycsb 確認執行完畢後, 可查看 workload-loadrun.txt 及 workloadaBloadresult1.txt

在這裏插入圖片描述

5、分析 workload-loadresult.txt, 確保[INSERT], Return=OK 的條目數符合預期。

在這裏插入圖片描述

6.4測試執行階段

本次此時中分別運行測試模型 a,b,c,d:

YCSB
模型a 10%寫 90%讀
模型 b 50%寫 50%讀
模型 c 90%寫 10%讀
模型 d 100%寫 0%讀

1、 在 node1 節點執行如下命令,運行測試模型 a, 待 ps -ef |grep ycsb 確認已無 ycsb 進程後, 查看 cat workloada-result.txt

cd /home/test_tools/ycsb-0.12.0/
nohup bin/ycsb run hbase10 -P workloads/workloada -cp /home/modules/hbase-
2.1.0//conf:/home/modules/hbase-2.1.0/lib/*:hbase10-binding/lib/hbase10-binding-
0.12.0.jar -p table=BTable -p columnfamily=family -p operationcount=10000 -threads
100 -s 2> workloada-run.txt -s 1> workloada-result.txt &

在這裏插入圖片描述

2、運行測試模型 b, 待 ps -ef |grep ycsb 確認已無 ycsb 進程後, 查看 cat workloadcresult.txt

nohup bin/ycsb run hbase10 -P workloads/workloadb -cp /home/modules/hbase-
2.1.0//conf:/home/modules/hbase-2.1.0/lib/*:hbase10-binding/lib/hbase10-binding-
0.12.0.jar -p table=BTable -p columnfamily=family -p operationcount=10000 -threads
100 -s 2> workloadb-run.txt -s 1> workloadb-result.txt &

在這裏插入圖片描述

7 附錄

7.1集羣格式化

在 node1, 執行如下命令(參數爲桶名) 可以完成大數據集羣格式化操作, 這意味着:
本集羣中 hdfs 將會重新初始化, obs://${bucket_name}/hbasetest001/*將被清空, hbase 元數
據將被刪除, 集羣將會重新啓動,因此請謹慎使用本腳本。

[root@node1 ~]# sh /home/arm_bigdata_suite/complete_clean_restart.sh
bucket_name is empty. Please check it! Usage:
sh /home/arm_bigdata_suite/complete_clean_restart.sh [bucket_name]
[root@node1 ~]#

執行完畢後,檢查如下頁面是否可以正常打開:

1、登陸網址 http://node1 彈性 ip:8088/cluster,頁面可正常打開

2、使用 node1 的彈性 ip 地址,登陸 Hbase 首頁網址,能夠正常打開:

http://node彈性 ip:16010/master-status
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章