Centos7 + Hadoop-2.6.0 + hive-2.3.3 + sqoop-1.4.7.bin_hadoop-2.6.0

一、環境準備

1.服務器選擇

本地虛擬機
操作系統:linux CentOS 7
Cpu:2核
內存:2G
硬盤:40G

具體教程和使用可參考一下博文。
地址: http://blog.csdn.net/qazwsxpcm/article/details/78816230。

2.配置選擇

JDK:1.8 (jdk-8u144-linux-x64.tar.gz)
Hadoop:2.6.0 (hadoop-2.6.0.tar.gz)
Hive: 2.3.3 (apache-hive-2.3.3-bin.tar.gz)

3.下載地址

JDK:http://www.oracle.com/technetwork/java/javase/downloads
Hadopp:http://www.apache.org/dyn/closer.cgi/hadoop/common
Hivehttp://mirror.bit.edu.cn/apache/hive/

二、服務器的相關配置

在配置之前,應該先做一下配置。

做這些配置爲了方便,使用root權限。

1.更改主機名

首先更改主機名,目的是爲了方便管理。
輸入:

hostname

查看本機的名稱
然後更改主機名爲master
輸入:

hostnamectl set-hostname master

注:主機名稱更改之後,要重啓(reboot)纔會生效。

2.做IP和主機名的映射

修改hosts文件,做關係映射

輸入:

vim /etc/hosts

添加主機的ip 和 主機名稱 :192.168.135.110 master

3.關閉防火牆

關閉防火牆,方便訪問。

CentOS 7版本以下輸入:

關閉防火牆:

service iptables stop

CentOS 7 以上的版本輸入:

systemctl stop firewalld.service

4.時間設置

查看當前時間輸入:

date

查看服務器時間是否一致,若不一致則更改

更改時間命令:

date -s ‘MMDDhhmmYYYY.ss’

三、Hadoop安裝和配置

1.環境變量設置

解壓文件

tar -zxvf hadoop-2.6.0.tar.gz -C /opt/hadoop/

配置環境變量 編輯 /etc/profile 文件 :

vim /etc/profile

配置文件:

#java
export JAVA_HOME=/usr/local/solr/jdk1.8.0_191

#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-2.6
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

 

2.配置文件更改

先切換到/opt/hadoop/hadoop-2.6/etc/hadoop目錄下

3.2.1 修改 core-site.xml

輸入:

vim core-site.xml

在文件中添加:

<configuration>
   <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
   </property>
   <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
   </property>
   <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
   </property>
   <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
   </property>
</configuration>

3.2.2修改 hadoop-env.sh

輸入:

vim hadoop-env.sh

將${JAVA_HOME} 修改爲自己的JDK路徑

export JAVA_HOME=${JAVA_HOME}

修改爲:

export JAVA_HOME=/home/java/jdk1.8

3.2.3修改 hdfs-site.xml

輸入:

vim hdfs-site.xml

在添加:

<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>
<property>
   <name>dfs.permissions</name>
   <value>false</value>
   <description>need not permissions</description>
</property>

3.2.4 修改mapred-site.xml

如果沒有 mapred-site.xml 該文件,就複製mapred-site.xml.template文件並重命名爲mapred-site.xml。
輸入:

vim mapred-site.xml

修改這個新建的mapred-site.xml文件,在節點內加入配置:

<property>
    <name>mapred.job.tracker</name>
    <value>master:9001</value>
</property>
<property>
    <name>mapred.local.dir</name>
    <value>/root/hadoop/var</value>
</property>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

3.2.5 修改yanr-site.xml

<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>${yarn.resourcemanager.hostname}:8099</value>
</property>

3.Hadoop啓動

啓動之前需要先格式化
切換到/opt/hadoop/hadoop-2.6/bin目錄下
輸入:

./hadoop  namenode  -format

格式化成功後,再切換到/opt/hadoop/hadoop-2.6/sbin目錄下
啓動hdfs和yarn
輸入:

start -dfs.sh
start -yarn.sh

