大資料實驗記錄

wangjq6發表於2024-04-04

網路卡

在Ubuntu系統下瀏覽器無法上網,終端輸入ifconfig檢視,只能看到lo本地迴環網路卡,沒有找到ens33網路卡

解決方法

sudo dhclient ens33
 
sudo ifconfig ens33

建立普通使用者

開啟一個終端(可以使用快捷鍵 Ctrl+Alt+T),使用如下命令建立一個使用者hadoop:

sudo useradd -m hadoop -s /bin/bash

使用如下命令為hadoop使用者設定密碼:

sudo passwd hadoop

為hadoop使用者增加管理員許可權:

sudo adduser hadoop sudo

更新APT

APT是一個非常優秀的軟體管理工具,Linux系統採用APT來安裝和管理各種軟體。安裝成功Linux系統以後,需要及時更新APT軟體,否則,後續一些軟體可能無法正常安裝。請登入Linux系統,開啟一個終端(可以使用快捷鍵Ctrl+Alt+T),進入Shell命令提示符狀態,然後輸入下面命令:

sudo apt-get update

vim編輯器安裝

sudo apt-get install vim

鍵盤敲擊輸入一個英文字母i,進入編輯狀態以後才能修改內容。修改後,需要按鍵盤上的Esc鍵退出vim的編輯狀態,之後有以下幾種選擇:

1、從鍵盤輸入“:wq”三個英文字母,然後回車,表示儲存檔案並退出。

2、從鍵盤輸入“:q”兩個英文字母,然後回車,表示不儲存並退出。

3、從鍵盤輸入“:q!”三個英文字母,然後回車,表示不儲存並強制退出。

Eclipse安裝

