又是一个周末,本来是已经打开wegame,更新一下许久未碰的lol,后来实在等不下去了,还是想想写写博客,正好最近也在学习CDH;刚刚就像女生买东西一样,毫不犹豫地买了3个云主机,好了,废话不多说,下面我们正式开始CDH搭建大数据平台。
一、Hadoop是什么?
Hadoop是一个分布式系统架构,由Apache基金会开发。用户可以在不理解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力高速运算和存储。
不足之处:①版本管理混乱
②部署过程繁琐,升级过程复杂
③兼容性差
④安全性低
二、商业版的Hadoop有哪些?
我们常见的有cloudera(CDH), hortonworks(HDP),mapR,IBM,华为等,这些公司都在做商业版的hadoop。
三、CDH的介绍
①介绍
个人感觉:一个对Hadoop的集成环境的封装。
②为什么选择CDH版本?
Cloudera 常年坚持季度发型update版本,年度发行Release版本,更新速度比Aapche官方快,而且在实际使用过程中CDH表现无比稳定。
CDH支持yum/apt包,tar包,rpm包,cloudera manager四种方式安装。可以获取最新特性和最新Bug修复,安装维护方便,节省运维时间。另外集群搭建更加方便。
优点: 1)版本划分清晰
2)版本更新速度快
3)支持Kerbero认证
4)文档清晰
5)支持多种安装方式(Cloudera Manager方式)
③版本选择
CDH4.x---->4.8.6
CDH5.x---->优选5.4.8 5.8.0 5.12.0 不建议选择5.11.0,有坑
我们用5.10.0
四、搭建准备工作
我这里由于是个人,就买了三个云主机用于测试,内存最好为8G以上。
集群节点规划如下:
节点①:cm-agent、Datanode、SecondaryNameNode、NameNode 、Zookeeper
节点②:mysql、cm-server、cm-agent、Namenode、DataNode、ResourceManager、NodeManager、Zookeeper
节点③:cm-agent、DataNode、NodeManager、Zookeeper
五、CDH的正式安装
还是老样子,首先总结一下思路:
①关闭防火墙、修改主机名、修改hosts文件、配置免密登录(3台)
②安装jdk、python(2.6.6)、检查服务器之间的时间是否同步(3台)
③安装mysql:改变mysql用户组、修改my.cnf的权限、配置自启动、启动监听进程、修改密码、更改.bash.profile文件(hadoop01)
④启动http服务:安装http服务,创建parcel文件(hadoop01)
⑤安装和启动CM服务(hadoop01)
⑥登录CDH的配置界面即可完成集群的配置。
六、正式安装
由于是纯净的系统,所以我们从一步一步地按照上边的步骤来安装。
①关闭防火墙(3台)
②修改主机名(修改完后记得重启reboot!!!3台)
vim /etc/sysconfig/network
③修改hosts文件(3台)
vim /etc/hosts(因为内网分配的ip不在同一网段,我这里设置为外网ip)
④配置免密登录(3台)
[[email protected] ~]# ssh-keygen
依次输入以下命令(3台主机):
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]
⑤安装jdk(3台):
我这里选用的是jdk1.8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
之后选择
找到对应的jdk版本下载即可
下载完成以后,通过rz命令上传文件至其中一台主机(如果没有此命令,可安装yum install lrzsz)
通过远程拷贝至另外两台主机(scp ):
[[email protected] software]# scp jdk-8u181-linux-x64.tar.gz [email protected]:/home/software/
解压:[[email protected] software]# tar -xvf jdk-8u181-linux-x64.tar.gz
为了更好配置环境变量,我们重命名:[[email protected] software]# mv jdk1.8.0_181 jdk1.8
配置环境变量:(记得source /etc/profile使配置文件生效)
export JAVA_HOME=/home/software/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
使用java -version查看jdk是否配置成功。
⑥检查python版本(3台)
python --version
注:建议是2.6.6,如果使用的cdh版本是4.x,使用2.7.x版本的python会造成hdfs的ha不兼容
虚拟机如果用的是centos7.x的话,要用python7.x的版本
⑦检查服务器的时间是否同步(3台)
[[email protected] software]# grep ZONE /etc/sysconfig/clock
⑧安装mysql(hadoop01)
(1)安装并解压
在hadoop001上安装Mysql数据库,这里数据库的版本是mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz,将mysql安装包上传到服务器,或者从官网上下载mysql安装包.
解压mysql安装包:
tar xzvf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
解压完毕之后,将解压后的目录移动到/usr/local目录下(固定目录),并改名为mysql:
[[email protected] software]# mv mysql-5.6.23-linux-glibc2.5-x86_64 /usr/local/mysql
(2)改变mysql的用户组
将mysql添加到mysqladmin的dba用户组里
依次执行:
cd ~
groupadd -g 101 dba
useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
id mysqladmin
passwd mysqladmin(更改mysqladmin 用户的密码)
cp /etc/skel/.* /usr/local/mysql(将环境变量配置文件拷贝到mysqladmin用户的home目录下)
创建mysql的配置文件
执行:
cd /etc/
vim my.cnf
进入到my.cnf文件之后,讲里面的全部内容删除,之后将以下的配置拷贝到my.cnf中:
[client] port = 3306 socket = /usr/local/mysql/data/mysql.sock [mysqld] port = 3306 socket = /usr/local/mysql/data/mysql.sock skip-external-locking key_buffer_size = 256M sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 4M query_cache_size= 32M max_allowed_packet = 16M myisam_sort_buffer_size=128M tmp_table_size=32M table_open_cache = 512 thread_cache_size = 8 wait_timeout = 86400 interactive_timeout = 86400 max_connections = 600 thread_concurrency = 32 default-storage-engine = INNODB transaction-isolation = READ-COMMITTED server-id = 1 basedir = /usr/local/mysql datadir = /usr/local/mysql/data pid-file = /usr/local/mysql/data/hostname.pid log-warnings sysdate-is-now binlog_format = MIXED log_bin_trust_function_creators=1 log-error = /usr/local/mysql/data/hostname.err log-bin=/usr/local/mysql/arch/mysql-bin innodb_data_home_dir = /usr/local/mysql/data/ innodb_data_file_path = ibdata1:500M:autoextend innodb_log_group_home_dir = /usr/local/mysql/arch innodb_log_files_in_group = 2 innodb_log_file_size = 200M innodb_buffer_pool_size = 1024M innodb_additional_mem_pool_size = 50M innodb_log_buffer_size = 16M innodb_lock_wait_timeout = 100 innodb_flush_log_at_trx_commit = 1 innodb_locks_unsafe_for_binlog=1 performance_schema innodb_read_io_threads=4 innodb-write-io-threads=4 innodb-io-capacity=200 innodb_purge_threads=1 innodb_use_native_aio=on innodb_file_per_table = 1 lower_case_table_names=1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [mysqlhotcopy] interactive-timeout [myisamchk] key_buffer_size = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M
(3)修改my.cnf文件的属性和权限
执行:
chown mysqladmin:dba /etc/my.cnf
chmod 640 /etc/my.cnf
chown -R mysqladmin:dba /usr/local/mysql
chmod -R 755 /usr/local/mysql
su - mysqladmin
执行完之后,看一下当前的路径
执行:pwd
看一下是否在/usr/local/mysql路径下
执行:mkdir arch backup
执行初始化脚本:scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data(打印的日志没有报错,说明运行ok。)
(4)配置mysql服务和自启动
在root用户下执行:cd /usr/local/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
chkconfig --del mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
打开/etc/rc.local文件
执行:vim /etc/rc.local
将里面的内容都删掉,拷贝以下内容:
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don‘t # want to do the full Sys V style init stuff. touch /var/lock/subsys/local su - mysqladmin -c "/etc/init.d/mysql start --federated"
(5)启动mysql并监听进程
执行:su - mysqladmin
mysqld_safe &
执行完之后回车
执行:ps -ef|grep mysqld
查看mysql的进程是否运行
执行:service mysql status
(6)修改mysql的密码
执行:mysql
进入到mysql的控制台
执行:use mysql
update user set password=password(‘root‘) where user=‘root‘;
这里将mysql的账号密码都设置为root
执行:select host,user,password from user;
将空字段删掉;
执行:delete from user where user=‘‘;
重新查询一遍:select host,user,password from user;
空字段删掉ok
执行:flush privileges;
退出mysql控制台;
(8)更改.bash_profile文件
进入到mysql目录中,执行vim ./.bash_profile,
拷贝以下内容:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs MYSQL_BASE=/usr/local/mysql export MYSQL_BASE PATH=${MYSQL_BASE}/bin:$PATH export PATH unset USERNAME #stty erase ^H set umask to 022 umask 022 PS1=`uname -n`":"‘$USER‘":"‘$PWD‘":>"; export PS1
⑨启动http和启动http服务
(1)安装http服务
切换到root用户下,
执行:rpm -qa|grep httpd
yum install -y httpd
chkconfig --list|grep httpd
日志显示:httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
执行:chkconfig httpd on
chkconfig --list|grep httpd
日志显示:httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
执行:service httpd start
(2)创建parcels文件
下载:https://www.cloudera.com/downloads/cdh/5-10-0.html
执行:cd /var/www/html
mkdir parcels
cd parcels
在parcels目录下将成都
CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha,
CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel,
manifest.json
这三个文件拷贝过来。
执行:mkdir /opt/rpminstall
cd /opt/rpminstall
将文件cm5.10.0-centos6.tar.gz拷贝过来
执行:tar -xzvf cm5.10.0-centos6.tar.gz -C /var/www/html/
cd /var/www/html
ll
日志显示:total 8
drwxrwxr-x 3 1106 592 4096 Oct 27 10:09 cm
drwxr-xr-x 2 root root 4096 Apr 2 15:55 parcels
创建和官网一样的目录,
执行:mkdir -p cm5/redhat/6/x86_64/
mv cm cm5/redhat/6/x86_64/
配置本地yum源,
执行:vi /etc/yum.repos.d/cloudera-manager.repo
将以下内容拷贝到文件中,ip地址为当前机器的ip地址,如果集群在内网中则配置内网ip即可,该文件每台服务器都要配置一个
[cloudera-manager]
name = Cloudera Manager, Version 5.10.0
baseurl = http://117.50.39.81/cm5/redhat/6/x86_64/cm/5/
gpgcheck = 0
退出保存
浏览器查看下面两个网址是否出来,假如有,就配置成功(以下ip为公网ip)
http://117.50.39.81/parcels/
http://117.50.39.81/cm5/redhat/6/x86_64/cm/5/
⑩安装CM服务
安装rpm
执行:cd /var/www/html/cm5/redhat/6/x86_64/cm/5/RPMS/x86_64
yum install -y cloudera-manager-daemons-5.10.0-1.cm5100.p0.85.el6.x86_64.rpm
yum install -y cloudera-manager-server-5.10.0-1.cm5100.p0.85.el6.x86_64.rpm
顺序不能错,只装这两个
原文地址:https://www.cnblogs.com/rmxd/p/11330325.html