## 安裝方式的選擇
hadoop以服務(wù)過(guò)多且互補(bǔ)兼容出名. 這導(dǎo)致使用apache的官方方式安裝hadoop集群是件非常吃力的事情. 即使可以做到自己探索并成功完成hadoop各個(gè)服務(wù)的安裝和測(cè)試也會(huì)又隱患. 因?yàn)闄C(jī)器將來(lái)需要安裝的服務(wù)有可能和你的版本不兼容.
所以生產(chǎn)環(huán)境推薦使用CDH等商業(yè)發(fā)行版本. 好處是:
1. 簡(jiǎn)單不易出錯(cuò)
2. 測(cè)試過(guò)hadoop的版本兼容性
3. 使用廣泛, 其他開(kāi)源服務(wù)基本上都會(huì)在主流發(fā)行版本上進(jìn)行測(cè)試
cloudera安裝過(guò)程需要聯(lián)網(wǎng),對(duì)于大陸上網(wǎng)環(huán)境來(lái)說(shuō)可能是個(gè)重要瓶頸柱告。本文檔使用了代理, 不過(guò)也可以使用離線下載的方式(把安裝把全部下載到本地).
## 機(jī)器的部署方案
hadoop集群安裝至少要4臺(tái)機(jī)器末荐,這里我們假設(shè)有10臺(tái)機(jī)器編號(hào)yun[00-09]。
yun00機(jī)器為master機(jī)器, 安裝cloudera-server, 然后所有機(jī)器(包括master)安裝cloudera-agent. master為總控機(jī)器, 負(fù)責(zé)發(fā)號(hào)施令. agent負(fù)責(zé)在本地執(zhí)行命令.
主機(jī)的規(guī)劃如下:
1. zookeeper 一般是三臺(tái)
2. zookeeper 不要和yarn部署在同一臺(tái)機(jī)器上, 因?yàn)閦ookeeper負(fù)責(zé)yarn的HA方案, 如果混合部署極容易出現(xiàn)yarn和zookeeper同時(shí)出問(wèn)題的情況.
3. HDFS 的NameNode和SecondaryNameNode部署在不同的機(jī)器上.
4. NodeManager和DataNode一起部署.
## 修改系統(tǒng)hostname
目標(biāo)機(jī)器: 所有
略
## 系統(tǒng)間ssh免監(jiān)權(quán)
目標(biāo)機(jī)器: 所有
略
## 操作系統(tǒng)的優(yōu)化
目標(biāo)機(jī)器: 所有
我們使用centos 7.4 需要做的優(yōu)化很少.
首先是關(guān)閉所謂的透明大頁(yè)內(nèi)存管理(Transparent HugePage). THP會(huì)給運(yùn)行時(shí)動(dòng)態(tài)內(nèi)存分配打來(lái)延遲. 所以不僅僅是hadoop, mysql, oracle的部署都是建議關(guān)閉THP的.
立即生效:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
重啟生效:
將上兩句追加到 /etc/rc.local 中。
其次块请,關(guān)閉swap分區(qū)(略)。
最后安裝下必要的依賴:
yum -y install psmisc libxslt screen telnet
yum -y install httpd mod_ssl
## 安裝 java1.7
目標(biāo)機(jī)器: 所有
hadoop目前穩(wěn)定支持的java版本還是1.7贸弥。
wgethttps://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common/x86_64/jdk-7u80-linux-x64.rpm
rpm -ivh jdk-7u80-linux-x64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
rpm -ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
將如下兩句追加到/etc/profile:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export CLASSPATH=.:$CLASSPTAH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
java -version可以驗(yàn)證java是否安裝正確绵疲。
其次需要安裝mysql的javaconnect臣疑。
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar -xvf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar
## 保證各個(gè)機(jī)器時(shí)間同步
目標(biāo)機(jī)器:所有
hadoop對(duì)于各個(gè)機(jī)器的時(shí)鐘要求非常嚴(yán)格,必須安裝ntp保證時(shí)鐘同步郁岩。
yum install ntp -y
如果是阿里云機(jī)器不需要其他設(shè)置缺狠,會(huì)自動(dòng)和阿里云同步時(shí)間。
安裝 mysql 5.6
目標(biāo)機(jī)器: master
如果有條件, 準(zhǔn)備一個(gè)國(guó)外機(jī)器, 用于下載文件. 不然在大陸的網(wǎng)絡(luò)環(huán)境下, 下載數(shù)G的文件將是一個(gè)災(zāi)難.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server.x86_64 -y
啟動(dòng)mysql:
systemctl start mysqld
systemctl enable mysqld
配置mysql:
mysql_secure_installation # 配置mysqlroot等
使用root登陸mysql并創(chuàng)建用戶和database:
grant all privileges on cm.* to cm@'%' identified by 'dHuuj3JE';
grant all privileges on hive.* to hive@'%' identified by 'dHuuj3JE';
grant all privileges on hue.* to hue@'%' identified by 'dHuuj3JE';
grant all privileges on oozie.* to oozie@'%' identified by 'dHuuj3JE';
flush privileges;
create database cm DEFAULT CHARACTER SET utf8;
create database hive DEFAULT CHARACTER SET utf8;
create database hue DEFAULT CHARACTER SET utf8;
create database oozie DEFAULT CHARACTER SET utf8;
其中cm用戶和cm數(shù)據(jù)庫(kù)是給cloudera服務(wù)本身使用的。其他賬號(hào)和數(shù)據(jù)庫(kù)看名字就知道了穷劈。
準(zhǔn)備安裝需要的包和文件
目標(biāo)機(jī)器: 所有
cd /tmp
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-agent-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-daemons-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-server-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-daemons-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-server-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-agent-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
啟動(dòng)cloudera-cm-server
目標(biāo)機(jī)器:master
初始化數(shù)據(jù)庫(kù)配置:
/opt/cm-5.13.3/share/cmf/schema/scm_prepare_database.sh --host yun00 mysql cm cm dHuuj3JE
啟動(dòng)scm-server:
systemctl start cloudera-scm-server
systemctl enable cloudera-scm-server
啟動(dòng)cloudera-server-agent
目標(biāo)機(jī)器:agent
配置:
vim /opt/cm-5.13.3/etc/cloudera-scm-agent/config.ini
# Hostname of the CM server.
server_host=yun00
啟動(dòng)scm-agent:
systemctl start cloudera-scm-agent
systemctl enable cloudera-scm-agent
添加cloudera帳號(hào)
目標(biāo)機(jī)器: 所有
useradd --home=/opt/cm-5.13.3/run/cloudera-scm-server --no-create-home --shell=/bin/bash --comment "Cloudera SCM User" cloudera-scm
usermod -a -G root cloudera-scm
echo USER=\"cloudera-scm\" >> /etc/default/cloudera-scm-agent
echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" >> /etc/sudoers
啟動(dòng)cm server
目標(biāo)機(jī)器: master
/opt/cm-5.13.3/etc/init.d/cloudera-scm-server start
tail -f /opt/cm-5.13.3/log/cloudera-scm-server/cloudera-scm-server.log
啟動(dòng)cm agent
目標(biāo)機(jī)器: 所有
mkdir -p /opt/cm-5.13.3/run/cloudera-scm-agent; chown cloudera-scm:cloudera-scm /opt/cm-5.13.3/run/cloudera-scm-agent
/opt/cm-5.13.3/etc/init.d/cloudera-scm-agent start
至此cloudera安裝完畢, 下面的步驟就是使用cloudera安裝hadoop了, 安裝過(guò)程非常簡(jiǎn)單, 基本上是一路回車.
安裝hadoop
略
配置hdfs權(quán)限
su hdfs
hdfs dfs -chmod -R 777 /user
開(kāi)發(fā)機(jī)的安裝
使用cdh搭建hadoop集群后需要安裝客戶端機(jī)器, 才能安全的給團(tuán)隊(duì)成員使用. CDH可以支持安裝客戶端機(jī)器. 在CDH中客戶端機(jī)器叫g(shù)ateway. 只需要將客戶端機(jī)器加入集群并設(shè)計(jì)角色為各個(gè)服務(wù)的gateway就可以了. 這樣就實(shí)現(xiàn)了服務(wù)與使用的分離.