到Eclipse官網(https://www.eclipse.org/downloads/)下載安裝包,假設安裝檔案下載後儲存在了Linux系統的目錄“~/Downloads”下,下面執行如下命令對檔案進行解壓縮:

cd ~/Downloads
sudo tar -zxvf ./eclipse-4.7.0-linux.gtk.x86_64.tar.gz -C /usr/local 

然後,執行如下命令啟動Eclipse:

cd /usr/local/eclipse
./eclipse

hadoop的安裝和使用

安裝SSH

SSH是Secure Shell的縮寫,它是建立在應用層基礎上的安全協議,專為遠端登入會話和其他網路服務提供安全性。利用SSH協議可以有效防止遠端管理過程中的資訊洩露問題。需要在Ubuntu上安裝SSH服務端,才能讓FTP軟體透過SFTP(SSH File Transfer Protocol)方式連線Ubuntu系統。Ubuntu 預設已安裝了 SSH客戶端,因此,還需要安裝 SSH服務端,安裝方法是,在Ubuntu系統中開啟一個命令列終端,執行如下命令:

sudo apt-get install openssh-server

安裝後,可以使用如下命令登入本機:

ssh localhost

執行該命令後會出現提示資訊(SSH首次登入提示),輸入“yes”,然後按提示輸入密碼hadoop,就登入到本機了。

首先,請輸入命令“exit”退出剛才的SSH,就回到了原先的終端視窗;然後,可以利用ssh-keygen生成金鑰,並將金鑰加入到授權中,命令如下:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

此時,再執行ssh localhost命令,無需輸入密碼就可以直接登入了

安裝JAVA

執行如下命令建立“/usr/lib/jvm”目錄用來存放JDK檔案:

cd /usr/lib
sudo mkdir jvm #建立/usr/lib/jvm目錄用來存放JDK檔案

執行如下命令對安裝檔案進行解壓縮:

cd ~ #進入hadoop使用者的主目錄
cd Downloads
sudo tar -zxvf ./jdk-21——linux-x64_bin.tar.gz -C /usr/lib/jvm

下面繼續執行如下命令,設定環境變數:

vim ~/.bashrc

上面命令使用vim編輯器開啟了hadoop這個使用者的環境變數配置檔案,請在這個檔案的開頭位置,新增如下幾行內容:

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

儲存.bashrc檔案並退出vim編輯器。然後,繼續執行如下命令讓.bashrc檔案的配置立即生效:

source ~/.bashrc

這時,可以使用如下命令檢視是否安裝成功:

java -version

安裝Hadoop

Hadoop包括三種安裝模式:

•單機模式:只在一臺機器上執行,儲存是採用本地檔案系統,沒有采用分散式檔案系統HDFS;

•偽分散式模式:儲存採用分散式檔案系統HDFS,但是,HDFS的名稱節點和資料節點都在同一臺機器上;

•分散式模式:儲存採用分散式檔案系統HDFS,而且,HDFS的名稱節點和資料節點位於不同機器上。

本教程採用的Hadoop版本是3.1.3,可以到Hadoop官網下載安裝檔案(http://mirrors.cnnic.cn/apache/hadoop/common/)

請使用hadoop使用者登入Linux系統,開啟一個終端,執行如下命令:

sudo tar -zxf ~/下載/hadoop-3.3.6.tar.gz -C /usr/local  # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.3.6/ ./hadoop   # 將資料夾名改為hadoop
sudo chown -R hadoop ./hadoop    # 修改檔案許可權

Hadoop解壓後即可使用,可以輸入如下命令來檢查 Hadoop是否可用,成功則會顯示 Hadoop版本資訊:

cd /usr/local/hadoop
./bin/hadoop version

Hadoop預設模式為非分散式模式(本地模式),無需進行其他配置即可執行。Hadoop附帶了豐富的例子,執行如下命令可以檢視所有例子:

cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar

這裡選擇執行grep例子

cd /usr/local/hadoop
mkdir input
cp ./etc/hadoop/*.xml ./input  # 將配置檔案複製到input目錄下
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*     # 檢視執行結果

Hadoop檔案配置

配置/usr/local/hadoop/etc/hadoop/hdfs-site.xml檔案,命令如下:

<configuration>
        <property>
                <name>dfs.reolication</name>
                <value>1</value>
        </property>
         <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

配置/usr/local/hadoop/etc/hadoop/core-site.xml檔案,命令如下:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

/usr/local/hadoop/sbin/start-dfs.sh和stop-dfs.sh檔案:

HDFS_DATANODE_USER=root  
HDFS_DATANODE_SECURE_USER=hdfs  
HDFS_NAMENODE_USER=root  
HDFS_SECONDARYNAMENODE_USER=root

/usr/local/hadoop/sbin/start-yarn.sh和stop-yarn.sh檔案:

YARN_RESOURCEMANAGER_USER=root
YARN_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

配置/usr/local/hadoop/etc/hadoop/hadoop-env.sh檔案,命令如下

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export HADOOP_HOME=/usr/local/hadoop

配置/usr/local/hadoop/etc/hadoop/mapred-site.xml檔案,命令如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

配置yarn-site.xml檔案,命令如下:

<configuration>
        <property>
                <name>yarn.nodemanager.aus-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

最後執行命令進行格式化:

hadoop namenode -format

環境變數配置

輸出命令:

vim /etc/profile

然後進行如下配置:

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

然後輸入命令使配置生效:

source /etc/profile

最後到Hadoop的sbin目錄下,執行start-all.sh即可(執行這個則一次將其他sh一起啟動了):

./start-all.sh

然後執行以下jps,檢視是不是都啟動了:

jps

安裝Hbase

解壓安裝包hbase-2.4.14-bin.tar.gz至路徑 /usr/local,命令如下:

sudo tar -zxf ~/Downloads/hbase-2.5.8-bin.tar.gz -C /usr/local

將解壓的檔名hbase-2.5.8-bin.tar.gz改為hbase,以方便使用,命令如下:

sudo mv /usr/local/hbase-2.5.8 /usr/local/hbase

將hbase下的bin目錄新增到path中,這樣,啟動hbase就無需到/usr/local/hbase目錄下,大大的方便了hbase的使用。

編輯 ~/.bashrc 檔案

sudo vi ~/.bashrc

在"export PATH=$PATH:..."後新增

:/usr/local/hbase/bin

編輯完成後,再執行source命令使上述配置在當前終端立即生效,命令如下:

source ~/.bashrc

新增HBase許可權

cd /usr/local
sudo chown -R hadoop ./hbase       #將hbase下的所有檔案的所有者改為hadoop,hadoop是當前使用者的使用者名稱。

檢視HBase版本,判斷是否安裝成功

/usr/local/hbase/bin/hbase version

HBase有三種執行模式,單機模式、偽分散式模式、分散式模式。以下先決條件很重要,如果沒有配置好,就會報錯:

jdk
Hadoop(偽分散式模式需要)
SSH

配置hbase-env.sh

vim /usr/local/hbase/conf/hbase-env.sh

配置JAVA_HOMEHBASE_CLASSPATHHBASE_MANAGES_ZK

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export HBASE_CLASSPATH=/usr/local/hbase/conf 
export HBASE_MANAGES_ZK=true

配置hbase-site.xml。用vim開啟並編輯hbase-site.xml,命令如下:

vim /usr/local/hbase/conf/hbase-site.xml

修改hbase.rootdir,指定HBase資料在HDFS上的儲存路徑;

將屬性hbase.cluter.distributed設定為true;

假設當前Hadoop叢集執行在偽分散式模式下,在本機上執行,且NameNode執行在9000埠。

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>

hbase.rootdir指定HBase的儲存目錄;hbase.cluster.distributed設定叢集處於分散式模式。

測試執行HBase

第一步:首先登陸ssh,之前設定了無密碼登陸,因此這裡不需要密碼;

第二步:再切換目錄至/usr/local/hadoop

第三步:啟動hadoop(如果已經啟動hadoop請跳過此步驟)。

ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

輸入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已經成功啟動,表示hadoop啟動成功,如下:

xxxx DataNode
xxxx NameNode
xxxx SecondaryNameNode
xxxx Jps

切換目錄至/usr/local/hbase,啟動HBase:

cd /usr/local/hbase
bin/start-hbase.sh

啟動成功,輸入命令jps,看到以下介面說明Hbase啟動成功:

xxxx SecondaryNameNode
xxxx HMaster
xxxx NameNode
xxxx DataNode
xxxx Jps
xxxx HRegionServe
xxxx HQuorumPeer

進入Shell介面:

hbase shell

停止HBase執行:

stop-hbase.sh

安裝MySQL服務端和客戶端

相關命令:

sudo apt-get install mysql-server
sudo apt-get install mysql-client

修改mysql的配置檔案

在終端中輸入

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改mysql的配置檔案,在內容[mysqld]之後,任意新建一行,新增文字並儲存

skip-grant-tables

mysql登入操作

重啟mysql服務:

service mysql restart
mysql -u root -p

無需輸入密碼,直接回車,即可登入

mysql修改登入密碼操作

先切換到名為mysql的資料庫

use mysql

更新user表中的root使用者的密碼,本例設定密碼為123

update user set authentication_string='123' where user = 'root';
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

退出mysql終端:

quit

恢復前面所修改的mysql配置檔案

刪除或註釋掉所新增skip-grant-tables,並儲存

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
mysql -u root -p

密碼為前面設定的密碼123

下載MySQL JDBC驅動程式

為了讓Hive能夠連線到MySQL資料庫,需要下載MySQL JDBC驅動程式。可以到MySQL官網(http://www.mysql.com/downloads/connector/j/)下載mysql-connector-j-8.3.0.tar.gz。

在Linux系統中開啟一個終端,在終端中執行如下命令解壓縮檔案:

cd ~
tar -zxvf mysql-connector-j-8.3.0.tar.gz   #解壓
#下面將mysql-connector-j-8.3.0-bin.jar複製到/usr/local/hive/lib目錄下
sudo cp mysql-connector-j-8.3.0/mysql-connector-j-8.3.0-bin.jar  /usr/local/hive/lib

Hive的安裝部署

將Hive的安裝檔案“apache-hive-3.1.2-bin.tar.gz”複製到當前使用者目錄中

在終端中輸入

sudo tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local

對解壓縮輸出資料夾進行重新命名為Hive,並授予當前使用者訪問許可權

cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive
sudo chown -R hadoop hive

將安裝的驅動程式資料夾中的JAR檔案“mysql-connector-j-8.3.0.jar”複製到Hive安裝目錄的lib資料夾中

編輯使用者的環境變數配置檔案

sudo vim ~/.bashrc

在檔案的開頭位置,新增如下幾行內容:

export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
export PATH=PATH:HIVE_HOME/bin

讓環境變數設定生效

source ~/.bashrc

將“/usr/local/hive/conf”目錄下的hive-default.xml.template檔案重新命名為hive-default.xml,命令如下:

cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml

使用vim編輯器新建一個檔案hive-site.xml,命令如下:

cd /usr/local/hive/conf
vim hive-site.xml

在hive-site.xml中輸入如下配置資訊:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

Hive訪問MySQL的使用者名稱設定為hive 密碼被設定為hive

檢視目錄“/usr/local/Hadoop/share/Hadoop/common/lib”目錄下guava.jar的版本
檢視目錄“/usr/local/hive/lib”目錄下guava.jar的版本
檢查hadoop和hive的guava.jar的版本是否一致
如果不一致,則啟動hive會出錯。
解決方法:刪除低版本guava.jar,用高版本的guava.jar代替
如:hadoop 3.1.3的guava為guava-27.0-jre,hive3.1.2的guava為guava-19.0。

Hive連線MySQL的配置

啟動MySQL

在MySQL中為Hive新建資料庫

配置MySQL允許Hive接入

相關命令:

CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
GRANT ALL ON *.* TO 'hive'@'localhost';
flush privileges;

啟動Hive

啟動Hive之前,需要先啟動Hadoop叢集 偽分散式

start-dfs.sh

再執行如下命令初始化

cd /usr/local/hive
bin/schematool -dbType mysql -initSchema

hive命令啟動Hive

MySQL命令

啟動MySQL服務

在終端輸入:

service mysql start

檢視MySQL版本

在MySQL命令列輸入:

status;

刪除使用者

DROP USER <使用者1> [ , <使用者2> ]...

注意:

  • DROP USER語句可用於刪除一個或多個使用者,並撤銷其許可權
  • 使用DROP USER語句必須擁有MySQL資料庫的DELETE許可權或全域性CREATE USER許可權
  • 在DROP USER語句的使用中,若沒有明確地給出賬戶的主機名,則該主機名預設為"%"

相關文章