CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了不少补丁,可直接用于生产环境。java
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理作了极大简化。node
注:本文档全部操做均使用root登录操做。mysql
iplinux |
节点编号web |
名称sql |
物理机shell |
192.168.1.170数据库 |
masterexpress |
管理节点json |
本地 |
192.168.1.181 |
n1 |
节点1 |
本地 |
192.168.1.182 |
n2 |
节点2 |
192.168.1.5 |
192.168.1.184 |
n3 |
节点3 |
192.168.1.5 |
打开/etc/sysconfig/network文件。
修改”HOSTNAME”为指定的节点编号。
如图所示:
在命令窗口执行:service network restart
重启网络服务生效。
打开/etc/hosts文件。
将ip及节点编号存入。例如:
192.168.1.170 master
192.168.1.181 n1
192.168.1.182 n2
192.168.1.184 n3
如图所示:
注意:这里须要将每台机器的ip及主机名对应关系都写进去,管理节点的也要写进去,不然启动Agent的时候会提示hostname解析错误。
一、 在命令窗口执行:ssh-keygen -t rsa
此后,一路回车,生成无密码的密钥对。
二、 以后在命令窗口执行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将公钥添加到认证文件中。
三、 再以后,在命令窗口执行:chmod 600 ~/.ssh/authorized_keys
设置authorized_keys的访问权限。
在命令窗口执行:scp ~/.ssh/authorized_keys root@n1:~/.ssh/
测试:在主节点上ssh 节点n1,正常状况下,不须要密码就能直接登录进去了。
有时可能须要重启才能联通。
CentOS自带OpenJdk,但运行CDH5须要使用Oracle的Jdk,须要Java 7的支持。
在命令窗口执行:rpm -qa | grep java
一、 在/etc下建立文件夹/java,并将jdk-7u79-linux-x64.tar.gz拷贝到”/etc/java文件夹中”
二、 在命令窗口执行:tar xvf jdk-7u79-linux-x64.tar.gz
进行解压缩。
三、 打开/etc/profile文件,在末尾追加以下内容:
export JAVA_HOME=/etc/java/jdk1.7.0_79
export JRE_HOME=/etc/java/jdk1.7.0_79/jre
export PATH=$PATH:/etc/java/jdk1.7.0_79/bin
export CLASSPATH=./:/etc/java/jdk1.7.0_79/lib:/etc/java/jdk1.7.0_79/jre/lib
四、 从新启动系统后,输入:java -version,若是看到以下截图说明你的jdk已经安装成功了。
在命令窗口执行:yum install mysql-server
“mysqld”是用来启动mysql数据库的命令。
设置开机启动,在命令窗口执行:chkconfig mysqld on
启动mysql服务,在命令窗口执行:service mysqld start
在命令窗口执行:mysqladmin -u root password 'root'
在命令窗口执行:mysql -uroot -proot(注意此处语法为mysql –u用户名 –p密码)
在命令窗口执行:create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;(#hive)
以后,在命令窗口再执行:create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;(#activity monitor)
在命令窗口执行:grant all privileges on *.* to 'root'@'master' identified by 'root' with grant option;(注意identified by后跟的是’密码’)
以后,为促使设置生效,在命令窗口执行:flush privileges;
最终可执行”exit;”命令退出mysql登录状态。
在命令窗口执行:service iptables stop(临时关闭)
在命令窗口执行:chkconfig iptables off(重启后生效)
在命令窗口执行:setenforce 0(临时关闭)
修改/etc/selinux/config文件中的 SELINUX=disabled(重启后永久生效)
集群中全部主机必须保持时间同步,若是时间相差较大会引发各类问题。具体思路以下:
master节点做为ntp服务器与外界对时中心同步时间,随后对全部datanode节点提供时间同步服务。
全部datanode节点以master节点为基础同步时间。
在命令窗口执行:yum install ntp
在命令窗口执行:chkconfig ntpd on
在命令窗口执行:chkconfig --list ntpd
其中2-5为on(启动)状态就表明成功
打开/etc/ntp.conf文件,注释掉“server”相关的内容,仅留以下内容:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
# 容许内网其余机器同步时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 0.centos.pool.ntp.org perfer
# 容许上层时间服务器主动修改本机时间
restrict 0.centos.pool.ntp.org nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间做为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
设置配置文件,
为免本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用阿里巴巴0.centos.pool.ntp.org做为对时中心,
在命令窗口执行:ntpdate -u 0.centos.pool.ntp.org
在命令窗口执行:service ntpd start
以后,在命令窗口执行:ntpstat(查看同步状态,出现下图所示内容表示同步成功)
若是出现异常请等待几分钟,通常等待5-30分钟才能同步。
打开/etc/ntp.conf文件,注释掉“server”相关的内容,仅留以下内容:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
#这里是主节点的主机名或者ip,仅设置主节点
server master
# 外部时间服务器不可用时,以本地时间做为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
注:若是在命令窗口执行:ntpdate -d master出现以下结果:
正常状况下stratum这个值得范围是“0~15”。出现这个状况,是由于NTP server尚未和其自身或者它的server同步上。须要查主节点服务是否已经正常启动。
将下载的cloudera-manager-el6-cm5.1.3_x86_64.tar.gz文件放在/opt目录下,以后解压缩,进入/opt目录后,在命令窗口执行:tar xzvf cloudera-manager*.tar.gz
找到mysql的jdbc驱动mysql-connector-java-5.1.38-bin.jar,并放到/opt/cm-5.1.3/share/cmf/lib/中。
在命令窗口执行:useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在命令窗口执行:/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
报错信息以下:
[root@master ~]# /opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
Verifying that we can write to /opt/cm-5.1.3/etc/cloudera-scm-server
log4j:ERROR Could not find value for key log4j.appender.A
log4j:ERROR Could not instantiate appender named "A".
Creating SCM configuration file in /opt/cm-5.1.3/etc/cloudera-scm-server
groups: cloudera-scm:无此用户
Executing: /etc/java/jdk1.7.0_79/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cm-5.1.3/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cm-5.1.3/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
log4j:ERROR Could not find value for key log4j.appender.A
log4j:ERROR Could not instantiate appender named "A".
[2016-04-13 03:18:09,146] INFO 0[main] - com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java:238) - Successfully connected to database.
All done, your SCM database is configured correctly!
修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名,即将”server_host”的值置为”master”。
在命令窗口对各节点执行:scp -r /opt/cm-5.1.3 root@n1:/opt/
在命令窗口执行:useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo须要手动建立)。
相关的文件以下:
1>、CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
2>、CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
3>、manifest.json
最后将CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名为CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,这点必须注意,不然,系统会从新下载CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。
在命令窗口执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start(启动cloudera-scm服务端)(仅主节点)。
以后,在命令窗口执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(启动Agent服务)(主节点及各datanode节点)。
在此启动的实际上是个service脚本,须要中止服务将以上的start参数改成stop就能够了,重启是restart。
以VMware的克隆功能生成一个节点所在的虚拟机。
一、在系统->首选项->网络链接中,进行网络设置。
二、打开/etc/sysconfig/network文件。
修改”HOSTNAME”为指定的节点编号。
三、打开/etc/hosts文件。
将新的ip及节点编号存入。
四、在命令窗口执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(启动Agent服务)。
打开/etc/hosts文件。
将新的ip及节点编号存入。
一、测试群定ssh畅通(需新节点nN在线)
在命令窗口执行:scp ~/.ssh/authorized_keys root@nN:~/.ssh/
测试:在主节点上ssh 节点nN,正常状况下,不须要密码就能直接登录进去了。
有时可能须要重启才能联通。
Cloudera Manager Server和Agent都启动之后,就能够进行CDH5的安装配置了。
这时能够经过浏览器访问主节点的7180端口测试一下了(因为CM Server的启动须要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:
如下操做,须要先保证8.9的服务已所有启动。
访问地址:http://master:7180/cmf/login
用户名/密码:admin/admin
各个Agent节点正常启动后,能够在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。如图所示:
点击“继续”按钮,若是出现以下图所示界面,说明本地Parcel包配置无误,直接点继续就能够了。
点击,继续,若是配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,而后就是耐心等待分配过程就好了,以下图所示,大约10-20分钟,取决于内网网速。
点击“继续”按钮,开始服务器检查,可能弹出以下信息“
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您能够继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机因为交换运行情况不佳。如下主机受到影响:
”,以下图所示
在命令窗口执行:echo 0 > /proc/sys/vm/swappiness,便可解决此文问题,点击“返回”按钮,以后点击“继续”,从新检查便可看到结果。点击“完成”,可进入集群设置界面。
在此选择“全部服务”,以后点“继续”,进入角色分配界面。
通常状况下保持默认就能够了(Cloudera Manager会根据机器的配置自动进行配置,若是须要特殊调整,自行进行设置就能够了),点击“继续”进入数据库设置界面。
此刻依照第5部分所设,数据库:“hive”,用户名/密码:”root/root”
保持默认。但注意,这里安装Hive的时候可能会报错,由于咱们使用了MySql做为hive的元数据存储,hive默认没有带mysql的驱动,经过如下命令拷贝一个就好了:
cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/
点击“重试”。最终展示以下图所示界面
http://master:7180/cmf/clusters/2/express-add-services/index
以VMware的克隆功能生成一个节点所在的虚拟机。
一、在系统->首选项->网络链接中,进行网络设置。
二、打开/etc/sysconfig/network文件。
修改”HOSTNAME”为指定的节点编号。
三、打开/etc/hosts文件。
将新的ip及节点编号存入。
四、清除已有受权(与9有区别)
将“/opt/cm-5.1.3/lib/cloudera-scm-agent”下的文件“uuid”删掉。
五、在命令窗口执行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(启动Agent服务)。
打开/etc/hosts文件。
将新的ip及节点编号存入。
一、测试群定ssh畅通(需新节点nN在线)
在命令窗口执行:scp ~/.ssh/authorized_keys root@nN:~/.ssh/
测试:在主节点上ssh 节点nN,正常状况下,不须要密码就能直接登录进去了。
有时可能须要重启才能联通。
一、在主界面->主机中,选择“向集群添加新主机”,选择新节点nN以后点击“继续”
二、选择主机模板选择“srit_node_model”,以下图所示
点击“完成”即完成配置。
此时,mysql驱动莫名其妙也被删除,将会形成hive没法启动,此时须要在命令窗口从新执行:cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/