(PS:我使用的環境,都用加粗標識了。)html
操做系統 | 版本 |
---|---|
RHEL/CentOS/OL with RHCK kernel | 7.6, 7.5, 7.4, 7.3, 7.2,6.10, 6.9 , 6.8 |
Oracle Linux (OL) | 7.4, 7.3, 7.2 (UEK default) |
SUSE Linux Enterprise Server | |
SLES | 12 SP4, 12 SP3, 12 SP2 |
Ubuntu | |
Ubuntu | 16.04 LTS (Xenial) |
(系統版本要求)java
組件 | 存儲 | 說明 |
---|---|---|
Partition hosting /usr | 1 GB | |
Partition hosting /var | 5 GB to 1 TB | Scales according to number of nodes managed. See table below. |
Partition hosting /opt | 15 GB minimum | Usage grows as the number of parcels downloaded increases. |
Cloudera Manager Database Server | 5 GB | If the Cloudera Manager Database is shared with the Service Monitor and Host Monitor, more storage space is required to meet the requirements for those components. |
(系統空間要求)node
MySQL版本 | Cloudera Enterprise 6.x |
---|---|
5.1(RHEL / CentOS / OEL 6的默認設置) | ![]() |
5.5(Debian 8.9的默認設置) | ![]() |
5.6 | ![]() |
5.7(Ubuntu 16.0四、18.04 LTS的默認設置) | ![]() |
(MySql版本要求)mysql
Cloudera企業版 | 支持的Oracle JDK | 支持的OpenJDK |
---|---|---|
5.3 -5.15 | 1.七、1.8 | 沒有 |
5.16 和更高的5.x版本 | 1.七、1.8 | 1.8 |
6.0 | 1.8 | 沒有 |
6.1 | 1.8 | 1.8 |
6.2 | 1.8 | 1.8 |
6.3 | 1.8 | 1.八、11.0.3或更高 |
(從上圖能夠看到6.0支持的是1.8版本)linux
Oracle JDK版本 | 筆記 |
---|---|
1.8u181 | 推薦/最新版本通過測試 |
1.8u162 | 推薦的 |
1.8u141 | 推薦的 |
1.8u131 | 推薦的 |
1.8u121 | 推薦的 |
1.8u111 | 推薦的 |
1.8u102 | 推薦的 |
1.8u91 | 推薦的 |
1.8u74 | 推薦的 |
1.8u31 | 最低要求 |
(推薦的MySql版本)git
當前的Cloudera Manager版本 | 支持的Cloudera Manager升級路徑 | 支持的CDH升級路徑 |
---|---|---|
6.0 | 6.3.x6.2.x6.1.x6.0.x維護版本 | 6.0.x維護版本CDH 5.7-5.14的任何次要版本 |
儲存庫類型 | 位置 (基本網址) |
---|---|
包裹 | https://archive.cloudera.com/cdh6/6.0.0/parcels/ |
兼容RHEL 7 | https://archive.cloudera.com/cdh6/6.0.0/redhat7/yum/ |
兼容RHEL 6 | https://archive.cloudera.com/cdh6/6.0.0/redhat6/yum/ |
SLES 12 | https://archive.cloudera.com/cdh6/6.0.0/sles12/yum/ |
Ubuntu Xenial(16.04) | https://archive.cloudera.com/cdh6/6.0.0/ubuntu1604/apt/ |
PS:推薦能使用高版本就使用高版本進行搭建,由於不少老版本都逐漸被淘汰。這也是我花費了三天多時間,使用老版本centos6.5進行搭建遇到了不少坑,最終仍是沒搭建好總結的一個經驗。緣由就是你想安裝某個軟件,官方都不支持下載了,你還獲得處找,而後匹配,有一點不匹配就會致使內核不支持,你要是再升級內核,就又得找,而後去安裝去實驗,麻煩的一批。跟不上時代了,你連哭的地都沒有。就至關於互聯網時代能在網上購票了,你還去排很長的隊去現場買票,那麼你就得乘坐交通工具去吧,跑很遠的路,等有一天中止人工售票了,你難道還去找門子讓別人幫你買票麼?話說回來了,也就是軟件停更了,你難道還去各個網站去找老版本麼?github
主機名 | cdh1 | cdh2 | cdh3 |
---|---|---|---|
IP地址 | 192.168.40.104 | 192.168.40.105 | 192.168.40.106 |
其它環境 | MySql,JDK | JDK | JDK |
首先去網站 http://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/ 把CentOS-7-x86_64-DVD-1810.iso 下載到本地。web
下載VMWare虛擬機軟件。使用VMWare進行安裝,一共須要安裝三臺,主機名和ip配置如上所示。sql
PS:先安裝一臺,而後照着下面設置,設置完後克隆下修改主機名和ip就能夠了。shell
安裝步驟可參考: http://www.javashuo.com/article/p-rvjcmgta-cb.html
下面說下安裝完成後如何配置IP地址和修改主機名:
安裝vim(找個文件實驗一下有沒有,有的話忽略這步)
yum -y install vim*
# cd /etc/sysconfig/network-scripts # vi ifcfg-ens33 --這裏改成你本身的名稱
修改內容以下:
#標記顯示固定ip BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=c2cc280c-e0a6-4694-b062-e43b5f44db61 #網卡名 DEVICE=eno16777736 ONBOOT=yes #ip地址,這個以cdh1舉例,我設定的爲104,後面的cdh2,cdh3能夠分別設置爲105,106 IPADDR=192.168.40.104 #網關地址 GATEWAY=192.168.40.2 NETMASK=255.255.255.0 DNS1=114.144.144.114 DNS2=8.8.8.8
vim /etc/hostname 修改成cdh1
PS:其它主機照着配置便可。 設置完後重啓生效。
修改host文件映射別名
vim /etc/hosts 添加
192.168.40.104 cdh1
192.168.40.105 cdh2
192.168.40.106 cdh3
在cdh1主機執行如下命令。
ssh-keygen -t rsa #一路回車便可
ssh-copy-id localhost #對本機免密鑰,會提示輸入本機密碼
ssh-copy-id cdh2 #會提示輸入cdh2的密碼
ssh-copy-id cdh3 #會提示輸入cdh3的密碼
禁止開機啓動
[root@cdh1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
setenforce 0
vi /etc/selinux/config (SELINUX=disabled)
[root@cdh1 etc]# mkdir -p /opt/mysql
[root@cdh1 etc]#cd /opt/mysql
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ sudo yum update
$ sudo yum install mysql-server
$ sudo systemctl start mysqld
[root@cdh1 mysql]# mysql
mysql> use mysql; --切庫
mysql> select Host,User,Password,authentication_string from user; --查詢下
mysql> grant all privileges on . to 'root'@'%' identified by '123456' WITH GRANT OPTION; --建立一個新root用戶,並受權能夠遠程登錄
mysql> update user set authentication_string=password('123456') where user='root' and host='%'; --給用戶添加遠程登錄密碼
mysql> select Host,User,Password,authentication_string from user; --再查詢下,能夠看的多了個一個root用戶
+-----------+------+-------------------------------------------+-----------------------+
| Host | User | Password | authentication_string |
+-----------+------+-------------------------------------------+-----------------------+
| localhost | root | | |
| cdh1 | root | | |
| 127.0.0.1 | root | | |
| ::1 | root | | |
| localhost | | | NULL |
| cdh1 | | | NULL |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | |
+-----------+------+-------------------------------------------+-----------------------+
mysql> flush privileges; --刷新權限
mysql> quit; --退出
[root@VM_0_10_centos ~]# systemctl restart mysqld --重啓下,登錄
[root@VM_0_10_centos ~]# mysql -uroot -p
Enter password:而後這個時候一般會提示如下錯誤:
ERROR 1045 (28000): Access denied for user 'root'@'cdh1' (using password: YES)。
網上查了不少解決方案,都讓設置my.cnf配置文件,而後修改密碼。可是這裏並非密碼問題,而是上面的一些沒密碼的用戶干擾的。把沒密碼的用戶都刪掉,反正也沒用,而後就能夠了。以下:
delete from mysql.user where Password ='' or Password is null;
flush privileges; --刷新權限
systemctl restart mysql --重啓mysql,而後再登錄就能夠登錄了,以下所示。
[root@cdh1 mysql]# mysql -uroot -p
Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.47 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
因爲官網太慢了,還有有好心人把包搬到了Github上,這樣咱們就方便下載了。
https://github.com/frekele/oracle-java/releases
根據上面的推薦,這裏我選擇的1.8u181版本。
PS:官方規定必定要上傳到/usr/java目錄下,沒有就建立
在cdh1下面建立一個mysql目錄
[root@cdh1 etc]# cd /usr/java/
經過FTP將下載好的jdk-8u181-linux-x64.tar.gz上傳到目錄並解壓
tar -xvf jdk-8u181-linux-x64.tar.gz
[root@cdh1 jdk1.8.0_181]# vim /etc/profile
在文件下方添加以下內容:
export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
而後重啓系統,使用命令java -version命令驗證便可
[root@cdh1 ~]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
其它機器按照相似步驟配置便可。
PS:NTP是個時間管理器,用於同步時間。
$ yum -y install ntp
$ systemctl enable ntpd #啓用NTP
$ systemctl start ntpd #運行NTP
$ systemctl enable ntpd.service #設置開機啓動
sudo wget <repo_file_url> -P /etc/yum.repos.d/
根據1.6.2推薦,repo_file_url這裏寫: https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo
$ sudo wget https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
RHEL 7 compatible:
$ sudo rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera
$ sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
$ sudo yum install cloudera-manager-daemons cloudera-manager-agent
$ vim /etc/cloudera-scm-agent/config.ini
server_host配置CM Server服務器名,server_port配置CM Server端口
這裏都要配置成:
server_host=cdh1
server_port=7182
$ sudo systemctl start cloudera-scm-agent
sudo systemctl stop mysqld
例如將 /var/lib/mysql/ib_logfile0 和 /var/lib/mysql/ib_logfile1 移出 /var/lib/mysql/ 到別的地方備份。
設置緩存,死鎖,最大鏈接數
vim /etc/my.cnf
爲防止死鎖設置隔離級別爲 READ-COMMITTED.
設置存儲引擎爲InnoDB,而不是MyISAM
PS:InnoDB和MyISAM是許多人在使用MySQL時最經常使用的兩個表類型,這兩個表類型各有優劣,視具體應用而定。基本的差異爲:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,可是不提供事務支持,而InnoDB提供事務支持以及外部鍵等高級數據庫功能。
可使用命令查看用的哪一個引擎:
mysql> show table status from [YourDatabaseName];
service服務器(這裏是cdh1)設置innodb_flush_method
屬性爲 O_DIRECT
以提供更大吞吐量。
根據服務器集羣設置 max_connections
屬性
少於50臺主機-您能夠在同一臺主機上存儲多個數據庫(例如,活動監視器和服務監視器)。若是這樣作,您應該:
將每一個數據庫放在其本身的存儲捲上。
每一個數據庫容許100個最大鏈接,而後添加50個額外的鏈接。例如,對於兩個數據庫,將最大鏈接數設置爲250。若是在一個主機上存儲五個數據庫(Cloudera Manager Server,Activity Monitor,Reports Manager,Cloudera Navigator和Hive metastore的數據庫),則將最大鏈接數設置爲550。
超過50臺不要在同一個主機上存儲多個數據庫。每一個數據庫應配置單獨的主機。
超過1000臺應設置max_allowed_packet
爲16M。
下面是一個推薦配置表:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock transaction-isolation = READ-COMMITTED # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: symbolic-links = 0 key_buffer_size = 32M max_allowed_packet = 32M thread_stack = 256K thread_cache_size = 64 query_cache_limit = 8M query_cache_size = 64M query_cache_type = 1 max_connections = 550 #expire_logs_days = 10 #max_binlog_size = 100M #log_bin should be on a disk with enough free space. #Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your #system and chown the specified folder to the mysql user. log_bin=/var/lib/mysql/mysql_binary_log #In later versions of MySQL, if you enable the binary log and do not set #a server_id, MySQL will not start. The server_id must be unique within #the replicating group. server_id=1 binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M # InnoDB settings innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 64M innodb_buffer_pool_size = 4G innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_file_size = 512M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid sql_mode=STRICT_ALL_TABLES
確保數據庫啓用
$ sudo systemctl enable mysqld
啓動數據庫
$ sudo systemctl start mysqld
在全部數據據服務器安裝JDBC程序。官網推薦安裝5.1版本。安裝步驟以下:
其中能夠先在cdh1安裝,而後複製到cdh2和cdh3便可(cdh2和cdh3安裝了,就可使用cdh1數據庫了。):
下載JDBC驅動程序
[root@cdh1 mysql]# cd /opt/mysql
[root@cdh1 mysql]# mkdir jdbcDriver
[root@cdh1 mysql]# cd jdbcDriver
[root@cdh1 jdbcDriver]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
放入到/usr/share/java目錄下
[root@cdh1 jdbcDriver]# tar -xf mysql-connector-java-5.1.46.tar.gz
[root@cdh1 jdbcDriver]# cd mysql-connector-java-5.1.46
[root@cdh1 mysql-connector-java-5.1.46]# sudo mkdir -p /usr/share/java --建立java目錄
[root@cdh1 mysql-connector-java-5.1.46]# cp mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar --將驅動複製到/usr/share/java目錄,並重命名
登錄數據庫
systemctl start mysqld
$ mysql -u root -p
Enter password:
建立數據庫
語法參考:
mysql>CREATE DATABASE
DEFAULT CHARACTER SET DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec)
GRANT ALL ON
.* TO ' '@'%' IDENTIFIED BY ' '; Query OK, 0 rows affected (0.00 sec)
flush privileges;
須要建立的表:
Service | Database | User |
---|---|---|
Cloudera Manager Server | scm | scm |
Activity Monitor | amon | amon |
Reports Manager | rman | rman |
Hue | hue | hue |
Hive Metastore Server | metastore | hive |
Sentry Server | sentry | sentry |
Cloudera Navigator Audit Server | nav | nav |
Cloudera Navigator Metadata Server | navms | navms |
Oozie | oozie | oozie |
拿Cloudra Manager Server舉例:
$ mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
$ mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>use mysql; --注意切換數據庫哦
mysql> update user set authentication_string=password('123456') where user='scm' and host='%'; --本身建立的用戶是沒有密碼的,手動更新
mysql> update user set authentication_string=password('123456') where user='hive' and host='%'; --本身建立的用戶是沒有密碼的,手動更新
mysql> update user set authentication_string=password('123456') where user='hue' and host='%'; --本身建立的用戶是沒有密碼的,手動更新
mysql> update user set authentication_string=password('123456') where user='oozie' and host='%'; --本身建立的用戶是沒有密碼的,手動更新
mysql> flush privileges; --刷新權限
mysql>SHOW DATABASES;
mysql>SHOW GRANTS FOR 'scm'@'%';
mysql>SHOW GRANTS FOR 'hive'@'%';
mysql>SHOW GRANTS FOR 'hue'@'%';
mysql>SHOW GRANTS FOR 'oozie'@'%';
**PS:%受權用戶本地登錄的時候須要指定主機: mysql -u用戶名 -p密碼 -h192.168.9.111 **
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh
-h 主機名或IP
例如:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm -h cdh1
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [選項] <數據庫類型> <數據庫名稱> <數據庫用戶> <密碼>
例如:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm -uroot -p123456
注意:建議先參考2.9.3裏面的圖8,將文件下載到本地,而後上傳到服務器,再進行下面操做,否則訪問外國的網站很慢,會致使沒法下載,很麻煩,這個坑我幫你踩過了,別怪沒提醒哦~
$ sudo systemctl start cloudera-scm-server
等待幾分鐘,以啓動Cloudera Manager Server。要觀察啓動過程,請在Cloudera Manager Server主機上運行如下命令:
$ sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
當出現一下內容時證實安裝成功了:
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
訪問地址: http://<server_host>:7180
這裏是:
默認登錄帳號和密碼都是admin
注意:能夠提早參考地——步,將文件下載到本地,而後上傳到服務器,
圖1:
圖2:
圖3:
圖4:
圖5:
圖6:
圖7:
圖8:
PS:若是下載比較慢的話,能夠手動下載到本地(本地也慢的話,可使用一臺國外雲服務器進行下載,下載完後再經過FTP下載到本地),而後上傳到Manager Server服務器的/opt/cloudera/parcel-repo 下面。而後注意注意,這裏須要重啓manager service服務。而後從新登錄,否則它還會自動下載!!!
重啓完後繼續,報了異常:主機運行不良。查了下 解決方案,刪除cm_guid 文件,而後重啓agent服務。
rm -f /var/lib/cloudera-scm-agent/cm_guid --移除
sudo systemctl restart cloudera-scm-server
sudo systemctl restart cloudera-scm-agent
登錄數據庫,刪除上面建立的scm數據庫裏面的全部的表。
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
而後再從新登錄。挺費時間的,畢竟重啓一次很慢,不過也沒辦法啦~
圖9:
圖10:
圖11:
PS:上面提示紅色表示有錯誤,黃色表示警告,綠色表示正常。查詢錯誤不用管,等集羣運行一會有數據了就顯示了。
上面可能遇到的問題及解決方案:
問題1:Could not create the Java Virtual Machine。。。。
解決方案:這個是虛擬機內存過小形成的,改大些就行了。參考連接
問題2: Actually, the** Job History server** would be owned by mapred and if you want to see the exact permissions you should refer to:
解決方案:這個是沒有權限形成的。參考連接
問題3: 此角色的主機的運行情況爲存在隱患。 如下運行情況測試存在隱患: 正在交換。
原理參考 解決方案就是加大電腦內存,而後加大虛擬機內存。(PS:因此想學大數據,先裝內存條吧,哈哈哈~)
解決後來張圖:
上面將HDFS,Zookeeper和Yarn安裝完了。接下來安裝下Hive,oozie和hue,注意最後安裝hue,由於hue會基於之前安裝的內容渲染UI。
oozie是一個工做流,能夠將多種任務拼接在一塊兒自動執行。
oozie wordflow是做業操做的有向無環圖。
oozie coordinator 做業由時間和數據觸發的oozie workflow週期性做業。
首次打開頁面可能會提示:
Oozie web console is disabled.
To enable Oozie web console install the Ext JS library.
Refer to Oozie Quick Start documentation for details.
解決方法:
下載ext2.2.zip包
連接:https://pan.baidu.com/s/1VvzuFTA4eUsc2qe0AoFe6Q
提取碼:lyff
放在/var/lib/oozie/ 下解壓便可。
hue是大數據的一個圖形界面工具。
針對hbase和hdfs的大數據進行查詢,並基於hive的metastore進行找數據。它和hive類似,可是爲了提升速度,用內存存儲結果。
由於內存是有限的,因此通常impala和hive結合使用。
在控制檯,使用impala-shell 進入,而後操做語句和Hive同樣,使用SQL便可。
參考: https://www.w3cschool.cn/impala/impala_shell.html
當我上傳博客到博客園時,由於個人博客是Markdown寫的,爲了方便上傳,把圖片都放到路過圖牀了,上傳完畢後,個人圖片竟然都不顯示,而後登錄路過圖牀排查緣由,果真,上傳的圖片都失效了,包括以前的圖片也不能看了,哎~ 免費沒好貨啊,擔憂的事情這麼快就發生了,我想着圖片怎麼能用幾年,這才幾個月啊。我體會到要找活得長久的,技術好的公司的圖牀,要不沒幾年倒閉了或者圖牀被攻擊了,你就哭去吧。最後我買了騰訊的對象存儲,這個公司和技術不用質疑了,嗯!掏錢就好了,不過能買來心安也不錯。 另外悟出來一點就是買公司產品,仍是買大公司的好,小公司幾天倒閉了,你的用戶數據,財務數據怎麼辦?因此強者越強,弱者越弱,越弱越沒人搭理,越強吸引的人才就多,公司產品就能作的越好,公司也就能作的越長久。