網路卡
在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_HOME,HBASE_CLASSPATH,HBASE_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語句的使用中,若沒有明確地給出賬戶的主機名,則該主機名預設為"%"