下載地址:http://archive.cloudera.com/cdh5/parcels/latest/html
下載操做系統對應的版本:java
1.CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcelnode
2.CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1mysql
3.Manifest.jsonlinux
下載地址:http://archive-primary.cloudera.com/cm5/cm/5/sql
下載操做系統對應的版本:shell
1.cloudera-manager-e17-cm5.3.0_x86_64.tar.gz數據庫
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmlapache
CDH支持Java 8,若能夠請選擇Java 8版本或Java 7最新版:json
1.jdk-7u71-linux-x64.rpm
下載地址:http://dev.mysql.com/downloads/connector/j/
須要登陸纔可下載:
1.mysql-connector-java-5.1.34-bin.jar
若無特殊需求將CDH安裝在root用戶下最佳。
全部配置完成後需重啓集羣全部機器。
登陸集羣全部機器
執行命令:
Vi /etc/hostname
把機器名寫入
master
vi /etc/hosts
將集羣角色和IP寫入,相似
192.168.60.3 master
127.0.0.1 master localhost
192.168.60.4 slave01
192.168.60.5 slave02
備註:
若出現域名/通訊方面的錯誤可將127.0.0.1該行註釋掉
登陸Master機器
執行命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 $_
將authorized_keys scp到全部Slave節點上:
scp ~/.ssh/authorized_keys hadoop@slaves:~/.ssh/
備註:
若沒法免密碼登陸,需登陸至Slave節點並執行命令:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
登陸集羣全部機器
執行命令:
cat << EOF >> /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1
EOF
sysctl -p
使用lsmod查看ipv6的模塊是否被加載
登陸集羣全部機器
執行命令:
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
查看SELinux狀態:
一、/usr/sbin/sestatus -v ##若是SELinux status參數爲enabled即爲開啓狀態
SELinux status: enabled
登陸集羣全部機器
執行命令:
systemctl stop firewalld.service
systemctl disable firewalld.service
查看 iptables -L
登陸集羣全部機器
執行命令:
vi /etc/security/limits.conf
根據當前用戶名,添加
cat << EOF >> /etc/security/limits.conf
root soft nproc 102400
root hard nproc 163840
root soft nofile 102400
root hard nofile 655360
root soft stack 102400
EOF
執行命令:
cat << EOF >> /etc/pam.d/login
session required pam_limits.so
EOF
登陸集羣全部機器
查看是否自帶OpenJDK:
rpm -qa | grep java
卸載再帶的JDK:
rpm -e --nodeps 包名
安裝JDK:
rpm -i jdk-7u71-linux-x64.rpm
yum -y install psmisc
yum -y install libxslt
yum -y install screen
yum -y install telnet
登陸Master機器
若能夠聯網,執行命令:
yum install mysql-server
若沒法聯網,google如何安裝(^_^)
添加爲自啓動:
chkconfig mysqld on
啓動mysql:
service mysqld start
修改root密碼:
mysqladmin -u root password '123456'
進入mysql:
mysql -uroot -p123456
建立數據庫:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database ooz DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue default charset utf8 collate utf8_general_ci;
受權:
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
master機器:
cat << EOF > /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server 127.127.1.0 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
EOF
slave機器:
cat << EOF > /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
server master
include file /etc/ntp/crypto/pw
keys /etc/ntp/keys
EOF
啓動NTP服務:
systemctl enable ntpd.service
systemctl restart ntpd.service
登陸全部Slave機器
執行命令:
ntpdate master
/sbin/hwclock –w
systemctl enable ntpd.service
systemctl restart ntpd.service
查看命令:
ntpq –p
sysctl -w vm.swappiness=1
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
cat << EOF >> /etc/rc.local
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
EOF
登陸集羣全部機器
執行命令:
useradd --system --home=/opt/cm-5.3.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
登陸Master機器
將cloudera-manager-e17-cm5.3.0_x86_64.tar.gz文件加壓至/opt下,產生2個文件夾cloudera和cm-5.3.0。
登陸Master機器
將mysql-connector-java-5.1.34-bin.jar拷貝至/opt/cm-5.3.0/share/cmf/lib/
登陸Master機器
執行命令:
/opt/cm-5.3.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm
登陸Master機器
執行命令:
vi /opt/cm-5.3.0/etc/cloudera-scm-agent/config.ini
將server_host的值改爲Master機器的名稱
登陸Master機器
執行命令:
scp -r /opt/cm-5.3.0 root@slave[1-xx]:/opt/
登陸Master機器
將CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel、CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1和Manifest.json三個文件拷貝至/opt/cloudera/parcel-repo/文件夾下。
並將CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1重命名爲CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha。
啓動Cloudera Manager後等待1-3分鐘,而後訪問http://主節點IP:7180,若能夠訪問則表示安裝成功。
登陸Master機器
執行命令:
/opt/cm-5.3.0/etc/init.d/cloudera-scm-server start
登陸集羣全部機器
執行命令:
/opt/cm-5.3.0/etc/init.d/cloudera-scm-agent start
用戶名密碼皆爲admin。
勾選上須要安裝的主機。
能夠看到所下載並安裝的CDH版本表示前面部署成功,不然須要在線下載。
前面配置無誤則無須下載,不然表示前面配置有誤。
分發可能須要一段時間,視集羣大小而定(此時集羣必定要保證Master能夠免密碼登陸到其它機器上)。
檢查集羣的情況,可根據提示信息修改配置並從新檢查。
選擇須要安裝的組件,可自定義安裝。
給集羣各個節點分配角色,目前所知道須要注意的地方是HBase Thrift Server不要爲空,不然Hue沒法訪問HBase。
設置mysql鏈接。
後面的一路「繼續」下去便可。安裝所需時間較長,請耐心等待。
Jobtracker
Namenode
http://master:50070/dfshealth.jsp
Hue
Cloudera Manager
HBase
http://master:60010/master-status/
1. 運行Hadoop程序報錯:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
——修改dfs.permissions爲false,以下圖所示。
2. 訪問Cloudera Manager出現「沒法發出查詢:對 Service Monitor 的請求超時」。
——通常是沒有問題的,可能服務器較卡致使的,多刷新幾回便可。
3. hive建立表出問題
把mysql-connector-java-5.1.34-bin.jar 拷到/opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hive/lib
4. oozie建立表出問題
把mysql-connector-java-5.1.34-bin.jar 拷到/opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib和
/var/lib/oozie/下
5. 遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-agent啓動不了
能夠 ps -ef | grep agent看看,把啓動的agent服務關了
6. 遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-server啓動不了
能夠 ps -ef | grep server看看,把啓動的server服務關了
7. yarn啓動出問題,多是cm自身的bug,按照如下方法試試
解決方法爲修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。將其中的代碼:
1 2 |
pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env" % (path, command)], stdout=subprocess.PIPE, env=caller_env) |
修改成:
1 2 |
pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env | grep -v { | grep -v }" % (path, command)], stdout=subprocess.PIPE, env=caller_env) |
而後重啓全部Agent便可。
8. 若要刪除cm目錄,而刪除不了,能夠用一下方法
df -h 查看cm後臺進程,用umount 進程名 ,刪除再試試
9. 若出現數據庫鏈接出問題
1)能夠看看是否建立了相應的數據庫
2)多是master主機下的root用戶在mysql數據庫的密碼爲空
登錄mysql,use mysql;
update User set password=‘xxxx’where hostname=‘master’and user=‘root’;
commit;
flush privileges;
十、注意master要免密碼登陸本身
十一、8888,50070,8088等端口沒法訪問
現象:master機器經過wget能夠正確的獲得頁面,可是外網卻沒法獲取,並且網絡的設置是正確的。
查看端口占用發現這些端口所有綁定在內網IP上而不是0.0.0.0。
解決方法:去各自的配置文件中配置便可,選擇綁定至0.0.0.0端口,而後重啓便可。
十二、oozie服務啓動失敗
一般是第二次嘗試安裝中才會遇到,報錯內容大概是數據庫已存在。
解決方法:刪除/var/lib/oozie/data文件夾便可。
1三、HUE服務啓動失敗
報錯信息是找不到libxslt.so.1。
解決方法:yum install libxslt便可。
1四、若是hadoop fs -mkdir /user/mmm時出錯,是因爲權限問題引發的,能夠經過cm端找到hdfs服務修改 相應配置
1五、Phoenix
http://archive-primary.cloudera.com/cloudera-labs/
1)phoenix和spark整合:
在spark-conf/spark-env.sh中配置
SPARK_DIST_CLASSPATH="$SPARK_DIST_CLASSPATH:/opt/cloudera/parcels/CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000/lib/phoenix/phoenix-4.7.0-clabs-phoenix1.3.0-client.jar"
export SPARK_YARN_USER_ENV="CLASSPATH=$HADOOP_CONF_DIR"
2)phoenix 二級索引須要的配置
<property><name>hbase.regionserver.wal.codec</name><value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value></property>
3)phoenix 4.8 中使用 schema 和 Namespace 對應的配置
<property><name>phoenix.schema.isNamespaceMappingEnabled</name><value>true</value></property>
A namespace is a logical grouping of tables analogous to a database in relation database systems. This abstraction lays the groundwork for upcoming multi-tenancy related features:
注意:cloudera manager 目前phoenix最新版本是4.7(不支持此功能)
http://blog.cloudera.com/blog/2015/11/new-apache-phoenix-4-5-2-package-from-cloudera-labs/
1六、用Apache的spark調用 cdh的yarnHA會出問題,去掉HA配置就會好了,問題是:
java.lang.IllegalArgumentException: Invalid ContainerId: container_e02_1483668670771_0005_02_000001
1七、應用 spark的HiveContext 時,若是沒有配置Hive服務以及和spark的依賴關係,則 HiveContext 會用derby 數據庫,形成不能同時有兩個應用運行。經過配置以MySQL爲元數據庫的Hive後,此問題不復存在。
具體問題見下:
Caused by: ERROR XSDB6: Another instance ofDerbymay have already booted the database ~~~~
1八、爲了能讓 nodemanager機器上也能啓動yarn任務,需在yarn-site.xml 中配置
<property><name>yarn.resourcemanager.address</name><value>XXX:8032</value></property>
<property><name>yarn.resourcemanager.scheduler.address</name><value>XXX:8030</value></property>
<property><name>yarn.resourcemanager.resource-tracker.address</name><value>XXX:8031</value></property>
<property><name>yarn.resourcemanager.hostname</name><value>XXX</value></property>
<property><name>yarn.resourcemanager.admin.address</name><value>XXX:8033</value></property>