在安裝Hadoop,mysql,hive以前,首先要保證電腦上安裝了jdkhtml
一.配置jdkjava
1. 下載jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlnode
2. 配置環境變量
(1)在終端使用 sudo su 命令進入root用戶模式;mysql
(2)使用 vim /etc/profile 命令打開profile文件,按下大寫「I」進入編輯模式,在文件中添加如下信息:sql
JAVA_HOME對應的是你的JDK安裝路徑數據庫
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home" CLASS_PATH="$JAVA_HOME/lib" PATH=".;$PATH:$JAVA_HOME/bin" export JAVA_HOME
(3)使用「esc」鍵推出編輯模式,按下「:」,輸入wq並回車,保存且退出。apache
(4)退出終端並從新打開,輸入java -version 命令查看jdk配置狀況。vim
二.配置hadoop瀏覽器
1. 下載Hadoop
Hadoop 2.7.7鏡像下載連接:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
session
2. 將下載後的壓縮文件複製到/Users/finup/opt目錄下並解壓
3. 配置Hadoop
(1).進入/Users/finup/opt/hadoop-2.7.7/etc/hadoop/目錄下,修改hadoop-env.sh配置文件
首先要查看JAVA_HOME的安裝路徑:
輸入如下命令:/usr/libexec/java_home
/usr/libexec/java_home 結果:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
而後修改hadoop-env.sh配置文件
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home" export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
(2).配置hdfs地址和端口
進入/Users/finup/opt/hadoop-2.7.7/etc/hadoop/目錄下,修改core-site.xml配置文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/Users/finup/opt/hadoop-2.7.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hadoop.tmp.dir 表示本身進程產生的一些數據要放入到該目錄中
fs.defaultFS用於設置Hadoop的默認文件系統,設置爲「hdfs://localhost:9000」。localhost表示namenade,9000表示端口號。 HDFS的守護程序經過該屬性項來肯定HDFS namenode的主機和端口。
(3).配置HDFS的默認參數副本數
進入/Users/finup/opt/hadoop-2.7.7/etc/hadoop/目錄下,修改hdfs-site.xml配置文件
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/Users/finup/opt/hadoop-2.7.7/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/Users/finup/opt/hadoop-2.7.7/tmp/dfs/data</value> </property> </configuration>
dfs.replication 表示複本數,文件會被保存爲幾分。dfs.replication的value設置爲「1」,這樣HDFS就不會按默認設置將文件系統塊複本設置爲3。不然在單獨一個datanode上運行時,HDFS沒法將塊複製到3個datanode上,因此會持續給出塊複本不足的警告。
(4).配置mapreduce中jobtracker的地址和端口
進入/Users/finup/opt/hadoop-2.7.7/etc/hadoop/目錄下,修改mapred-site.xml.template配置文件
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
(5).修改配置文件 yarn-site.xml
進入/Users/finup/opt/hadoop-2.7.7/etc/hadoop/目錄下,修改yarn-site.xml配置文件
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
(6).文件系統初始化
進入到Hadoop安裝路徑的bin目錄下,使用命令 ./hadoop namenode -format 進行初始化,初始化成功會輸出如下信息,注意紅框標記處。
(7).配置Hadoop環境變量
目的是方便在任意目錄下全局開啓關閉hadoop相關服務,而不須要到/Users/finup/opt/hadoop-2.7.7/sbin下去執行啓動或關閉命令。使用命令 vim ~/.zshrac 進行編輯,添加如下內容:(注意:zshrac是本身建立的,不要糾結本身找不到這個文件)
export HADOOP_HOME=/Users/finup/opt/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
而後使用source ~/.zshrac命令使修改生效,以上關於Hadoop的配置所有結束。
4.啓動hadoop
(1).啓動/關閉hadoop服務
進入sbin目錄下,使用./start-dfs.sh命令啓動,而後使用jps查看啓動結果,啓動成功以下圖所示:
咱們在瀏覽器中輸入http://localhost:50070打開如下網頁,能夠查看 NameNode 和 Datanode 信息,還能夠在線查看 HDFS 中的文件。
使用./stop-dfs.sh命令關閉hadoop服務
(2).啓動/關閉yarn服務
使用./start-yarn.sh命令啓動yarn服務,讓 yarn來負責資源管理與任務調度。啓動成功後,使用jps命令能夠輸出如下信息:
比以前只啓動Hadoop服務時多了一個NodeManager和ResourceManager,而後在瀏覽器中打開http://localhost:8088,能夠經過 Web 界面查看任務的運行狀況。
使用./stop-yarn.sh命令來關閉yarn服務。
(3) 快速啓動和關閉
進入sbin目錄下,直接使用命令 ./start-all.sh和./stop-all.sh命令能夠同時啓動和關閉hadoop和yarn服務,比依次啓動和關閉方便不少。
三.安裝mysql
可參考該連接:https://jingyan.baidu.com/article/fa4125ac0e3c2928ac709204.html
四.安裝hive
首先要保證hadoop和mysql已經安裝好了
1.在mysql數據庫建立hive用戶
mysql> create user 'hive' identified by 'hive';
2.將mysql的全部權限受權給hive用戶
mysql> grant all on *.* to 'hive'@'localhost' identified by 'hive';
3.刷新mysql使一、2步驟生效
mysql> flush privileges;
4.輸入sql語句查詢hive用戶是否存在
mysql> select host,user,authentication_string from mysql.user; +-----------+---------------+-------------------------------------------+ | host | user | authentication_string | +-----------+---------------+-------------------------------------------+ | localhost | root | *D391E96D137871ED52CDB352D867D3549815A718 | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | % | hive | *4DF1D66463C18D44E3B001A8FB1BBFBEA13E27FC | | localhost | hive | *4DF1D66463C18D44E3B001A8FB1BBFBEA13E27FC | +-----------+---------------+-------------------------------------------+
5.使用hive用戶登陸mysql
wudejin:~ oldsix$ mysql -u hive -p Enter password: hive mysql>
6.建立hive數據庫
mysql> create database hive;
7.查看是否建立成功
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | hive | | mysql | | performance_schema | | sys | | test | +--------------------+ 6 rows in set (0.00 sec)
至此,前期的準備工做已完成,接下來,咱們進入hive的安裝過程。
8.下載hive安裝包並解壓
下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
下載完成後,經過命令行解壓:
tar -zxvf apache-hive-3.1.1-bin.tar.gz
解壓完成以後,對解壓出來的文件夾重命名
mv apache-hive-3.1.1-bin hive3.1.1
9.修改hive配置:
進入hive3.1.1目錄下的bin目錄下,修改hive-site.xml配置文件
bin目錄下不存在hive-site.xml文件,咱們須要先複製一份:
cp hive-default.xml.template hive-site.xml
修改hive-site.xml文件:
--修改數據庫鏈接驅動名 (配置文件中須要將該配置去掉) <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> --修改數據庫鏈接URL (配置文件中須要將該配置去掉) <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</value> <description> JDBC connect string for a JDBC metastore. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database. </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> --修改hive數據目錄(三處) (配置文件中須要將該配置去掉) <property> <name>hive.querylog.location</name> <value>/Users/finup/opt/hive3.1.1/iotmp</value> <description>Location of Hive run time structured log file</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/Users/finup/opt/hive3.1.1/iotmp</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/Users/finup/opt/hive3.1.1/iotmp</value> <description>Temporary local directory for added resources in the remote file system.</description> </property> --能夠將表頭顯示出來 (配置文件中須要將該配置去掉) <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description> </property>
10.配置hive環境變量
cd ~ sudo vi .base_profile
設置HIVE_HOME,並添加到PATH
export HIVE_HOME=/Users/finup/opt/hive3.1.1 export PATH=$PATH:$HIVE_HOME/bin
保存退出,並使環境變量生效
source .base_profile
11.將對應數據庫的驅動包放到hive目錄下的lib目錄下
下載mysql-connector-java-8.0.16.jar,並上傳至hive的lib目錄下
12.初始化元數據庫:schematool -dbType mysql -initSchema
13.進入hadoop安裝目錄,啓動hadoop
/sbin/start-all.sh
14.啓動hive
進入hive的bin目錄下,執行命令: ./hive
15.退出hive命令
exit
hive (zcfw_sda)> exit;
四.安裝sqoop
1. 安裝和配置
brew install sqoop sqoop version cd /usr/local/Cellar/sqoop/1.4.6/libexec/conf cp sqoop-env-template.sh sqoop-env.sh vim sqoop-env.sh export HADOOP_HOME="/Users/finup/opt/hadoop-2.7.7" export HBASE_HOME="/usr/local" export HIVE_HOME="/Users/finup/opt/hive3.1.1" export HCAT_HOME="/usr/local" export ZOOCFGDIR="/usr/local/etc/zookeeper" export ZOOKEEPER_HOME="/usr/local/opt/zookeeper"
2. 測試
sqoop list-tables --connect jdbc:mysql://localhost/test --username root --password ***** sqoop eval --connect jdbc:mysql://localhost/test --username root --password ***** --query "select * from test.student"
3. 遇到的問題
問題1
java.lang.Exception: java.lang.RuntimeException:java.lang.ClassNotFoundException: Class example not found
緣由和解決方法:hadoop 單機模式下沒法找到執行目錄,切換到僞分佈模式能夠解決
問題2
No primary key could be found for table test_table. Please specify one with –split-by or perform a sequential import with ‘-m 1’.
緣由和解決方法:sqoop導入時依賴於MySQL原表的主鍵索引進行切片,沒有添加主鍵索引會報錯,給原表加上 primary key 或者 在 命令行末尾 加上 -m 1
4. 導入實例
# 建立mysql表 CREATE TABLE `example` ( `id` int(11) NOT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 # 插入數據 mysql> select * from example; +----+-------+ | id | name | +----+-------+ | 1 | hello | | 2 | world | +----+-------+ 2 rows in set (0.00 sec) # 建立 hive 表 create table example(id int, name string) row format delimited fields terminated by '\t' lines terminated by '\n'; # 將mysql表導入hadoop sqoop import -connect jdbc:mysql://localhost/test --username root --password mima123456 --table example # 將生成的文件導入hive load data inpath 'hdfs://localhost:9000/user/max/example/part-m-00000' into table example # 以上兩步能夠合併爲一步完成 sqoop import --connect jdbc:mysql://localhost/test --username root --password mima123456 --table example --hive-import --hive-overwrite --hive-table example --fields-terminated-by '\t'