啓動成功後,輸入jsp查看是否啓動成功
在瀏覽器輸入 ip+8088 和ip +50070 界面查看是否能訪問
能正確訪問則啓動成功

四、Mysql安裝

因爲Hive的默認元數據是Mysql,所以先要安裝Mysql。

Mysql有兩種安裝模式,可自行選擇。所有操作都切換到root用戶下

1.yum安裝

首先查看mysql 是否已經安裝
輸入:

rpm  -qa | grep mysql   

如果已經安裝,想刪除的話,有兩種方式
普通刪除命令:

rpm -e mysql

強力刪除命令:

rpm -e --nodeps mysql 

依賴文件也會刪除 
安裝mysql
輸入:

yum list mysql-server 

如果沒有,則通過wget命令下載該包
安裝MySQL官方的Yum Repository輸入:

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
下載rpm包:
yum -y install mysql57-community-release-el7-10.noarch.rpm

下載成功之後,安裝mysql服務

yum -y install mysql-community-server

在安裝過程中遇到選擇輸入y就行了

安裝成功後,輸入

systemctl start  mysqld.service

啓動服務

查看mysql運行狀態:

systemctl status mysqld.service

安裝完成後默認有一個root用戶,初始密碼已經設置好,我們需要獲得這個初始密碼登錄後再對其進行修改。爲了加強安全性,MySQL5.7root用戶隨機生成了一個密碼,在error log中,關於error log的位置,如果安裝的是RPM包,則默認是/var/log/mysqld.log 只有啓動過一次mysql纔可以查看臨時密碼

通過下面的命令查看初始密碼,冒號後面的字符就是密碼

grep 'temporary password' /var/log/mysqld.log

登錄root用戶

mysql -u root -p

提示輸入密碼,輸入初始密碼,使用該密碼之後需要設置自己的密碼,但是mysql對密碼有要求,我們想要設置簡單的密碼必須要修改約束,修改兩個全局參數:

  • validate_password_policy代表密碼策略,默認是1:符合長度,且必須含有數字,小寫或大寫字母,特殊字符。設置爲0判斷密碼的標準就基於密碼的長度了。一定要先修改兩個參數再修改密碼
mysql> set global validate_password_policy=0;
  • validate_password_length代表密碼長度,最小值爲4
mysql> set global validate_password_length=4;

修改密碼爲root,之後就可以使用該密碼登錄了

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

通過授權法更改遠程連接權限
輸入:

mysql> grant all privileges  on *.* to root@'%' identified by "root";


注: 第一個’%’是所有的ip都可以遠程訪問,第一個’root’是用戶名,第二個’root表示 用戶密碼 如果不常用 就關閉掉
輸入:

mysql> flush privileges;

//刷新

在防火牆關閉之後,使用連接工具測試是否能正確連接

2.編譯包安裝

4.2.1 Mysql文件準備

將下載好的mysql安裝包上傳到linux服務器
解壓mysql解壓包,並移動到/usr/local目錄下,重命名爲mysql。
命令:

tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local
cd /usr/local
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql

注: mysql默認的路徑是就是/usr/local/mysql ,如果安裝的地方更改,需要更改相應的配置文件。

4.2.2 安裝mysql

切換到mysql的目錄 /usr/local/mysql
輸入:

 ./scripts/mysql_install_db  --user=mysql

成功安裝mysql之後,輸入

service mysql start 或 /etc/init.d/mysql start

查看是否啓動成功
輸入:

ps -ef|grep mysql

切換到 /usr/local/mysql/bin 目錄下
設置密碼

mysqladmin -u root password 'root'

進入mysql,輸入:

mysql -u root -p

設置遠程連接權限
輸入:

grant all privileges  on *.* to root@'%' identified by "root";

然後輸入:

flush privileges;

使用本地連接工具連接測試。

五、Hive環境安裝和配置

1.文件準備

將下載下來的Hive 的配置文件進行解壓
在linux上輸入:

tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /opt/hive

