1 軟硬件准備
1.1 准備三個節點
| 序號 | 主機名 | 內存 | CPU | IP地址 | 角色 |
| 1 | cdh1 | 8G | 8核心 | 192.168.5.78 | cloudera-scm-server,mysql |
| 2 | cdh2 | 4G | 8核心 | 192.168.5.79 | cloudera-scm-agent |
| 3 | cdh2 | 4G | 8核心 | 192.168.5.80 | cloudera-scm-agent |
1.2 軟件版本信息
OS:RedHat EL 6.5
CDH: 5.6.0
Java:1.7
MySQL:5.6
2 主機環境准備
說明: 以下操作默認在節點1上面, 如果在節點2和節點3上操作會特別說明。
2.1 搭建yum源
(1)、掛載系統鏡像
[root@hadoop1 ~]# mount /dev/cdrom /mnt
(2)、配置yum源
編輯/etc/yum.repos.d/rhel-source.repo配置文件:
[root@hadoop1 yum.repos.d]# cat rhel-source.repo[rhel-source]name=RedHatbaseurl=file:///mntenabled=1gpgcheck=0
(3)、設置緩存和驗證
[root@hadoop1 yum.repos.d]# yum clean all[root@hadoop1 yum.repos.d]# yum makecache[root@hadoop1 yum.repos.d]# yum list | more
(4)、安裝上傳工具rz和sz
[root@hadoop1 yum.repos.d]# yum whatprovides \*rz[root@hadoop1 yum.repos.d]# yum install lrzsz-0.12.20-27.1.el6.x86_64 -y
2.2 配置JDK
(1)、卸載本機的Open JDK信息
[root@hadoop1 ~]# java -version[root@hadoop1 ~]# rpm -qa | grep java[root@hadoop1 ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64[root@hadoop1 ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64[root@hadoop1 ~]# rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
(2)、上傳JDK安裝包並解壓
[root@hadoop1 java]# mkdir /usr/java[root@hadoop1 java]# tar -xzvf jdk-7u79-linux-x64.tar.gz -C /usr/java/[root@hadoop1 data]# cd /usr/java/[root@hadoop1 java]# mv jdk1.7.0_79 default
注意: JDK一定要解壓到/usr/java/default下面,即JAVA_HOME= /usr/java/default, 否則CDH的后續安裝將會報錯(通過日志發現必須指定到此目錄,可能其他的CM版本不需要)。
(3)、配置環境變量
編輯
/etc/profile,
加入如下內容:
[root@hadoop1 default]# vim /etc/profileexport JAVA_HOME=/usr/java/defaultexport JRE_HOME=/usr/java/default/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH
使用環境變量配置馬上生效:
[root@hadoop1 default]# source /etc/profile
(4)、將節點1的Java傳到其他節點並配置環境變量
在節點2和節點3上分別新建目錄/usr/java/default, 將節點1的目錄/usr/java/default下的文件傳到節點2和節點3的目錄
/usr/java/default:
[root@hadoop1 default]# scp -r /usr/java/default/* root@192.168.5.79:/usr/java/default/[root@hadoop1 default]# scp -r /usr/java/default/* root@192.168.5.80:/usr/java/default/
配置環境變量:
[root@hadoop2 default]# tail -4/etc/profileexport JAVA_HOME=/usr/java/defaultexport JRE_HOME=/usr/java/default/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH
(5)、驗證
2.3 修改主機名
(1)、在所有節點修改配置文件/etc/sysconfig/network
其中cdh1為主機名, 其他節點也修改為對應的主機名稱。
(2)、在所有節點的/etc/hosts加入域名解析
[root@hadoop1 default]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.5.78 cdh1192.168.5.79 cdh2192.168.5.80 cdh3
然后每個節點主機執行:hostname 主機名,比如節點1執行:# hostname cdh1
(3)、測試主機名是否正常解析
2.4 配置SSH免密碼認證
在主信任機cloudera-scm-server(192.168.5.78)生成key, 並將key分發到各個節點。
(1)、生成key
[root@cdh1 ~]#/usr/bin/ssh-keygen -t rsa -N ""
(2)、分發key到各個節點上
# cat /root/.ssh/id_rsa.pub | ssh 192.168.5.78 'cat >> .ssh/authorized_keys'# cat /root/.ssh/id_rsa.pub | ssh 192.168.5.79 'cat >> .ssh/authorized_keys'# cat /root/.ssh/id_rsa.pub | ssh 192.168.5.80 'cat >> .ssh/authorized_keys' (注意, 本機也要做免密碼認證)
(3)、驗證免密碼認證
2.5 關閉防火牆
在所有節點執行如下步驟:
(1)、關閉iptables
# service iptables stop# chkconfig iptables off# chkconfig --list | grep iptables
(2)、關閉
selinux
# vim /etc/sysconfig/selinux# setenforce 0
2.6 配置內核參數
在所有節點執行如下步驟:
(1)、在所有節點修改內核參數(涉及主機檢查):
# echo 0 > /proc/sys/vm/swappiness# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
以上參數,重啟后可能會丟失。
(2)、修改系統編碼格式
# vim /etc/sysconfig/i18nLANG="en_US.UTF-8"SYSFONT="latarcyrheb-sun16"
2.7 配置NTP服務
(1)、修改配置文件/etc/ntp.conf
在cdh1加入如下配置:
restrict 192.168.5.0 mask 255.255.255.0 nomodify notrapserver 127.127.1.0# local clockfudge 127.127.1.0 stratum 10
在cdh2和cdh3等其他節點加入如下配置:
#server 0.rhel.pool.ntp.org iburst#server 1.rhel.pool.ntp.org iburst#server 2.rhel.pool.ntp.org iburstserver 192.168.5.78restrict 192.168.5.78 nomodify notrap noquery
(2)、啟動服務,並同步時間
cdh1:
[root@cdh1 ~]# service ntpd restart[root@cdh1 ~]# ntpdate -u 0.rhel.pool.ntp.org16Feb14:13:39 ntpdate[32551]: step time server 85.199.214.101 offset -27310.823198 sec[root@cdh1 ~]# date2017年02月16日星期四14:13:41 CST
cdh2、cdh3:
# service ntpd restart# ntpdate -u 192.168.5.78
3、編譯安裝MySQL
Mysql的安裝在節點1上
也可以使用其他方式安裝MySQL
3.1 檢查並卸載本機的MySQL
# rpm -qa | grep mysql# yum -y remove mysql-libs-5.1.71-1.el6.x86_64
3.2 配置用戶、目錄和環境
(1)、添加用戶
[root@cdh1 ~]# useradd mysql
(2)、創建目錄並賦權
創建目錄:
[root@cdh1 ~]# mkdir -p /home/u01/my3306/data[root@cdh1 ~]# mkdir -p /home/u01/my3306/log/iblog[root@cdh1 ~]# mkdir -p /home/u01/my3306/log/binlog[root@cdh1 ~]# mkdir -p /home /u01/my3306/run[root@cdh1 ~]# mkdir -p /home/u01/my3306/tmp
設置權限:
[root@cdh1 ~]# chown -R mysql:mysql /home/u01/my3306/[root@cdh1 ~]# chmod -R 755/home/u01/my3306/
(3)、配置環境變量
在/etc/profile里面加入如下配置:
export PATH=$PATH:/home/u01/my3306/bin
(4)、安裝cmake
[root@cdh1 data]# yum install -y cmake gcc gcc-c++ ncurses-devel bison zlib libxml openssl libxml2 libxml2-devel openssl-devel
3.3 安裝MySQL
(1)、上傳並解壓
上傳mysql通用的源碼包到目錄/home/data, 並解壓到/home/u01目錄。
[root@cdh1 data]# tar -xzvf mysql-5.6.35.tar.gz -C /home/u01
(2)、進入mysql的解壓目錄, 並執行如下的cmake命令
cmake \-DCMAKE_INSTALL_PREFIX=/home/u01/my3306 \-DINSTALL_DATADIR=/home/u01/my3306/data \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DEXTRA_CHARSETS=all \-DWITH_SSL=yes \-DWITH_EMBEDDED_SERVER=1 \-DENABLED_LOCAL_INFILE=1 \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_FEDERATED_STORAGE_ENGINE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DMYSQL_UNIX_ADDR=/home/u01/my3306/run/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DSYSCONFDIR=/etc \-DWITH_READLINE=on
(3)、make操作
# make
(4)、make install 操作
# make install
(5)、上傳my.cnf
將附件my.cnf上傳到目錄/home/u01/my3306。
my.cnf的文件內容如下:
[client]port=3306socket=/home/u01/my3306/mysql.sock[mysql]pid_file=/home/u01/my3306/run/mysqld.pid[mysqld]autocommit=1general_log=offexplicit_defaults_for_timestamp=true# systembasedir=/home/u01/my3306datadir=/home/u01/my3306/datamax_allowed_packet=1gmax_connections=3000max_user_connections=2800open_files_limit=65535pid_file=/home/u01/my3306/run/mysqld.pidport=3306server_id=101skip_name_resolve=ONsocket=/home/u01/my3306/run/mysql.socktmpdir=/home/u01/my3306/tmp#binloglog_bin=/home/u01/my3306/log/binlog/binlogbinlog_cache_size=32768binlog_format=rowexpire_logs_days=7log_slave_updates=ONmax_binlog_cache_size=2147483648max_binlog_size=524288000sync_binlog=100#logginglog_error=/home/u01/my3306/log/error.logslow_query_log_file=/home/u01/my3306/log/slow.loglog_queries_not_using_indexes=0slow_query_log=1log_slave_updates=ONlog_slow_admin_statements=1long_query_time=1#relayrelay_log=/home/u01/my3306/log/relaylogrelay_log_index=/home/u01/my3306/log/relay.indexrelay_log_info_file=/home/u01/my3306/log/relay-log.info#slaveslave_load_tmpdir=/home/u01/my3306/tmpslave_skip_errors=OFF#innodbinnodb_data_home_dir=/home/u01/my3306/log/ibloginnodb_log_group_home_dir=/home/u01/my3306/log/ibloginnodb_adaptive_flushing=ONinnodb_adaptive_hash_index=ONinnodb_autoinc_lock_mode=1innodb_buffer_pool_instances=8#defaultinnodb_change_buffering=insertsinnodb_checksums=ONinnodb_buffer_pool_size=128Minnodb_data_file_path=ibdata1:32M;ibdata2:16M:autoextendinnodb_doublewrite=ONinnodb_file_format=Barracudainnodb_file_per_table=ONinnodb_flush_log_at_trx_commit=1innodb_flush_method=O_DIRECTinnodb_io_capacity=1000innodb_lock_wait_timeout=10innodb_log_buffer_size=67108864innodb_log_file_size=1048576000innodb_log_files_in_group=4innodb_max_dirty_pages_pct=60innodb_open_files=60000innodb_purge_threads=1innodb_read_io_threads=4innodb_stats_on_metadata=OFFinnodb_support_xa=ONinnodb_use_native_aio=OFFinnodb_write_io_threads=10[mysqld_safe]datadir=/home/u01/my3306/data
(6)、賦權
[root@cdh1 home]# chown -R mysql:mysql ./u01/my3306
(7)、初始化
進入my3306的目錄
./scripts/mysql_install_db --defaults-file=/home//u01/my3306/my.cnf --datadir=/home/u01/my3306/data --user=mysql
(8)、啟動服務
[root@cdh1 my3306]# cd bin/[root@cdh1 bin]#./mysqld_safe --defaults-file=/home/u01/my3306/my.cnf --user=mysql &
(8)、驗證安裝
3.4 配置MySQL權限等
(1)、設置密碼
[root@cdh1 bin]# mysqladmin -u root password 123456
(2)、進入mysql
(3)、設置權限
mysql> grant all privileges on *.* to root@'localhost' identified by'123456'with grant option;mysql> grant all privileges on *.* to root@'127.0.0.1' identified by'123456'with grant option;mysql> grant all privileges on *.* to root@'%' identified by'123456'with grant option;mysql> flush privileges;
(4)、驗證權限
4 安裝Cloudera Manager
以下操作是在節點1上,角色為cloudera-scm-server
4.1 上傳並解壓cloudera-manager
(1)、解壓
[root@cdh1 data]# tar xzvf cloudera-manager-el6-cm5.6.0_x86_64.tar.gz -C /opt/
(2)、將mysql的jar包復制到指定目錄
# cp mysql-connector-java-5.1.38-bin.jar /opt/cm-5.6.0/share/cmf/lib/
4.2 修改配置文件的主機名
[root@cdh1 data]# sed -i 's/server_host=localhost/server_host=cdh1/g'/opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini
4.3 修復安裝包bug(此BUG會導致在集群安裝YARN時失敗)
# vim /opt/cm-5.6.0/lib64/cmf/agent/src/cmf/util.py --該文件第365行pipe = subprocess.Popen(['/bin/bash','-c',". %s; %s; env"%(path, command)],stdout=subprocess.PIPE, env=caller_env)改成pipe = subprocess.Popen(['/bin/bash','-c',". %s; %s; env | grep -v { | grep -v }"%(path, command)],stdout=subprocess.PIPE, env=caller_env)
4.4 創建系統用戶(在所有的節點)
# useradd --system --home=/opt/cm-5.6.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "cloudera scm user" cloudera-scm
4.5 配置MySQL數據庫
(1)、執行創建腳本
[root@cdh1 data]#/opt/cm-5.6.0/share/cmf/schema/scm_prepare_database.sh mysql -h192.168.5.78-uroot -p123456 --scm-host 192.168.5.78 cm cm cm
---參數說明----:
./scm_prepare_database.sh mysql -h 172.18.134.172 -uroot -pro#zyuc --scm-host 172.18.134.133 cm cm cm
(對應於:數據庫類型、數據庫服務器、用戶名、密碼、CMServer 所在節點…….)
驗證是否安裝成功:
[root@cdh1 data]# mysql -h192.168.5.78-uroot -p123456 -e "show databases;"
(2)、創建相關配置
[root@cdh1 data]# mysql -h192.168.5.78-uroot -p123456mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;mysql> create database hue default charset utf8 collate utf8_general_ci;mysql> create database Oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;mysql> grant all on *.* to 'root'@'%' identified by '123456';--授權server主機mysql> flush privileges;
4.6 將cm復制到agent
將/home/opt/cm-5.6.0拷貝到所有cloudera-scm-agent服務器上(
/home/opt
)
[root@cdh1 opt]# scp -r cm-5.6.0/ root@cdh2:/opt[root@cdh1 opt]# scp -r cm-5.6.0/ root@cdh3:/opt
4.7 准備parcels安裝包到/opt/cloudera/parcel-repo/
# cp CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel /opt/cloudera/parcel-repo/# cp CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-repo/# cp manifest.json /opt/cloudera/parcel-repo/# cd /opt/cloudera/parcel-repo/# mv CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha1 CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha
4.8 啟動服務
(1)、啟動cloudera-scm-server節點的server和agent腳本
# /opt/cm-5.6.0/etc/init.d/cloudera-scm-server start# /opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
(2)啟動所有cloudera-scm-agent客戶端節點的agent腳本
# /opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
(3)確認cloudera-scm-server啟動完成
[root@cdh1 opt]# ps -ef | grep scm
# netstat -tunlp|grep java
5 在界面配置
在瀏覽器打開管理頁面:
http://192.168.5.78:7180/
5.1 同意License
5.2 選擇Cloudera Express版本
5.3 軟件列表信息, 繼續
5.4 選擇安裝的主機
5.5 繼續,Parcel從cdh1分發到其他節點
5.6 檢查主機正確性
5.7 選擇需要安裝的服務
5.8 集群設置
5.9 設置數據庫的信息
5.10 集群設置
設置DataNode的數據目錄, 數據目錄需要在磁盤新建好,如下圖,需要新建2個目錄:# mkdir /home/dfsdata和
# mkdir /hadoopdata。
5.11 配置和啟動服務
Hive和Oozie報錯, 提示沒有mysql的java驅動jar包
注意:將mysql的驅動放到hive和oozie的目錄下面, 否則后面安裝會報錯:
[root@cdh1 lib]# cp /home/data/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib
[root@cdh1 lib]# cp /home/data/mysql-connector-java-5.1.38-bin.jar /var/lib/oozie
5.12 安裝結束
以上都沒有報錯, 按繼續, 安裝成功。
由於是在虛擬機環境, 以上紅色是空間不足的告警, 暫時可以忽略。
6 驗證
6.1 驗證HDFS的功能
6.2 驗證Spark引擎
切換到HDFS用戶:# su -hdfs
6.3 驗證MR引擎
切換到HDFS用戶:# su -hdfs
6.4 驗證Hive on Spark
hive on spark的設置文檔:
參考文檔設置沒有成功, 直接修改配置文件:
補充:上面通過在界面修改沒有成功, 其實是修改保存后, 還有個deploy的操作, 如下圖所示:
附件列表




