咱們的Cloudera Manager和cdh版本是5.14,如今公司須要升級到cdh6.2
須要先升級Cloudera Manager,而後升級cdh。html
(參考
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_upgrade.html)
升級以前先肯定linux的版本已經升級到Cloudera Manager6.2支持的版本java
###查看數據庫信息node
$ sudo cat /etc/cloudera-scm-server/db.properties
獲得相似以下信息:python
... com.cloudera.cmf.db.type=... com.cloudera.cmf.db.host=database_hostname:database_port com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.password=SOME_PASSWORD
Create a top level backup directory.mysql
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
Back up the Agent directory and the runtime state.linux
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock /etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
Back up the existing repository directory.sql
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
在安裝了Service Monitor 的機器上執行:數據庫
$ sudo cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-`date +%F`-CM5.14
在安裝了Host Monitor 的機器上執行:apache
$ sudo cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-`date +%F`-CM5.14
在安裝了Event Server的機器上執行:vim
$ sudo cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-`date +%F`-CM5.14
$ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql
Create a top-level backup directory.
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
$ Back up the Cloudera Manager Server directories:
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-server.tar /etc/cloudera-scm-server /etc/default/cloudera-scm-server
Back up the existing repository directory.
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
登錄Cloudera Manager Server節點,刪除原有yum源
$ sudo rm /etc/yum.repos.d/cloudera*manager.repo*
建立新的yum源文件
$ sudo vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager] # Packages for Cloudera Manager name=Cloudera Manager baseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/ gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-cloudera gpgcheck=1
在server的配置文件中配置java_home:
在/etc/default/cloudera-scm-server
增長JAVA_HOME
export JAVA_HOME="/usr/java/jdk1.8.0_162"
1.登陸Cloudera Manager Server主機。
2.中止Cloudera管理服務。 (要點:此時不中止Cloudera Management Service可能會致使管理角色崩潰或Cloudera Manager Server可能沒法從新啓動。)
步驟:
3.中止Cloudera Manager Server.
$ sudo service cloudera-scm-server stop
4.中止Cloudera Manager Agent.
$ sudo service cloudera-scm-agent stop
5.升級Cloudera packages.
$ sudo yum clean all $ sudo yum upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent -y
6.確認下包安裝好了
$ rpm -qa 'cloudera-manager-*'
7.啓動Cloudera Manager Agent.
$ sudo service cloudera-scm-agent start
8.啓動Cloudera Manager Server.
$ sudo service cloudera-scm-server start
啓動過程當中若是有問題能夠參考日誌文件:
$ tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log $ tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log $ tail -f / var / log / messages
9.正常的話打開cdh升級頁面就能夠看到升級的狀況了
http://cloudera_Manager_server_hostname:7180/cmf/upgrade
a.使用CDH界面升級
點擊 Cloudera Manager Agent軟件包
選項1:選擇agent存儲庫
咱們使用公共庫就能夠了
選擇 Public Cloudera Repository
2.安裝JDK
已經安裝了就不用選擇了
3.安裝agent
配置一下root或者sudo帳號就能夠了,須要能訪問全部agent節點的權限
選項2:使用命令升級
清除老的repo文件
$ sudo rm /etc/yum.repos.d/cloudera*manager.repo*
新建repo文件:
$ sudo vim /etc/yum.repos.d/cloudera-manager.repo
repo文件內容:
[cloudera-manager] # Packages for Cloudera Manager name=Cloudera Manager baseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/ gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-cloudera gpgcheck=1
中止Cloudera Manager agent服務
$ sudo service cloudera-scm-agent stop
升級Cloudera Manager agent
$ sudo yum clean all $ sudo yum repolist $ sudo yum upgrade cloudera-manager-daemons cloudera-manager-agent -y
等到因此機器都完成了以後,每一個agent節點執行
$ sudo service cloudera-scm-agent start
查看
http://192.168.0.254:7180/cmf/upgrade
顯示全部機器的agent都已經升級,且都有心跳
點擊 Host Inspector,檢測一下節點的狀況
完成以後點擊 顯示檢查器結果,查看有問題的項,修復。
顯示的問題中有個比較重要的:若是後續要運行CDH6,hue須要使用python2.7,先記着,暫時無論。
而後,啓動Cloudera Management Service
若是升級失敗,須要還原,能夠參考官方的步驟:
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_downgrade.html
升級以前先肯定linux的版本已經升級到CDH6.2支持的版本,java版本爲1.8
登陸到CDH管理頁面,啓動hdfs服務
而後運行如下命令檢查集羣狀況
若是有問題則修復
檢查hdfs:
$ sudo -u hdfs hdfs fsck / -includeSnapshots $ sudo -u hdfs hdfs dfsadmin -report
檢查hbase表中的一致性:
$ sudo -u hdfs hbase hbck
若是使用了kudu,檢查kudu:
$ sudo -u kudu kudu cluster ksck <master_addresses>
如下服務在6.0.0中已經沒有了,升級以前,須要中止而且刪除這些服務
Accumulo
Sqoop 2
MapReduce 1
Spark 1.6
Record Service
如下CDH組件不須要備份:
·MapReduce
·YARN
·Spark
·Pig
·Impala
升級CDH前完成如下備份的步驟
1.Back Up Databases
咱們使用mysql,因此以mysq爲例
1)若是還沒有中止,請中止服務。若是Cloudera Manager指示存在依賴服務,則還要中止依賴服務。
2)備份各個服務(Sqoop, Oozie, Hue,Hive Metastore ,Sentry)的數據庫。替換數據庫名稱,主機名,端口,用戶名和備份目錄路徑,而後運行如下命令:
$ mysqldump --databases database_name --host = database_hostname --port = database_port -u database_username -p> backup_directory_path / database_name -backup -`date +%F`-CDH 5.14 .sql
2.Back Up ZooKeeper
在每臺zookeeper節點,備份cdh中配置的zookeeper的數據存儲目錄,如
$ sudo cp -rp /var/lib/zookeeper/ /var/lib/zookeeper-backup-`date +%F`CM-CDH5.14
3.Back Up HDFS
(命令中的數據路徑根據cdh中實際配置更改)
$ sudo cp -rp /data/dfs/jn /data/dfs/jn-CM-CDH5.14
$ mkdir -p /etc/hadoop/conf.rollback.namenode $ cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-NAMENODE\$" | head -1` $ cp -rp * /etc/hadoop/conf.rollback.namenode/ $ rm -rf /etc/hadoop/conf.rollback.namenode/log4j.properties $ cp -rp /etc/hadoop/conf.rollback.namenode/log4j.properties /etc/hadoop/conf.rollback.namenode/
這些命令建立臨時回滾目錄。若是稍後須要回滾到CDH 5.x,則回滾過程要求您修改此目錄中的文件。
$ mkdir -p /etc/hadoop/conf.rollback.datanode/ $ cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-DATANODE\$" | head -1` $ cp -rp * /etc/hadoop/conf.rollback.datanode/ $ rm -rf /etc/hadoop/conf.rollback.datanode/log4j.properties $ cp -rp /etc/hadoop/conf.cloudera.hdfs/log4j.properties /etc/hadoop/conf.rollback.datanode/
4.Back Up Key Trustee Server and Clients
服務沒有使用
5.Back Up HSM KMS
服務沒有使用
6.Back Up Navigator Encrypt
服務沒有使用
7.Back Up HBase
因爲回滾過程還會回退HDFS,所以HBase中的數據也會回滾。此外,存儲在ZooKeeper中的HBase元數據將做爲ZooKeeper回滾過程的一部分進行恢復。
8.Back Up Search
服務沒有使用
9.Back Up Sqoop 2
服務沒有使用
10.Back Up Hue
在運行Hue Server角色的全部主機上,備份app註冊表文件
$ mkdir -p /opt/cloudera/parcels_backup $ cp -rp /opt/cloudera/parcels/CDH/lib/hue/app.reg /opt/cloudera/parcels_backup/app.reg-CM-CDH5.14
對於centos6版本的系統:
須要在hue的節點安裝python2.7
Enable the Software Collections Library:
$ sudo yum install centos-release-scl
$ Install the Software Collections utilities:
$ sudo yum install scl-utils
$ Install Python 2.7:
$ sudo yum install python27
Verify that Python 2.7 is installed:
$ source /opt/rh/python27/enable $ python --version
1.HBase 2.0 不支持PREFIX_TREE數據塊編碼,升級前須要先刪除,不然hbase2.0沒法啓動
若是你已經安裝了CDH6.那麼經過運行如下工具來確保全部表或快照都不使用PREFIX_TREE數據塊編碼:
$ hbase pre-upgrade validate-dbe $ hbase pre-upgrade validate-hfile
2.升級協處理器類
外部協處理器不會自動升級。有兩種方法能夠處理協處理器升級:
在繼續升級以前,請手動升級協處理器jar。
暫時取消協處理器的設置並繼續升級。
手動升級後,能夠重置它們。
嘗試在不升級協處理器jar的狀況下進行升級可能會致使不可預測的行爲,例如HBase角色啓動失敗,HBase角色崩潰,甚至數據損壞。
若是您已經安裝了CDH 6,則能夠經過運行來確保您的協處理器與升級兼容 hbase pre-upgrade validate-cp 工具。
當使用Cloudera Manager Backup and Disaster Recovery (BDR)將集羣從Cloudera Manager 5.13或更低版本升級到CDH 6.0或更高版本時,使用Cloudera Manager Backup and Disaster Recovery (BDR)備份數據將不起做用。
用於執行升級的次要版本的Cloudera Manager必須等於或大於CDH次要版本。要升級Cloudera Manager
注意:
使用滾動從新啓動(僅限次要升級)升級CDH時:
自動故障轉移不會影響滾動從新啓動操做。
升級完成後,若是當前正在運行MapReduce或Spark做業,請不要刪除舊的塊。這些做業仍使用舊的塊,必須從新啓動才能使用新升級的塊。
確保Oozie工做是冪等的。
不要使用Oozie Shell Actions來運行與Hadoop相關的命令。
不支持滾動升級Spark Streaming做業。升級完成後從新啓動流做業,以便開始使用新部署的版本。
必須將運行時庫打包爲Spark應用程序的一部分。
您必須使用分佈式緩存從客戶端網關計算機傳播做業配置文件。
不要構建包含第三方依賴項或CDH類的「超級」或「胖」JAR文件,由於這些文件可能與Yarn,Oozie和其餘服務自動添加到CLASSPATH的類衝突。
在不捆綁CDH JAR的狀況下構建Spark應用程序。
在cloudera manager升級以前咱們備份了一次,在升級以後還須要備份一次。
$ cat /etc/cloudera-scm-server/db.properties
例如:
com.cloudera.cmf.db.type=... com.cloudera.cmf.db.host=database_hostname:database_port com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.password=SOME_PASSWORD
在每臺agent節點上執行:
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
備份agent目錄和運行時狀態
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock /etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
備份Cloudera Management Service
在Service Monitor節點執行
$ sudo cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-`date +%F`-CM5.14
在Host Monitor節點上執行
$ sudo cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-`date +%F`-CM5.14
在Event Server節點上執行
$ sudo cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-`date +%F`-CM5.14
在CDH管理界面中中止Cloudera Management Service,選擇:
Clusters->Cloudera Management Service.
Actions > Stop.
中止 Cloudera Manager Server:
$ sudo service cloudera-scm-server stop
$ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql
數據庫信息爲剛纔第一步中查看文件中獲取的信息
在Cloudera Manager Server節點執行:
1.建立一個備份目錄:
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
2.備份 Cloudera Manager Server的目錄
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-server.tar /etc/cloudera-scm-server /etc/default/cloudera-scm-server
3.備份當前repo目錄
4.
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
要在升級過程當中避免沒必要要的警報,請在開始升級以前在羣集上進入維護模式。 進入維護模式會中止發送電子郵件警報和SNMP陷阱,但不會中止檢查和配置驗證。完成升級後,請務必退出維護模式以從新啓用Cloudera Manager警報。
1.確保在升級完成以前,不會將新應用程序(如MapReduce或Spark應用程序)提交到羣集。
2.打開CDH管理界面,進入到要升級的YARN服務
3.在 實例 選項卡上,選擇全部NodeManager角色。這能夠經過過濾角色類型下的角色來完成
4.點擊 已選定的操做 -> 解除受權
若是羣集運行CDH 5.9或更高版本並由Cloudera Manager 5.9或更高版本管理,而且您配置了正常解除受權,則會啓動超時倒計時。
平滑退役開始中止使用過程以前提供了一個超時。超時會建立一個時間窗口,以便從系統中消耗已經運行的工做負載,並容許它們運行完成。在YARN服務的Configuration選項卡上搜索Node Manager Graceful Decommission Timeout字段,並將該屬性設置爲大於0的值以建立超時。
5.等到解除受權完成。完成後,NodeManager的狀態爲 中止,受權狀態 爲 解除受權。
6.選中全部NodeManagers,點擊 已選定的操做 -> 從新受權。
(6這一步不作的話後面升級過程當中會報錯,並且很難找到緣由,會在yarn升級的過程當中報這樣的一個:
Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): Requested replication factor of 0 is less than the required minimum of 1 for /user/yarn/mapreduce/mr-framework/3.0.0-cdh6.2.0-mr-framework.tar.gz)
查詢語法,DDL語法和Hive API都有變化。在升級以前,您可能須要在應用程序工做負載中編輯HiveQL代碼。
sentry
若是羣集使用Sentry策略文件受權,則必須先將策略文件遷移到數據庫支持的Sentry服務,而後再升級到CDH 6。
若是羣集使用Hue,請執行如下步驟(維護版本不須要)。這些步驟清理Hue使用的數據庫表,能夠幫助提升升級後的性能。
1.備份Hue數據庫。
2.鏈接到Hue數據庫。
3.檢查desktop_document,desktop_document2,oozie_job,beeswax_session,beeswax_savedquery和beeswax_queryhistory表的大小以得到參考點。若是其中任何行超過10萬行,請運行清理。
1.打開CDH管理界面,點擊 主機 -> Parcels -> 配置
2.使用如下遠程parcel存儲庫URL更新CDH的Parcel存儲庫:
a.在 遠程 Parcel 存儲庫 URL 部分中,單機 "+"圖標添加上面的url,單擊 保存更改
b.在表中找到包含新CDH parcel的行,而後單擊「 下載」按鈕。
c.下載包後,單擊「 分配」按鈕。
d.分發完全部包裹後,點擊 升級 按鈕。
1.進入升級嚮導後,會運行一些集羣的check,check的結果可能會出現一些問題,會影響到後續的升級,先把這些問題解決。還會有備份數據庫的提示。若是都已經ok了,點擊 是,我已執行這些步驟,而後點擊 繼續。
2.點擊 完整羣集重啓 (羣集的所有停機時間),點擊 繼續。(這個步驟會重啓全部服務)
升級過程當中Oozie異常提示:
1.E0103: Could not load service classes, Cannot create PoolableConnectionFactory (Table 'oozie.validate_conn' doesn't exist)
解決方案:
2.「java.lang.ClassNotFoundException:org.cloudera.log4j.redactor.RedactorAppender」找不到類。
參考這篇文章,把缺乏的logredactor-2.0.7.jar建一個軟鏈接從/opt/cloudera/parcels/CDH/lib/oozie/lib到/opt/cloudera/parcels/CDH/lib/oozie/libtools目錄下
3.ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
緣由是log4j.xml沒有配置致使異常信息沒法顯示,一樣考一份log4j.xml的模版放到/opt/cloudera/parcels/CDH/lib/oozie/libtools目錄下便可。
用於在CDH 5中提交Spark 2做業的命令(spark2-submit)在CDH 6中刪除,
替換爲 spark-submit。在具備內置Spark 1.6服務和Spark 2服務的CDH 5集羣中,spark-submit 與Spark 1.6服務一塊兒使用,和spark2-submit與Spark 2服務一塊兒使用。升級到CDH 6後,spark-submit 使用CDH內置的Spark 2服務, spark2-submit再也不起做用。確保使用這些命令更新提交Spark做業的任何工做流。
impala主要用於即時查詢,不用於線上任務,因此重要性沒有那麼高,參考官網
https://www.cloudera.com/documentation/enterprise/upgrade/topics/impala_upgrading.html便可。