一、集群服務器配置說明(整個過程中我會提前把一些小坑填上,有的坑后面沒有提到)
IP | 節點名 | OS | Cores | Memory | Disk | Remark |
172.25.16.1 | cdh1 | CentOS7.5 | 40 | 128 | 4T | cloudera Server、cloudera agent |
172.25.16.2 | cdh2 | CentOS7.5 | 4 | 64 | 40T | cloudera agent |
172.25.16.3 | cdh3 | CentOS7.5 | 4 | 64 | 40T | cloudera agent |
172.25.16.4 | cdh4 | CentOS7.5 | 4 | 64 | 40T | ccloudera agen |
注1:這里主機名盡量小寫,后面配置主機是會出警告
二、CDH6.0.1配套軟件配置
- JDK1.8.0_131
- mysql5.7
name |
版本 |
來源 |
CM |
6.0.1 |
|
CDH |
6.0.1 |
|
hadoop |
3.0.0-cdh6.0.1 |
cdh自帶包 |
hive |
2.1.1-cdh6.0.1 |
cdh自帶包 |
hbase |
2.0.0-cdh6.0.1 |
cdh自帶包 |
solr |
7.0.0+cdh6.0.1 |
cdh自帶包 |
impala |
3.0.0-cdh6.0.1 |
cdh自帶包 |
hue |
3.9.0+cdh6.0.1 |
cdh自帶包 |
sqoop |
1.4.7-cdh6.0.1 |
cdh自帶包 |
kafka |
1.0.0-cdh6.0.1 |
cdh自帶包 |
spark |
2.2.0+cdh6.0.1 |
cdh自帶包 |
oozie |
5.0.0-beta1-cdh6.0.1 |
cdh自帶包 |
kudu |
1.6.0-cdh6.0.1 |
cdh自帶包 |
flume-ng |
flume-ng |
cdh自帶包 |
注意:其他組件需要單獨安裝部署,eg:flink,kylin,ELK等
三、基礎環境配置
1、關閉防火牆[CDH1-4]
1 臨時關閉防火牆 2 3 # systemctl stop firewalld 4 5 永久防火牆開機自啟動 6 7 # systemctl disable firewalld 8 9 查看防火牆狀態 10 11 # systemctl status firewalld
2、selinux關閉[CDH1-4]
1 # vim /etc/sysconfig/selinux SELINUX=disabled 2 3 重啟機器,命令: 4 5 # reboot 6 7 重啟后檢查: 8 9 # sestatus –v
3、配置各節點之間ssh免密登錄[CDH1-4]
1 1. CentOS默認沒有啟動ssh無密登錄, 2 3 # vim /etc/ssh/sshd_config 4 5 2、去掉其中3行的注釋,每台服務器都要配置 6 7 開啟 RSAAuthentication yes 8 9 開啟 PubkeyAuthentication yes 10 11 開啟 AuthorizedKeyFile .ssh/authorized_keys 12 13 # ssh-keygen -t rsa 一直按回車 14 15 # ls /root/.ssh/ id_rsa 和 id_rsa.pub # cp id_rsa.pub authorized_keys 兩個woker節點執行 16 17 # cat ~/.ssh/authorized_keys | ssh root@172.20.32.1 'cat >> ~/.ssh/authorized_keys' 18 19 3、CDH1上執行 20 21 # scp authorized_keys root@172.20.32.2:/root/.ssh/ 22 23 # scp authorized_keys root@172.20.32.3:/root/.ssh/ 24 25 # scp known_hosts root@172.20.32.2:/root/.ssh/ 26 27 # scp known_hosts root@172.20.32.3:/root/.ssh/ 28 29 4、CDH2-4執行 30 31 # chmod 700 ~/.ssh 32 33 # chmod 600 ~/.ssh/authorized_keys 34 35 5、重啟ssh服務 36 37 # systemctl restart sshd.service 38 39 6、驗證能否無密碼ssh,在master服務器上執行操作 40 41 # ssh cdh1 42 43 7、不同用戶之間退出 44 45 # logout
4、hostname config[cdh1-4]
1 master上執行 2 3 # vim /etc/hosts 4 5 172.25.16.1 cdh1 6 7 172.25.16.2 slave1 8 9 172.25.16.3 slave2 10 11 172.25.16.4 slave3 12 13 通過scp 發送給其他機器 14 15 # for i in 2 3 4 ;do scp /etc/hosts $cdh$i:/etc ;done
5、NTP服務器設置[CDH1-4]
自行配置或看我博客NTP配置文章
6、安裝jdk[CDH1-4]
1 方法一:自行安裝 2 3 1.下載“jdk-8u131-linux-x64.tar.gz”,放到/usr/java/目錄下 4 5 2.解壓 # tar -xzvf jdk-8u131-linux-x64.tar.gz 6 7 3.在任何目錄下均可編輯 8 9 # vim /etc/profile.d/java_home.sh 10 11 export JAVA_HOME=/usr/java/jdk1.8.0_141 12 13 export JRE_HOME=$JAVA_HOME/jre 14 15 export PATH=$PATH:$JAVA_HOME/bin 16 17 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib 18 19 4、刷新環境變量 20 21 # source /etc/profile 22 23 方法二:采用cdh自帶jdk包 24 25 下載 對應JAVA包 26 27 wget https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm 28 29 安裝rpm包 30 31 rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm 32 33 修改環境變量 34 35 export JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera export JRE_HOME=$JAVA_HOME/jre 36 37 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
注2!必須在該目錄下安裝JDK,后續cdh默認加載此路徑的JDK**
7.優化虛擬內存需求率[cdh1-4]
1 cdh1 2 3 # cat /proc/sys/vm/swappiness 4 5 顯示如下: 30 6 7 臨時降低虛擬內存需求率 8 9 # sysctl vm.swappiness=0 10 11 永久降低虛擬內存需求率 12 13 # echo 'vm.swappiness = 0' > /etc/sysctl.d/swappiness.conf 14 15 並運行如下命令使生效 16 17 # sysctl -p 18 19 --------------------------- 20 21 CDH2-4 檢查虛擬內存需求率 22 23 # cat /proc/sys/vm/swappiness 24 25 顯示如下: 30 臨時降低虛擬內存需求率 26 27 # sysctl vm.swappiness=10 28 29 永久降低虛擬內存需求率 # echo 'vm.swappiness = 10' > /etc/sysctl.d/swappiness.conf 30 31 並運行如下命令使生效 32 33 # sysctl -p
8. 解決透明大頁面問題[cdh1-4]
1 檢查透明大頁面問題 2 3 # cat /sys/kernel/mm/transparent_hugepage/defrag 4 5 如果顯示為: [always] madvise never 6 7 臨時關閉透明大頁面問題 8 9 # echo never > /sys/kernel/mm/transparent_hugepage/defrag 10 11 確認配置生效 12 13 # cat /sys/kernel/mm/transparent_hugepage/defrag 14 15 應該顯示為: always madvise [never] 16 17 配置開機自動生效 18 19 # echo never > /sys/kernel/mm/transparent_hugepage/enabled
9.mysql安裝[任選擇一台機器]
1 下載源文件 2 3 # wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 4 5 安裝源文件 6 7 # rpm -ivh mysql57-community-release-el7-9.noarch.rpm 8 9 安裝數據庫 10 11 # yum install mysql-server 12 13 啟動數據庫 14 15 # systemctl restart mysqld
10 、拷貝mysql-connector-java到各個節點指定目錄下[cdh1-4]
1 1、下載文件 2 3 wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz 4 5 2、解壓文件 6 7 tar zxvf mysql-connector-java-5.1.46.tar.gz 8 3、創建目錄 9 10 mkdir -p /usr/share/java/ cd mysql-connector-java-5.1.46 11 12 4、復制jar包 13 14 cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
11、創建數據庫[172.25.16.2]
1 mysql -u root -p 2 3 CREATE DATABASE db_cdh6_amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 4 5 CREATE DATABASE db_cdh6_hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 6 7 CREATE DATABASE db_cdh6_metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 8 9 CREATE DATABASE db_cdh6_sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 10 11 CREATE DATABASE db_cdh6_oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 12 13 CREATE DATABASE db_cdh6_hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 14 15 GRANT ALL ON db_cdh6_scm.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 16 17 GRANT ALL ON db_cdh6_amon.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 18 19 GRANT ALL ON db_cdh6_hue.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 20 21 GRANT ALL ON db_cdh6_metastore.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 22 23 GRANT ALL ON db_cdh6_sentry.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 24 25 GRANT ALL ON db_cdh6_oozie.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 26 27 GRANT ALL ON db_cdh6_hive.* TO 'cdh6'@'%' IDENTIFIED BY '123123'; 28 29 FLUSH PRIVILEGES;
四、Cloudera Manager安裝
1、配置 Cloudera Manager 倉庫CDH1-4(可以選擇,也可下載rpm自行手動安裝)
1 下載 4 wget https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.0.1-610811.el7.x86_64.rpm 5 6 wget https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.0.1-610811.el7.x86_64.rpm 7 8 wget https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.0.1-610811.el7.x86_64.rpm
2.安裝 CM Server 和 Agent
1 1、安裝依賴 4 yum -y install bind-utils redhat-lsb psmisc cyrus-sasl-plain cyrus-sasl-gssapi portmap httpd mod_ssl openssl-devel python-psycopg2 MySQL-python 7 2、cdh1安裝: 9 10 [root@cdh1~]# yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server 12 13 3、cdh2-4安裝: 14 15 [root@cdh2~]# yum install cloudera-manager-daemons cloudera-manager-agent 16 17 [root@cdh3 ~]# yum install cloudera-manager-daemons cloudera-manager-agent 18 19 [root@cdh4 ~]# yum install cloudera-manager-daemons cloudera-manager-agent
3.設置 Cloudera Manager 數據庫
1 mysql在本地時執行: 2 3 [root@master ~]# rm -rf //cloudera-scm-server/db.mgmt.properties 4 5 [root@master ~]# /opt/cloudera/cm/scm_prepare_database.sh mysql db_cdh6_scm -h172.25.16.206 -uroot -p'123123' --scm-host 172.25.16.206 db_cdh6_scm root 123123 6 7 JAVA_HOME=/usr/java/jdk1.8.0_131-cloudera 8 9 Verifying that we can write to /etc/cloudera-scm-server 10 11 Creating SCM configuration file in /etc/cloudera-scm-server 12 13 Executing: /usr/java/jdk1.8.0_131/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db. 14 15 [ main] DbCommandExecutor INFO Successfully connected to database. 16 17 All done, your SCM database is configured correctly!
注3 Hive報錯:
1 JDBC driver cannot be found. Unable to find the JDBC database... Validate Hive Metastore schema (70)) 已失敗 2 3 <property> 4 5 <name>javax.jdo.option.ConnectionURL</name> 6 7 <value>jdbc:mysql://my_cluster.com:3306/hive1?useUnicode=true&characterEncoding=UTF-8</value> 8 9 </property> 10 11 <property> 12 13 <name>javax.jdo.option.ConnectionDriverName</name> 14 15 <value>com.mysql.jdbc.Driver</value> 16 17 </property>
4.安裝 CDH[master]
配置CDH的軟件包 parcels(namenode01)
CM安裝成功之后,接下來我們就可以通過CM安裝CDH的方式構建企業大數據平台。所以首先需要把CDH的parcels包下載到CM主服務器上。
1 [root@master ~]# cd /opt/cloudera/parcel-repo 2 3 [root@master ~]# wget https://archive.cloudera.com/cdh6/6.0.1/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel 4 5 [root@master ~]# wget https://archive.cloudera.com/cdh6/6.0.1/parcels/manifest.json 6 7 [root@master ~]# wget https://archive.cloudera.com/cdh6/6.0.1/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256 8 9 [root@master ~]# mv CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256 CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha
注意!上面最好指定ip,切勿使用hostname很容易出現問題
也可以執行下面的操作
在manifest.json文件中,找到對應版本的秘鑰,復制到.sha文件中
1 [root@master ~]# echo "2e650f1f1ea020a3efc98a231b85c2df1a50b030" > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha 2 3 修改屬主屬組 4 5 [root@master ~]# chown cloudera-scm.cloudera-scm /opt/cloudera/parcel-repo/ * 6 啟動 Cloudera Manager Server[master] 7 [root@master ~]# systemctl start cloudera-scm-server 8 如果啟動中有什么問題,可以查看日志。[master] 9 [root@master ~]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
五、 Cloudera瀏覽器配置
1、瀏覽器配置Cloudera Manager
瀏覽器打開:IP:7180
1)登錄、
賬號:admin
密碼:admin
2)選擇部署版本
選擇免費60天測試,正式版等可以實現需求在進行選擇。
3)勾選上需要安裝的主機
全部勾選
4)部署CDH
可以看到所下載並安裝的CDH版本表示前面部署成功,否則需要在線下載。
5)前面配置無誤則無須下載,否則表示前面配置有誤。分發可能需要一段時間,視集群大小而定(此時集群一定要保證Master可以免密碼登錄到其它機器上)。
6)檢查集群狀態
檢查集群的狀況,可根據提示信息修改配置並重新檢查。
a、cdh 托管主機之間的 Java 版本不一致
.......
有些地方忘記了,自行百度一下,前邊步驟對了問題不大
7)選擇需要安裝的組件,可自定義安裝。 這個可以選擇少點,安裝好CM之后可以慢慢添加服務。
8)給集群各個節點分配角色,目前所知道需要注意的地方是HBase Thrift Server不要為空,否則Hue無法訪問HBase。主要看hive的角色
9)設置mysql連接。
注意: 這里很容易報錯,都是表權限、名稱、密碼的錯誤。
10)下一步
后面的一路“繼續”下去即可。安裝所需時間較長,請耐心等待。
后續服務自行安裝
錯誤集錦:
檢查主機正確性:
從CDH 6開始,PostgreSQL支持的Hue要求Psycopg2版本至少為2.5.4,有關更多信息,請參見文章。以下主機缺少Psycopg2庫的兼容版本
安裝Psycopg2
pip3 install psycopg2==2.5.4
沒有PIP3 自行安裝 python
Hive錯誤,connector連接錯誤
cp -r mysql-connector-java-5.1.41.jar /usr/share/java/mysql-connector-java.jar
Cloudera 建議將 /proc/sys/vm/swappiness 設置為 0。當前設置為 60。
sysctl vm.swappiness=0 echo 0 > /proc/sys/vm/swappiness echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4Connection.getSchema()Ljava/lang/String;
解決:
1 wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz 2 3 tar zxvf mysql-connector-java-5.1.46.tar.gz 4 5 mkdir -p /usr/share/java/ cd mysql-connector-java-5.1.46 6 7 cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
有問題留言!!!!