更多资料请查看我的博客笔记爱白菜鱼 www.ibaicaiyu.com
搭建过那么多次hadoop也没好好总结下,这次公司发了电脑,跑3台虚拟机完全不虚,所以想在自己的机器上搭建hadoop,学习大数据做相关实验,为了避免以后再重复学习,找资料花费大量时间,做笔记如下
一切内容均摘自cloudera官网
0、参考资料
官方参考文档:http://www.cloudera.com/
官方安装文档:https://www.cloudera.com/documentation/enterprise/latest/topics/install_cm_cdh.html
官方版本和下载信息: https://www.cloudera.com/documentation/enterprise/release-notes/topics/rg_vd.html
1、离线下载资料:
CM:
cloudera-manager-daemons-5.15.0-1.cm5150.p0.62.el7.x86_64.rpm
cloudera-manager-server-5.15.0-1.cm5150.p0.62.el7.x86_64.rpm
下载地址 https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.15.0/RPMS/x86_64/4/
CDH:
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
2、安装之前的准备:
配置网络名称
将主机设置为唯一名称
sudo hostnamectl set-hostname ccc.example.com
编辑
/etc/hosts
文件使用群集中每个主机的IP地址和完全限定的域名(FQDN)。您也可以添加非限定名称以添加非限定名称192.168.221.10 hadoop1.teradata.com hadoop1 192.168.221.11 hadoop2.teradata.com hadoop2 192.168.221.12 hadoop3.teradata.com hadoop3
编辑host的hostname
/etc/sysconfig/network
用FQDN:HOSTNAME=hadoop1.teradata.com
验证host是不是唯一的标识对于network
uname -a
(验证输出是不是和hostname相同)ifconfig
(验证IP地址)host -v -t A $(hostname)
(host找不到,请执行yum install bind-utils
安装,验证输出是不是符合hostname命令,IP地址是不是和ifconfig命令中的eth0,bond0一样)
3、权限设置
我们使用root用户的最高权限,但是不同主机之间不要配置无密码登录,步骤如下:
只配置主节点到子节点的无密登录就行
先删除所有密钥 rm -rf ~/.ssh/*
# ssh-keygen -t rsa
# ssh-copy-id hadoop1
# ssh-copy-id hadoop2
# ssh-copy-id hadoop3
4、JDK安装
官网下载jdkjdk-8u171-linux-x64.tar.gz
安装在/usr/java目录下
tar xvfz jdk-8u171-linux-x64.tar.gz -C /usr/java/
5、其他事项
关闭防火墙
systemctl stop firewalld
systemctl disable firewalldSELINUX关闭
setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config iptables --flush reboot #重启生效
设置文件打开数量及最大进程数
cp /etc/security/limits.conf /etc/security/limits.conf.bak echo "* soft nproc 32000" >>/etc/security/limits.conf echo "* hard nproc 32000" >>/etc/security/limits.conf echo "* soft nofile 65535" >>/etc/security/limits.conf echo "* hard nofile 65535" >>/etc/security/limits.conf
同步时间
安装ntp服务yum -y install ntp
启动ntp服务,并设置开机自启
systemctl start ntpd
systemctl enable ntpd
6、配置Cloudera Manager 管理库
在主节点中配置仓库,下载
Download the cloudera-manager.repo
文件wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo -P /etc/yum.repos.d/
导入存储库签名GPG密钥:
rpm --import https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/RPM-GPG-KEY-cloudera
把本地安装包(parcel)放入指定目录:
cp CDH-5.15.0-1.cdh5.15.0.p0.4-el7.parcel /opt/cloudera/parcel-repo/ cp CDH-5.11.1-1.cdh5.15.0.p0.4-el7.parcel.sha1 /opt/cloudera/parcel-repo/ mv /opt/cloudera/parcel-repo/CDH-5.15.0-1.cdh5.11.1.p0.4-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.15.0-1.cdh5.11.1.p0.4-el7.parcel.sha
7、安装Cloudera Manager服务
手动安装:
sudo yum --nogpgcheck localinstall cloudera-manager-daemons - * .rpm sudo yum --nogpgcheck localinstall cloudera-manager-server - * .rpm
网络安装,前提是配置了yum cloudera repo
sudo yum install cloudera-manager-daemons cloudera-manager-server
8、安装和配置数据库
我们这次使用PostgreSQL试试,抛弃Mysql数据库
安装PostgreSQL数据库:
sudo yum install postgresql-server
安装python-pip包(hue依赖她):
yum -y install epel-release sudo yum install python-pip
安装psycopg2使用pip:
sudo pip install psycopg2
链接psycopg2目录为Hue Python环境
sudo ln -s /usr/lib64/python2.7/site-packages/psycopg2 /opt/cloudera/parcels/CDH/lib/hue/build/env/lib/python2.7/site-packages/psycopg2
配置和初始化PostgreSQL数据库
确保LC_ALL被设定为en_US.UTF-8并按如下方式初始化数据库:
echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf sudo su -l postgres -c "postgresql-setup initdb"
开启MD5验证,编辑pg_hba.conf文件,通常在/var/lib/pgsql/data or /etc/postgresql//main目录下,添加如下一行(在
host all all 127.0.0.1/32 ident
之前)host all all 127.0.0.1/32 md5
但是我实际安装后面报错,这里改成:
host all all 0.0.0.0/0 md5
因群集大小和资源而异,更新/var/lib/pgsql/data/postgresql.conf 或者 /var/lib/postgresql/data/postgresql.conf文件
shared_buffers - 256MB
wal_buffers - 8MB
checkpoint_segments - 16
checkpoint_completion_target - 0.9配置PostgreSQL 数据库开机启动
sudo systemctl enable postgresql
配置postgresql.conf文件
vi /var/lib/pgsql/data/postgresql.con·
修改该文件的内容如下listen_addresses = '*'
重启数据库
sudo systemctl restart postgresql
9、 创建数据库为Cloudera software
记住自己配置的数据库名,数据库名,密码,要为以下服务配置数据库
使用命令如下:
连接数据库
sudo -u postgres psql
创建数据库用如上图中的数据
CREATE ROLE <user> LOGIN PASSWORD '<password>';
CREATE DATABASE <database> OWNER <user> ENCODING 'UTF8';
整理内容如下:
- 创建角色
CREATE ROLE scm LOGIN PASSWORD 'scm';
CREATE ROLE amon LOGIN PASSWORD 'amon';
CREATE ROLE rman LOGIN PASSWORD 'rman';
CREATE ROLE hue LOGIN PASSWORD 'hue';
CREATE ROLE metastore LOGIN PASSWORD 'hive';
CREATE ROLE sentry LOGIN PASSWORD 'sentry';
CREATE ROLE nav LOGIN PASSWORD 'nav';
CREATE ROLE navms LOGIN PASSWORD 'navms';
CREATE ROLE oozie LOGIN PASSWORD 'oozie';
创建数据库
CREATE DATABASE scm OWNER scm ENCODING 'UTF8'; CREATE DATABASE amon OWNER amon ENCODING 'UTF8'; CREATE DATABASE rman OWNER rman ENCODING 'UTF8'; CREATE DATABASE hue OWNER hue ENCODING 'UTF8'; CREATE DATABASE metastore OWNER metastore ENCODING 'UTF8'; CREATE DATABASE sentry OWNER sentry ENCODING 'UTF8'; CREATE DATABASE nav OWNER nav ENCODING 'UTF8'; CREATE DATABASE navms OWNER navms ENCODING 'UTF8'; CREATE DATABASE oozie OWNER oozie ENCODING 'UTF8';
对于PostgreSQL 8.4及更高版本,请设置 standard_conforming_strings =off 对于Hive Metastore和Oozie数据库:
ALTER DATABASE <database> SET standard_conforming_strings = off;
10、 设置Cloudera Manager数据库
语法:
/usr/share/cmf/schema/scm_prepare_database.sh [options] <databaseType> <databaseName> <databaseUser> <password>
执行:
sudo /usr/share/cmf/schema/scm_prepare_database.sh postgresql scm scm
如果一下文件存在请删除:
sudo rm /etc/cloudera-scm-server/db.mgmt.properties
11、安装CDH
启动Cloudera Manager Server
sudo systemctl start cloudera-scm-server
等待几分钟让服务起来,也可用如下命令查看服务启动进程
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
服务起来后再浏览器中输入
http://<server_host>:7180
,看到登录界面,用户名:admin,密码:admin一直安装就行,中间输入三个集群(hadoop1,hadoop2,hadoop3)
12. 安装hadoop生态软件
- 欢迎来到Cloudera Manager
试用60天
安装完成后就可以添加我们所需要的服务了
注意:内存紧张可以把cloudera-manager服务关了或者不安装,只安装自己所需要的组件即可!(我为节点分配了4 3 3 内存,安装了hadoop核心服务,因为内存不足服务起来后又挂掉,建议把不用的服务关了,用的时候开启对应的服务就行,感觉出现的所有警告都是磁盘,内存分配不足的原因,抑制下就好了)