192.168.58.44 cdh1
192.168.58.45 cdh2
192.168.58.46 cdh3
CDH下载 | Cloudrea Manager5下载
文件 | 下载链接 |
---|---|
CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel | 点击下载 |
CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel.sha1 | 点击下载 |
cloudera-manager-agent-5.4.5-1.cm545.p0.5.el6.x86_64.rpm | 点击下载 |
cloudera-manager-daemons-5.4.5-1.cm545.p0.5.el6.x86_64.rpm | 点击下载 |
cloudera-manager-el6-cm5.4.5_x86_64.tar.gz | 点击下载 |
manifest.json | 点击下载 |
jdk-7u80-linux-x64.tar.gz | 点击下载 |
mysql-5.5.50-linux2.6-x86_64.tar.gz | 点击下载 |
mysql-connector-java-5.1.25.jar | 点击下载 |
注:支持系统及JDK版本参考官网
编辑/etc/sysconfig/network
,修改hostname, (需重启使其生效)
NETWORKING=yes
HOSTNAME=qbcdhserv1 // 每台机器给出不同机器名
修改集群内所有机器/etc/hosts
文件, 添加如下配置 (需重启使其生效)
192.168.58.44 cdh1
192.168.58.45 cdh2
192.168.58.46 cdh3
修改/etc/selinux/config
文件 ,将SELINUX=enforcing
改为SELINUX=disabled
[root@cdh1 .ssh]# service iptables status
iptables: Firewall is not running. //已经关闭
service iptables stop
Chkconfig iptables off //永久关闭
fdisk -l
[root@i-A4A21CB9 ~]# fdisk -l //查看硬盘分区信息
Disk /dev/vda: 64.4 GB, 64424509440 bytes //第一块硬盘(vda)大小
16 heads, 63 sectors/track, 124830 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000afe6b
//第一块硬盘分成三个区 vda1 vda2 vda3
Device Boot Start End Blocks Id System
/dev/vda1 * 3 409 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/vda2 409 17053 8388608 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/vda3 17053 124831 54320128 83 Linux
Partition 3 does not end on cylinder boundary.
Disk /dev/vdb: 536.9 GB, 536870912000 bytes //第二块硬盘(vdb)大小
16 heads, 63 sectors/track, 1040253 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x650ed6ce
//第二块硬盘未分区
Device Boot Start End Blocks Id System
fdisk /dev/vdb
,进入分区交互对话状态. 键入m
命令可以查看此交换状态的命令帮助,其中n
:创建分区 d
:删除分区 p
:打印分区信息 w
:保存[root@i-6CBF585F ~]# fdisk /dev/vdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition //删除一个分区
l list known partition types
m print this menu
n add a new partition //增加一个分区
o create a new empty DOS partition table
p print the partition table //打印分区信息
q quit without saving changes //退出交互状态
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit //将所有的操作写入磁盘即保存
x extra functionality (experts only)
Command (m for help):
Command (m for help): n //增加一个分区
Command action
e extended //扩展分区
p primary partition (1-4) //主分区
e //输入的e键,即创建一个扩展分区
Partition number (1-4): 1 //分区的id号,此为第一个分区
First cylinder (1-1040253, default 1): //分区的起始柱面大小,默认直接回车就行
Using default value 1 //默认卷标
Last cylinder, +cylinders or +size{K,M,G} (1-1040253, default 1040253):
Using default value 1040253
Command (m for help): p //打印分区信息
Disk /dev/vdb: 536.9 GB, 536870912000 bytes
16 heads, 63 sectors/track, 1040253 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc5d68871
//分区信息列表 刚刚创建的为扩展分区,
Device Boot Start End Blocks Id System
/dev/vdb1 1 1040253 524287480+ 5 Extended
Command (m for help): n
l logical (5 or over)
p primary partition (1-4)
l //接下来在扩展分区上创建逻辑分区
First cylinder (1-1040253, default 1): //分区的起始柱面大小,默认直接回车就行
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1040253, default 1040253):
Using default value 1040253
Command (m for help): p //打印分区信息
Disk /dev/vdb: 536.9 GB, 536870912000 bytes
16 heads, 63 sectors/track, 1040253 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc5d68871
//一个扩展分区,在扩展分区上的逻辑分区
Device Boot Start End Blocks Id System
/dev/vdb1 1 1040253 524287480+ 5 Extended
/dev/vdb5 1 1040253 524287449 83 Linux
Command (m for help): w //w保存修改
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
mkfs.ext4 /dev/vdb5
[root@i-6CBF585F ~]# mkdir /data1 //创建要挂载的目标目录
[root@i-6CBF585F ~]# mount /dev/vdb5 /data1 //手动挂载到创建的目录
/etc/fstab
文件中root@i-6CBF585F ~]# vim /etc/fstab //编辑
# /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/vdb5 /data1 ext4 defaults 0 0
[root@i-6CBF585F ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 51G 2.2G 47G 5% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/vda1 190M 40M 141M 22% /boot
/dev/vdb5 493G 70M 467G 1% /data1
java -version
[root@cdh3 tools]# java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
[root@cdh3 tools]#
rpm -qa | grep openjdk
[root@cdh3 tools]# rpm -qa | grep openjdk
java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
[root@cdh3 tools]#
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
/usr/java
tar -zxvf jdk-7u80-linux-x64.gz -C /usr/java
chown -R root /usr/java/jdk1.7.0_80
export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
source /etc/profile(只对当前终端有效,最好重启系统)
[root@cdh3 usr]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@cdh3 usr]#
[root@cdh1 software]# rpm -qa|grep -i mysql
mysql-libs-5.1.73-5.el6_6.x86_64
[root@cdh1 software]#
rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
groupadd mysql //添加用户组
useradd -r -g mysql mysql// -r参数表示mysql用户是系统用户,不可用于登录系统。
tar -zxvf /data1/bxji/software/tools/mysql-5.5.50-linux2.6-x86_64.tar.gz -C /usr/local
[root@cdh1 local]# cd /usr/local
[root@cdh1 local]# ln -s mysql-5.5.50-linux2.6-x86_64/ mysql
chown -R mysql /usr/local/mysql-5.5.50-linux2.6-x86_64
chgrp -R mysql /usr/local/mysql-5.5.50-linux2.6-x86_64
chown -R mysql mysql
chgrp -R mysql mysql
mysql_install_db
脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql
。/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
mysql/
目录下除了data/
目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/
目录下所有文件的所有者。chown -R root /usr/local/mysql-5.5.50-linux2.6-x86_64
chown -R mysql /usr/local/mysql-5.5.50-linux2.6-x86_64/data
/etc/my.cnf
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
首先需要将scripts/mysql.server
服务脚本复制到/etc/init.d/
,并重命名为mysqld。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
通过chkconfig
命令将mysqld服务加入到自启动服务项中。注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/
时重命名的名称
chkconfig --add mysqld
查看是否添加成功:chkconfig --list mysqld
[root@cdh1 mysql-5.5.50-linux2.6-x86_64]# chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
重启系统,mysqld就会自动启动了。
service mysqld start
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
使 profile生效,执行命令source /etc/profile
(当前终端生效), 这样就可以在shell中直接输入mysql命令来启动客户端程序了。
进入mysql客户端口命令行,用root用户登录后,执行如下命令,修改root密码为hadoop
use mysql;
UPDATE user SET password=PASSWORD('hadoop') WHERE user='root';
FLUSH PRIVILEGES;
使用 SHOW VARIABLES LIKE 'character_set_%';
查看,发现数据库编码均已改成utf8,说明就不需要修改了。
Variable_name | Value |
---|---|
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | utf8 |
character_set_system | utf8 |
character_sets_dir | D:”mysql-5.0.37”share”charsets” |
使用mysql的命令,修改mysql默认字符集的方法:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
我用的是root用户,每台服务器都生成公钥,合并到authorized_keys后,分发到集群内各节点 。
在集群内每台机器上生成公钥/私钥对,执行命令
ssh-keygen -t rsa -P ''
P表示密码, -P ” 就表示空密码, 也可以不用-P参数, 这样就要个车回车, 用-P就一次回车
在当前用户目录/root
下生成.ssh
目录, .ssh
下有id_rsa
和id_rsa.pub
将cdh1、 cdh2 生成公钥文件/root/.ssh/id_rsa.pub
复制到cdh1下, 在cdh1机的.ssh/authorized_keys
文件里
在cdh1上,新建authorized_keys
文件, 并修改权限为600
touch /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys //authorized_keys的权限要是600
分别复件cdh2、cdh3密钥文件到cdh1
scp /root/.ssh/id_rsa.pub root@192.168.58.45:/root/.ssh/cdh2_id_rsa.pub // cdh2 机器上执行
scp /root/.ssh/id_rsa.pub root@192.168.58.46:/root/.ssh/cdh3_id_rsa.pub // cdh3 机器上执行
将复制来的密钥添加到authorized_keys
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
cat /root/.ssh/cdh2_id_rsa.pub >> /root/.ssh/authorized_keys
cat /root/.ssh/cdh3_id_rsa.pub >> /root/.ssh/authorized_keys
将cdh1上的authorized_keys文件, 分发到集群内其它机器
scp /root/.ssh/authorized_keys root@192.168.58.45:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@192.168.58.46:/root/.ssh/authorized_keys
测试集群间机器ssh免密码登陆:第一次要输入 yes
ssh 192.168.58.44
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下 :
查看是否已经安装:
rpm -qa | grep ntp
如果已安装就不需要再安装了,如果没安装,使用:yum install ntp
安装
chkconfig ntpd on
将restrict default kod nomodify notrap nopeer noquery
注释掉,这个对客户端的限制太多。添加,restrict default nomodify notrust
(允许任何IP的客户机都可以进行时间同步)以允许所有客户端获取时间数据。notrust
参数的功能是并需通过认证才能同步,也就是客户端同步命令中必须有keyid
和key
才能通过。
注释掉所有的trustedkey
, 添加 trustedkey 1 2 3
,后边指定数字任意,但必须与/etc/ntp/keys
文件中的 值保持一致。也就是说1 2 3
这三个数分别作为认证 的 keyid。
配置时间源, 指定同步参考的服务器时间。如果连接不了外网就把所有外网时间服务器都注释掉。
server 192.168.58.44 // 局域网(GA网)内,客户机(slaver)配置为集群内master服务器IP
server ntp.api.bz // 连接不了外网就注释掉
server 2.centos.pool.ntp.org // 连接不了外网就注释掉
加如下配置项目,以让NTP Server和其自身保持同步,如果在/ntp.conf
中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。 客户端不需要配置,只在服务端配置即可。
server 127.127.1.0 # local clock //服务端如果连接不了外网,使用本地时间提供给客户端同步
fudge 127.127.1.0 stratum 2
最后保存退出.
添加如下配置, 前面的数字必须与 /etc/ntp.conf
文件中 trustedkey 后边指定的数字一致才行,字符串任意。
1 M gao
2 M tian
3 M di
rm -f /etc/localtime
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service ntpd restart
要注意ntp的重启是有延迟的,所以有的时候重启以后没发现修改配置生效,是因为这个延迟导致的, 这是因为NTP server还没有和其自身或者它的server同步上。
如果集群内所在节点都安装了NTP服务,服务端时间源外网时间源不可用时,可与本地时间同步,且客户端时间源配置了集群内服务端,那么启动所有节点NTP服务,集群内节点即可实现时间同步。
如果客户端NTP服务未启动,或者未配置集群内时间源,可通过执行 ntpdate
来同步,我们只要指定与master节点同步就可以了。
手动在集群内所客户端系统上执行 ntpdate 192.168.58.44
,测试服务器是否成功配置, 成功返回:
ntpdate[15522]: adjust time server 192.168.84.29 offset 0.290456 sec
上传并解压cloudera-manager-el6-cm5.4.5_x86_64.tar.gz
到master(cdh1)节点/opt
目录下(不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo
寻找)
tar -zxvf /data1/bxji/software/tools/ cloudera-manager-el6-cm5.4.5_x86_64.tar.gz -C /opt
将mysql驱动 mysql-connector-java-5.1.25.jar
放到/opt/cm-5.4.5/share/cmf/lib/
目录, CM连接mysql数据需要提供jdbc驱动。(已有)
cp /data1/bxji/software/tools/mysql-connector-java-5.1.25.jar /opt/cm-5.4.5/share/cmf/lib/
useradd --system --home=/opt/cm-5.4.5/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
修改/opt/cm-5.4.5/etc/cloudera-scm-agent/config.ini
下面的serer_host为主节点的hostname
进入mysql数据库控制台,创建以下数据库
--hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
检查创建的数据库:
mysql> show databases;
Database |
---|
information_schema |
amon |
hive |
hue |
mysql |
performance_schema |
test |
以上数据库,可能会根据安装组件的不同略有差别。 给root用户授权(密码为hadoop),后面安装CDH组件hive、hue、集群监控时要用到这里设置 的用户及密码。
grant all on *.* to root@"%" Identified by "hadoop";
格式:scm_prepare_database.sh
[数据库类型] [数据库] [主节点服务器] [用户名] [密码] [–scm-host Cloudera_Manager_Server所在的机器] 后面那三个直接照抄官网。
[root@qbcdhserv1 ~]# /opt/cm-5.4.5/share/cmf/schema/scm_prepare_database.sh mysql cm -hqbcdhserv1 -uroot -phadoop --scm-host qbcdhserv1 scm scm scm
JAVA_HOME=/usr/java/jdk1.7.0_67
Verifying that we can write to /opt/cm-5.4.5/etc/cloudera-scm-server
Creating SCM configuration file in /opt/cm-5.4.5/etc/cloudera-scm-server
Executing: /usr/java/jdk1.7.0_67/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cm-5.4.5/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cm-5.4.5/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!
/opt/cm-5.4.5/etc/init.d/cloudera-scm-server start
注意server首次启动不要立即关闭或重启,因为首次启动会自动创建相关表以及数据,如果因为特殊原因中途退出,请先删除所有表以及数据之后再次启动,否则将会出现启动不成功的情况。
将主节点/opt/cm-5.4.5
集群内分发scp/opt/cm-5.4.5
到所有datanode节点上,然后在每台机器上开启Agents端:
scp -r /opt/cm-5.4.5 root@192.168.58.45:/opt
scp -r /opt/cm-5.4.5 root@192.168.58.46:/opt
在所有datanode节点上,创建cloudera-scm-agent
目录,否则启动报错。
mkdir /opt/cm-5.4.5/run/cloudera-scm-agent
在所有datanode节点上,启动(注意必须以管理员权限启动)
sudo /opt/cm-5.4.5/etc/init.d/cloudera-scm-agent start
浏览器启动Cloudera Manager 5 控制台(默认端口号是7180),启动成功就会看到登陆页面。http://192.168.58.44:7180/cmf/login 初次登录 用户名:admin 密码:admin
下载完成后,将文件放到master(cdh1)节点的 /opt/cloudera/parcel-repo
下
cp /data1/bxji/software/tools/ CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel /opt/cloudera/parcel-repo
cp /data1/bxji/software/tools/ CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel.sha1 /opt/cloudera/parcel-repo
cp /data1/bxji/software/tools/manifest.json /opt/cloudera/parcel-repo
新建文件命名为:CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha
, 与下载的文件只是后缀名不同
cp /opt/cloudera/parcel-repo/ CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.4.5-1.cdh5.4.5.p0.7-el6.parcel.sha
重启cloudera-scm-server 以识别安装源
sudo /opt/cm-5.4.5/etc/init.d/cloudera-scm-server restart
组件数据库设置
这里数据库存用户名root,密码之前修改为haoop。如果报mysql数据驱动没找到,就需要上载获取到组件lib目录。
集群基本参数配置。
这里有几个重要的目录配置,作为hdfs根目录应该指向存储空间较大的硬盘目录(本次安装环境磁盘空间都在/根路径,这里就不修改了)
在安装hive、oozie等需要访问数据库组件时,经常遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
。这是因为组件默认lib库存下无驱动jar,需要手动将mysql驱动 mysql-connector-java-5.1.25.jar
放到组件对应的lib目录。如:/opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/lib/hive/lib/
目录。如果不知道对应的组件在哪个节点,那么最好是所有节点都上传驱动jar。
cp /data1/bxji/software/tools/mysql-connector-java-5.1.25.jar /opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/lib/hive/lib
将驱动复制到安装节点的:/var/lib/oozie 目录
cp /data1/bxji/software/tools/mysql-connector-java-5.1.25.jar /var/lib/oozie
注意再次重启机器后,启动cloudera-scm-server
、cloudera-scm-agent
会报JAVA_HOMEI没有配置,解决办法如下:修改/opt/cm-5.7.0/etc/default
下cloudera-scm-server
和cloudera-scm-agent
配置文件,添加java环境变量,并将两个文件分发到所有集群。
export JAVA_HOME=/usr/jdk1.7.0_80
export PATH=$JAVA_HOME/bin;$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar;$JAVA_HOME/jre/lib/rt.jar
相关链接:
cloudera(CDH)官网介绍:安装包、离线包该如何下载、官方文档等介绍
Cloudera Manager、CDH零基础入门、线路指导
Cloudera Manager (centos)安装详细介绍