一.安裝mysql并且實現(xiàn)外部連接
1.下載mysql客戶端
網(wǎng)址 :??https://dev.mysql.com/downloads/mysql/5.6.html#downloads
下載好壓縮包之后走越,上傳到虛擬機上?
1.解壓: tar -zxvf? mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz
2.重命名 :? mv?mysql-5.6.44-linux-glibc2.12-x86_64 mysql
3.創(chuàng)建mysql組和用戶:
????????groupadd mysql
????????useradd -r -g mysql mysql
4.添加配置文件my.cnf,并修改相關配置
cp support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
basedir = /usr/local/mysql? ?-------------------------安裝目錄
datadir = /usr/local/mysql/data ---------------------安裝目錄下的data
port = 3306 ----------------------------------------------端口
log-err = /usr/local/mysql/data/error.log ----------日志
pid-file = /usr/local/mysql/data/mysql.pid --------- pid不要動
5. 修改權限
chown -R mysql?/usr/local/mysql(mysql的安裝路徑)
chgrp -R mysql?/usr/local/mysql(mysql的安裝路徑)
(mysql安裝路徑)/scripts/mysql_install_db --user=mysql
chown -R root?/usr/local/mysql(mysql的安裝路徑)
chown -R mysql?/usr/local/mysql/data
6.初始化數(shù)據(jù)庫
在scripts下有一個 mysql_install_db文件
執(zhí)行:
mysql_install_db --verbose --user=root --defaults-file=/etc/my.cnf --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --pid-file=/usr/local/mysql/data/mysql.pid --tmpdir=/tmp
datadir? --->對應/etc/my.cnf 中配置的datadir
basedir --->mysql的安裝目錄
pid-file? ---> (mysql安裝目錄)/data/mysql.pid (不需要有這個文件)
7.執(zhí)行
bin/mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock --user=root &
執(zhí)行不完地来,不要強制停止,重新開啟一個shell
8.設置開機自啟動
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldcp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
chmod 700 /etc/init.d/mysql
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
chown mysql:mysql -R /usr/local/mysql/
重新啟動linux: init 6
查看mysql狀態(tài) :?service mysqld status
參考文章: https://www.cnblogs.com/duanrantao/p/8988116.html
9.添加遠程訪問權限内颗。
ln -s /usr/local/mysql/bin/mysql /usr/bin (mysql的安裝路徑)
進入mysql : mysql -uroot -p
執(zhí)行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'duan' with grant option;
執(zhí)行:Flush privileges;
重啟linux 垮庐。
10.設置mysql密碼
修改mysql密碼,進入mysql shell :mysql -u root -p (沒密碼直接回車)
格式:set password for 用戶名@localhost = password('新密碼');?
樣例: set password for root@localhost = password('123'); //不要忘了引號
11.win連接虛擬機mysql(前提是虛擬機和win環(huán)境之間ping的通)
1 . 在安裝mysql的虛擬機上執(zhí)行 :? service iptables status(查看防火墻狀態(tài))
2 . 查看所有端口 netstat -ntlp
可以看到3306已經(jīng)開放秋茫,如果未開放 執(zhí)行 :
vim /etc/sysconfig/iptables?
并再文件中添加一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重啟防火墻 : service iptables restart
連接測試(成功):
二 . 安裝hive
1.下載hive安裝包 :?http://mirror.bit.edu.cn/apache/hive/hive-2.3.5/
下載完成后上傳至linux自定義文件夾(以/opt 為例)?apache-hive-2.3.5-bin.tar.gz
2 . 解壓
tar -zxvf?apache-hive-2.3.5-bin.tar.gz
3 . 修改hive相關配置
????hive-site.xml
有個很坑爹的地方就是這個文件在conf里沒有工猜,我這個包是在路徑:
/opt/apache-hive-2.3.5-bin/hcatalog/etc/hcatalog/proto-hive-site.xml
把這個文件復制到conf里并改名??hive-site.xml?
添加配置
<property>
? ? <name>javax.jdo.option.ConnectionURL</name>
? ? <value>jdbc:mysql://localhost:3306/hive_metadata?&createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<property>
? ? <name>javax.jdo.option.ConnectionUserName</name>
? ? <value>root</value>
</property>
<property>
? ? <name>javax.jdo.option.ConnectionPassword</name>
? ? <value>root</value>
</property>
<property>
? ? <name>javax.jdo.option.ConnectionDriverName</name>
? ? <value>com.mysql.jdbc.Driver</value>
</property>
<property>
? ? <name>datanucleus.schema.autoCreateAll</name>
? ? <value>true</value>
</property>
<property>
? ? <name>hive.metastore.schema.verification</name>
? ? <value>false</value>
</property>
添加mysql驅動包在hive里
下載 :?https://dev.mysql.com/downloads/connector/j/
下載后解壓,把下圖jar包上傳至hive安裝目錄下的 lib 文件夾
上傳后結果:
4.配置hive的環(huán)境變量(省略)
5.初始化hive
執(zhí)行:schematool -dbType mysql -initSchema
6.環(huán)境變量配置成功的情況下币狠,任意位置輸入hive 游两,執(zhí)行幾個簡單的語句試試吧。
三 . java API操作HIVE
pom.xml
? <dependency>
? ? ? ? ? ? <groupId>org.apache.hive</groupId>
? ? ? ? ? ? <artifactId>hive-jdbc</artifactId>
? ? ? ? ? ? <version>2.3.5</version>
? ? ? ? </dependency>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.apache.hadoop</groupId>
? ? ? ? ? ? <artifactId>hadoop-common</artifactId>
? ? ? ? ? ? <version>2.7.6</version>
? ? ? ? </dependency>
導包:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
代碼:
private static StringdriverName ="org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args)throws SQLException {
try {
Class.forName(driverName);
? ? }catch (ClassNotFoundException e) {
e.printStackTrace();
? ? ? ? System.exit(1);
? ? }
Connection con = DriverManager.getConnection("jdbc:hive2://192.168.242.252:10000/default","root","root");
? ? Statement stmt = con.createStatement();
? ? String tableName ="helloHive";
? ? stmt.execute("drop table if exists " + tableName);
? ? stmt.execute("create table " + tableName +" (key int,value string)");
? ? System.out.println("create table success !!!");
? ? con.close();
}
1.打開hive的10000端口
1. hive?--service?metastore&? ? 如果運行不結束不要強行停止总寻,新開一個shell
2. hive?--service?hiveserver2&? ?如果運行不結束不要強行停止器罐,新開一個shell
3. netstat -ntulp |grep 10000? ?檢查端口是否開啟
2.運行代碼
1報錯:
java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://hdp3:10000/default: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous
需要提供HDFS的RESTful接口,可通過此接口進行HDFS文件操作渐行。
在? hdfs-site.xml 中添加
<property>
<name>dfs.webhdfs.enabled</name>?
<value>true</value>?
</property>
在? core-site.xml 中
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
再次運行就沒問題了轰坊。