hadoop11--resourcemanager的HA配置以及hive的基本概念和操作

hadoop概述

  1. HDFS 分佈式文件系統 用於存儲數據
  2. MapReduce 分佈式計算框架 用於計算數據 只適合離線分析 只專注於任務的執行, 任務的調度交給YARN
  3. YARN 雲操作系統 資源的調度可以運行MapReduce, spark, 擴展性更高一些
  4. zookeeper 協調集羣之間的同步
    1. 節點類型 命名爲znode 保存大小爲1M
      1. 持久類型 客戶端進行連接中斷之後, znode節點不會刪除
      2. 臨時類型 客戶端進行連接中斷之後, 節點會被刪除
    2. 投票機制—面試題
      1. 沒有數據的情況:
        通過myid給自己投票, 根據myid的大小絕點票數, 誰的票最多, 誰就是leader, 半數以上的的節點運行成功之後, 才能提供服務
      2. 有數據的情況:
        根據xid數據的更新版本號爲標準, 如果xid一樣則判斷myid的票數
    3. HA原理解答思路:
      1. 存在的服務: zookeeper, jnode, zkfc
      2. 什麼是HA?
        兩個節點:一個Active一個standby, 解決了namenode單點故障
        同步元數據:jnode節點同步edits編輯日誌, 也要是一個集羣, 安全性得到了保障, 一致性減弱了, 爲了解決一致性的問題, 需要存在zookeeper,用來監控集羣, 當某一個節點出現問題時, 找一個空閒節點來接替出現故障的節點
      3. 切換機制:
        首先要監控到namenode,當一個namanode出現故障的時候, 才能進行切換, 通過ZKFCRPC調用監控namenode, 一旦一個namenode出現故障, zookeeper就會通知另外一個namenode的zkfc的進程啓動standby,kill掉active執行一個ssh進程調用.

ResourceManager HA

一、集羣規劃(3臺)

PC01 PC02 PC03
NameNode NameNode
ZKFC ZKFC
  ResourceManager ResourceManager
DataNode DataNode DataNode
JournalNode JournalNode JournalNode
NodeManager NodeManager NodeManager
ZooKeeper ZooKeeper ZooKeeper

二、修改配置文件

=====yarn-site.xml
	<!--啓用resourcemanager ha-->
	<property>
	   <name>yarn.resourcemanager.ha.enabled</name>
	   <value>true</value>
	</property>
		
	<property>
	   <name>yarn.resourcemanager.cluster-id</name>
	   <value>rmcluster</value>
	</property>

	<property>
	   <name>yarn.resourcemanager.ha.rm-ids</name>
	   <value>rm1,rm2</value>
	</property>

	<property>
	   <name>yarn.resourcemanager.hostname.rm1</name>
	   <value>hadoop.senior02</value>
	</property>

	<property>
	   <name>yarn.resourcemanager.hostname.rm2</name>
	   <value>hadoop.senior03</value>
	</property>

	<!--指定zookeeper集羣的地址--> 
	<property>
	   <name>yarn.resourcemanager.zk-address</name>  
	   <value>hh1:2181,hh2:2181,hh3:2181</value>
	</property>

	<!--啓用自動恢復--> 
	<property>
	   <name>yarn.resourcemanager.recovery.enabled</name>
	   <value>true</value>
	</property>

	<!--指定resourcemanager的狀態信息存儲在zookeeper集羣--> 
	<property>
	   <name>yarn.resourcemanager.store.class</name>
	   <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
	</property>

三、分發配置文件

將yarn-site.xml分發到其他兩臺

	scp etc/hadoop/yarn-site.xml hh2:/opt/modules/hadoop-2.5.0/etc/hadoop/

	scp etc/hadoop/yarn-site.xml hh3:/opt/modules/hadoop-2.5.0/etc/hadoop/

四、啓動ResourceManagere

在PC2上:

	sbin/start-yarn.sh

在pc3上單獨啓動:

	sbin/yarn-daemon.sh start resourcemanager

五、查看狀態及測試

查看狀態

	bin/yarn rmadmin -getServiceState rm1      ##查看rm1的狀態
	bin/yarn rmadmin -getServiceState rm2      ##查看rm2的狀態

查看web界面

	hh2:8088
	hh3:8088

當PC02的ResourceManager是Active狀態的時候,訪問PC03的ResourceManager會自動跳轉到PC02的web頁面


	bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar pi 1 3	

【PC1】

	[hadoop@hadoop hadoop-2.5.0]$ jps
	12837 DataNode
	13199 DFSZKFailoverController
	13022 JournalNode
	13430 Jps
	9386 QuorumPeerMain
	13312 NodeManager
	12738 NameNod