然後移動到/opt/hive 裏面,將文件夾重命名爲 hive-2.3
輸入

mv apache-hive-2.3.3-bin hive-2.3

2.環境配置

編輯 /etc/profile 文件
輸入:

vim /etc/profile

添加:

export HIVE_HOME=/opt/hive/hive-2.3
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HIVE_HOME}/bin:$PATH
輸入:
source /etc/profile

使配置生效

3.配置更改

5.3.1新建文件夾

在修改配置文件之前,需要先在root目錄下建立一些文件夾。

mkdir /root/hive
mkdir /root/hive/warehouse

新建完該文件之後,需要讓hadoop新建/root/hive/warehouse 和 /root/hive/ 目錄。
執行命令:

$HADOOP_HOME/bin/hadoop fs -mkdir -p /root/hive/
$HADOOP_HOME/bin/hadoop fs -mkdir -p /root/hive/warehouse

給剛纔新建的目錄賦予讀寫權限,執行命令:

$HADOOP_HOME/bin/hadoop fs -chmod 777 /root/hive/
$HADOOP_HOME/bin/hadoop fs -chmod 777 /root/hive/warehouse 

檢查這兩個目錄是否成功創建

輸入:

$HADOOP_HOME/bin/hadoop fs -ls /root/
$HADOOP_HOME/bin/hadoop fs -ls /root/hive/

可以看到已經成功創建

5.3.2 修改hive-site.xml

切換到/opt/hive/hive-2.3/conf目錄下
將hive-default.xml.template 拷貝一份,並重命名爲hive-site.xml
然後編輯hive-site.xml文件

cp hive-default.xml.template hive-site.xml
vim hive-site.xml

編輯hive-site.xml文件,在 中添加:

<!-- 指定HDFS中的hive倉庫地址 -->
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/root/hive/warehouse</value>
</property>
<property>
   <name>hive.exec.scratchdir</name>
   <value>/root/hive</value>
</property>
<!-- 該屬性爲空表示嵌入模式或本地模式,否則爲遠程模式 -->
<property>
  <name>hive.metastore.uris</name>
  <value></value>
</property>
<!-- 指定mysql的連接 -->
<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://master:3306/hive?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>123456</value>
</property>
<property>
   <name>hive.metastore.schema.verification</name>
   <value>false</value>
   <description></description>
</property>

然後將配置文件中所有的

${system:java.io.tmpdir}更改爲 /opt/hive/tmp
(如果沒有該文件則創建),
並將此文件夾賦予讀寫權限,將
${system:user.name} 更改爲 root

注: 由於hive-site.xml 文件中的配置過多,可以通過FTP將它下載下來進行編輯。也可以直接配置自己所需的,其他的可以刪除。 MySQL的連接地址中的master是主機的別名,可以換成ip。

5.3.3 修改 hive-env.sh

修改hive-env.sh 文件,沒有就複製 hive-env.sh.template ,並重命名爲hive-env.sh

在這個配置文件中添加

export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HIVE_CONF_DIR=/opt/hive/hive2.1/conf
export HIVE_AUX_JARS_PATH=/opt/hive/hive2.1/lib

5.3.4 添加mysql數據驅動包

由於Hive 默認自帶的數據庫是使用mysql,所以這塊就是用mysql
將mysql 的驅動包 上傳到 /opt/hive/hive-2.3/lib

cp mysql-connector-java-6.0.6.jar /opt/hive/hive-2.3/lib/

六、Hive Shell 測試

在成功啓動Hadoop之後
切換到Hive目錄下
輸入:

cd /opt/hive/hive-2.3/bin

首先初始化數據庫
初始化的時候注意要將mysql啓動
輸入:

 

schematool  -initSchema -dbType mysql

執行成功之後,可以看到hive數據庫和一堆表已經創建成功了

切換到 cd /opt/hive/hive2.1/bin
進入hive (確保hadoop以及成功啓動)輸入:

hive

進入hive 之後
做一些簡單的操作
新建一個庫,然後在建一張表
基本操作和普通的關係型數據庫差不多
創建庫:

