1 所需安裝包以及下載地址
1.1 操作系統
版本:CentOS 6.8
CDH Parcel文件下載地址
下載的文件CDH-5.7.2-1.cdh5.7.2.p0.18-el6.parcel.sha1,擴展名改為sha
注:其中el6表示系統版本6[對應centos6]
1.2 rpm文件
下載地址:
rpm文件
注:總共七個文件,jdk-6u31-linux-amd64.rpm可以不用下載
1.3 mysql-jdbc
注意:不要使用yum來安裝mysql驅動,這樣會默認加載了openjdk,會cdh不兼容openjdk
下載地址:mysql驅動
1.4 jdk
jdk-7u67-linux-x64.rpm[官網]
2 主機基礎配置(使用root配置)
如果使用非root用戶,需要配置
添加新用戶設置用戶密碼,并設置該用戶為免密碼sudo權限
#adduser xxxx //添加一個名為xxxx的用戶
#passwd xxxx //修改密碼
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxxxx ALL=(ALL) NOPASSWD: ALL
2.1 每臺機器配置hosts
2.1.1 修改 hostname
sudo vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master //修改HOSTNAME值
2.1.2 重啟網絡服務生效
service network restart
2.1.3 修改 ip 與主機名的對應關系(每一臺機)
sudo vi /etc/hosts
2.2 ssh免密碼登陸
2.2.1 生成密碼對(所有節點)
ssh-keygen -t rsa
生成其無密碼密鑰對,一路回車鍵,生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在~/.ssh"目錄
2.2.2 讓master能夠免密登錄其余節點
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys#把id_rsa.pub追加到授權的key里面去
chmod 644 ~/.ssh/authorized_keys#
scp ~/.ssh/ authorized_keys xxxx@hostnamexxx:~/.ssh#注:如若沒有scp命令,安裝yum install openssh-clients
如果希望可以每一個節點都可以免密碼登錄,也可以對其他節點重復此操作,但是不建議
檢查下authorized_keys傳到其他機器后的權限是否為644,不是則改為644,測試是否設置成功:在主節點上ssh hostname[1~3],若不需要密碼就能直接登陸進去了表示配置成功。
ssh slave1
2.3 關閉防火墻(每一個節點)
sudo service iptables stop#臨時關閉
sudo chkconfig iptables off#重啟后生效
2.4 關閉SELINUX(每一個節點)
修改/etc/selinux/config 文件的 SELINUX=disabled #重啟生效
查看 SELINUX 狀態:
/usr/sbin/sestatus –v
#SELinux status: enabled( enabled:開啟; disabled:關閉)
#========重啟系統(如果已關閉可不用重啟)============
2.5 安裝jdk[每一個節點]
注意如果采取其他安裝,建議java解壓目錄要在/usr/java,不然cloudera manager 容易找不到jdk
rpm -ivh jdk-7u67-linux-x64.rpm
進入/etc/profile,修改環境變量
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2.6 配置ntp
master節點作為ntp服務器與外界對時中心同步時間,
隨后對所有datanode節點提供時間同步服務,所有datanode節點以master節點為基礎同步時間。
所有節點安裝相關組件
sudo yum install ntp
所有節點配置開機啟動
sudo chkconfig ntpd on
檢查是否設置成功
sudo chkconfig --list ntpd #其中2-5為on狀態就代表成功
2.6.1 主節點設置:
#sudo vi /etc/ntp.conf 進入文件
server 0.cn.pool.ntp.org perfer
server 1.asia.pool.ntp.org
server 3.asia.pool.ntp.org
server ntp.sjtu.edu.cn
2.6.2 slave節點設置:
#sudo vi /etc/ntp.conf 進入文件
server master
保存退出
sudo ntpdate -u 202.112.29.82
sudo ntpdate -u 202.120.2.101 #請先使用ntpdate手動同步一下時間[每個節點]
sudo service ntpd restart #配置完成后啟動服務[每個節點]
sudo ntpdate -u master#slave節點以master節點為基礎同步時間。
sudo ntpstat #查看同步效果
注:如果ntpstat狀態未同步,可以等待5~10分鐘再查看。
5到10分鐘后
3.Cloudera Manager安裝
安裝文件:
cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主節點安裝,slave安裝(可選)
cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主節點安裝,slave安裝(可選)
cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主節點安裝
cloudera-manager-server-db-2-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主節點安裝,內置數據庫,可選
enterprise-debuginfo-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
3.1 master安裝
在master 節點安裝daemons、server、agent(先裝daemons)
yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安裝需要聯網
3.2 slave安裝
在節點安裝daemons、agent(先裝daemons)
yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安裝需要聯網
3.3 配置主節點以及其他節點agent的config.ini文件
在每個 Cloudera Manager Agent 主機上,通過在
/etc/cloudera-scm-agent/config.ini 配置文件中設置以下屬性,
配置 Cloudera Manager Agent 以指向 Cloudera Manager Server
#sudo vi /etc/cloudera-scm-agent/config.ini 進入文件
server_host=master
4 Master安裝mysql 并配置權限等。
需要配置數據庫,此教程選用最常用的mysql,其中oozie服務包括工作流的信息,可能導致數據會增加很多
安裝mysql并檢查服務
yum install mysql-server mysql mysql-deve #注:需要聯網
chkconfig mysqld on
service mysqld start
進入mysq密碼配置
mysql –u root
use mysql
update user set password=password('hadoop') where user='root';
update user set password=password('hadoop') where host='localhost';
update user set password=password('hadoop') where host='master';
重啟服務
service mysqld restart
配置數據庫權限
mysql -u root -phadoop
create database cloudera
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
5 在master節點配置cloudera manager 數據庫并啟動cm的server及agent程序
master操作步驟
- 拷貝mysql-connector-java-3.1.14-bin.jar 到 /usr/share/java 下并重命名mysql-connector-java.jar
- 運行
/usr/share/cmf/schema/scm_prepare_database.sh -h master mysql cloudera root hadoop
- 啟動cm server
service cloudera-scm-server start
- 添加cm server服務
chkconfig cloudera-scm-server on
- 啟動cm agent
sudo service cloudera-scm-agent start
- 添加cm agent服務
chkconfig cloudera-scm-agent on
slave節點上重復其中兩步
- 啟動cm agent
sudo service cloudera-scm-agent start
- 添加cm agent服務
chkconfig cloudera-scm-agent on
6 CDH5 安裝[這一步所需時間較長]
sudo service httpd start #在master啟動http,能夠后面找到對應的parcel包
將下載的parcel文件及官方網站上獲取對應版本的 sha 文件和 manifest.json文件上傳至/opt/cloudera/parcel-repo目錄下。
啟動瀏覽器,開始集群web安裝配置
Master:7180 => 192.168.75.141:7180 賬號:admin 密碼admin
cdhparcel包已經放到對應的庫, 不需要下載,其他的服務下載速度較慢,如果時間不那么充足可以日后再下載和添加服務
#針對第一個警告
echo 'vm.swappiness=10'>> /etc/sysctl.conf
#針對第二個警告
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local
選擇所有服務
角色分配,此處使用默認
#需要預先建立測試數據庫,重新運行
create database hive character set utf8;
create database oozie character set utf8;
因為虛擬機內存和空間不夠,導致一些警告某些監控無法完全安裝成功。
此外,啟動所有服務那一步安裝時間非常長,耐心等待。
7 測試組件
7.1 驗證MR程序
# 添加用戶和組
groupadd cdh-dev
useradd -g cdh-dev cdh-dev
lid cdh-dev
# hadoop創建相應的用戶
sudo -u hdfs hdfs dfs -mkdir /user/cdh-dev
sudo -u hdfs hdfs dfs -chown cdh-dev:cdh-dev /user/cdh-dev
# 運行wordcount程序
su - cdh-dev
echo "Hello world Bye world" > file0
echo "Hello hadoop Goodbye hadoop" > file1
hdfs dfs -mkdir -p /user/cdh-dev/wordcount/input
hdfs dfs -put file* /user/cdh-dev/wordcount/input
hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount wordcount/input wordcount/output
hdfs dfs -getmerge wordcount/output output.txt
cat output.txt
7.2 驗證hive
su - cdh-dev
echo "Alex, Cloudera" > hive-data
echo "fd, jinz" >> hive-data
hdfs dfs -mkdir -p hive/table-data-files
hdfs dfs -put hive-data hive/table-data-files
vi hive-data.sql
create external table test(
name string,
company string
)
row format delimited
fields terminated by ','
stored as textfile
location '/user/cdh-dev/hive/table-data-files'
hive -f hive-data.sql
hive -e "select * from test"
7.3 驗證HBase
create 'record', {NAME => 'user'}
put 'record', 'Alex', 'user:company', 'Cloudera'
get 'record', 'Alex'
# 用vi創建文件 hbase_on_hive.hql
create external table hbase_on_hive(
name string,
company string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ( "hbase.columns.mapping" = ":key, user:company" )
tblproperties ( "hbase.table.name" = "record" );
hive -f hbase_on_hive.hql
hive -e "select * from hbase_on_hive"
附錄監控界面
192.168.75.141 - master
- 整體監控界面:http://192.168.75.141:7180
- 集群任務管理監控界面:http://192.168.75.141:8088
- hive監控界面:http://192.168.75.141:10002/
- spark監控界面:http://192.168.75.141:18088/
- hue使用界面:http://192.168.75.141:8888
- hdfs監控界面:http://192.168.75.141:50070