【PC2】

	[hadoop@hadoop hadoop-2.5.0]$ jps
	9648 ResourceManager
	9260 NameNode
	9547 DFSZKFailoverController
	7184 QuorumPeerMain
	9422 JournalNode
	9329 DataNode
	10084 Jps
	9744 NodeManager

【PC3】

	[hadoop@hadoop hadoop-2.5.0]$ jps
	6815 ResourceManager
	6537 JournalNode
	5449 QuorumPeerMain
	6630 NodeManager
	6871 Jps
	6447 DataNode

Hive

Hive是什麼?

  • 主要用於解決海量數據的日誌分析, 是基於hadoop的數據倉庫工具, 可以把結構化的數據映射成一張表, 通過MR模板在YARN上運行MapReduce的程序

  • 運行SQL語句, 稱爲HQL, 本質上把HQL語句轉換爲MapReduce程序運行

  • 數據庫和數據倉庫的區別:
    數據庫直接存儲數據, 而數據倉庫不直接存儲數據, 數據存儲到HDFS 上

  • Hive的特點:
    優點: 簡單, 容易上手, 維護方便, 學習容易
    缺點: 自動生成的MapReduce程序不夠靈活, 智能, 效率方面不是很高

hive的安裝部署

  1. 課程中會用到Apache和CDH兩個版本
  2. 由於hive是依賴於hadoop的, 所以先把hadoop相關的服務啓動
  3. 配置hive
    –>解壓 tar -zxvf apache-hive-1.2.1-bin.tar.gz -C [一個安裝目錄]
    –>創建目錄用於保存hive的所有數據, 便於管理
    	bin/hdfs dfs -mkdir       /tmp
    	bin/hdfs dfs -mkdir       /user/hive/warehouse
    
    –>修改權限
    	bin/hdfs dfs -chmod g+w   /tmp
    	bin/hdfs dfs -chmod g+w   /user/hive/warehouse
    
  4. hive在HDFS上的默認路徑
       <property>
         <name>hive.metastore.warehouse.dir</name>
         <value>/user/hive/warehouse</value>
         <description>location of default database for the warehouse</description>
       </property>
    
  5. 修改hive-env.sh(改名)
    	# Set HADOOP_HOME to point to a specific hadoop install directory
    	HADOOP_HOME=/opt/moduels/hadoop-2.5.0
    	# Hive Configuration Directory can be controlled by:
    	export HIVE_CONF_DIR=/opt/moduels/hive-0.13.1-bin/conf
    
  6. 啓動hive
    	${HIVE_HOME}/bin/hive
    

數據庫操作

一 基本操作

  1. 查看數據庫
	show databases;
  1. 創建數據庫
	create database test;
  1. 使用數據庫
	 use test;
  1. 查看數據庫下所有的表
	show tables;
  1. 創建數據庫表
	create table student (id int , name string);
  1. 查看錶結構
	desc student;
  1. 增加數據
	insert into student values(20,"tom");
  1. 查詢表中的數據
	select * from student;

二 本地數據導入到hive

  1. 在本地目錄準備好需要導入的數據/data
  2. 創建指定分隔符的數據表
    create table student(id int , name string) row format delimited fields terminated by ‘\t’;
  3. 加載數據到數據表中load data local inpath ‘/data/student.txt’ into table student;

三 刪除數據庫

	drop database test;   //只能刪除一個空的數據庫
	
	drop database test cascade;//如果要刪除的數據庫不爲空,裏面存在數據表,則可以加上關鍵字cascade

四 刪除表

  1. 先創建一個普通的表,指定文件的位置爲一個存在數據的位置
	 create table student4(id int,name string) 
	 row format delimited fields terminated by '\t'
	 stored as textfile 
	 location '/user/hive/warehouse/student';
  1. 刪除後對該表進行查詢,發現也可以查詢到數據
	drop table student4;
  1. 管理表和外部表
    • 管理表:對於表中的結構存在所屬權, 對於創建一個普通的表來說, 默認就是管理表
    • 外部表:表中的結構不存在所屬權, 因爲創建的表爲外表, 對數據沒有所有的權限, 就相當於不完全擁有這份數據
  2. 創建外部表
	 create EXTERNAL table student4(id int,name string) 
	 row format delimited fields terminated by '\t'
	 stored as textfile 
	 location '/user/hive/warehouse/student';

通過這種方式創建外部表, 在刪除的時候不會刪除原來的數據.

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