create database db_hiveTest;

創建表:

create table db_hiveTest.student(
	id int,
	name string
)  
row format delimited fields terminated by '\t';

說明: terminated by '\t' 表示文本分隔符要使用Tab,行與行直接不能有空格。

加載數據
新打開一個窗口
因爲hive 不支持寫,所以添加數據使用load加載文本獲取。
新建一個文本

touch /opt/hive/student.txt

編輯該文本添加數據
輸入:

vim /opt/hive/student.txt

添加數據:
中間的空格符使用Tab建

1001	zhangsan
1002	lisi
1003	wangwu
說明: 文本可以在Windows上面新建,然後通過ftp上傳到linux中,需要注意文本的格式爲unix 格式。

切換到hive shell

加載數據

輸入:

load data local inpath '/opt/hive/student.txt' into table db_hivetest.student;

然後查詢該數據
輸入:

select * from db_hiveTest.student;
以服務方式啓動
$HIVE_HOME/bin/hive --service hiveserver2

連接測試

beeline
!connect jdbc:hive2://master:10000

$HIVE_HOME/bin/beeline -u jdbc:hive2//localhost:10000

七、sqoop安裝

1.安裝sqoop

下載sqoop https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/

解壓到指定目錄

 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/hive

重命名

mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7

添加環境變量

vim /etc/profile
export SQOOP_HOME=/opt/sqoop/sqoop-1.4.7
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin:${SQOOP_HOME}/bin:$PATH

使配置生效

source /etc/profile

2.添加mysql驅動包

cp mysql-connector-java-6.0.6.jar /opt/sqoop/sqoop-1.4.7/lib/

3.修改配置文件

7.3.1修改sqoop-env.sh

cd /opt/sqoop/sqoop-1.4.7/conf/

在sqoop的conf目錄下,添加配置文件,從模板複製就好

cp sqoop-env-template.sh sqoop-env.sh

vi sqoop-env.sh

配置

export HADOOP_COMMON_HOME= /opt/hadoop/hadoop-2.6
export HADOOP_MAPRED_HOME= /opt/hadoop/hadoop-2.6
export HIVE_HOME= /opt/hive/hive-2.3

檢驗是否正確安裝

sqoop version

8、故障解決

1.問題:

The server time zone value '�й���׼ʱ��' is unrecognized

解決:必須配置服務器或JDBC驅動程序(通過serverTimezone配置屬性)使用一個更具體的時區值如果你想利用時區支持。

在通過在數據庫連接URL後,加上?serverTimezone=UTC 

2.問題:

ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

解決:往/etc/profile最後加入

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*

然後刷新配置,source /etc/profile

3.問題:

ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
解決:%JAVA_HOME%\jre\lib\security\java.policy  添加如下內容:  
permission javax.management.MBeanTrustPermission "register";

 

4.問題:

ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;

解決:因sqoop與hive版本不一致導致,將$SQOOP_HOME/lib/jackson*.jar 文件bak,再把$HIVE_HOME/lib/jackson*.jar 拷貝至 $SQOOP_HOME/lib 目錄中,重新運行sqoop 作業,導入成功。

5.問題:

ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1

解決:找到HIVE_HOME下的lib文件夾,將文件夾中的libthrift-0.9.3.jar 拷貝到SQOOP_HOME路徑下的lib文件夾下面

6.問題:

Could not establish connection to jdbc:hive2://192.168.135.110:10000/default: Requiredfield 'serverProtocolVersion' is unset!
Struct:TOpenSessionResp(status:TStatus(statusCode:ERROR_STATUS,infoMessages[*org.apache.hie.service.cli.HiveSQLException:Failed to open new session: java.lang.RuntimeException:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.securit.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous

解決:修改hadoop的配置文件core-site.xml

cd /opt/hadoop/hadoop-2.6/etc/Hadoop

vi core-site.xml添加以下配置

<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.root.groups</name>
	<value>*</value>
</property>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章