## 安装方式的选择
hadoop以服务过多且互补兼容出名. 这导致使用apache的官方方式安装hadoop集群是件非常吃力的事情. 即使可以做到自己探索并成功完成hadoop各个服务的安装和测试也会又隐患. 因为机器将来需要安装的服务有可能和你的版本不兼容.
所以生产环境推荐使用CDH等商业发行版本. 好处是:
1. 简单不易出错
2. 测试过hadoop的版本兼容性
3. 使用广泛, 其他开源服务基本上都会在主流发行版本上进行测试
cloudera安装过程需要联网,对于大陆上网环境来说可能是个重要瓶颈。本文档使用了代理, 不过也可以使用离线下载的方式(把安装把全部下载到本地).
## 机器的部署方案
hadoop集群安装至少要4台机器,这里我们假设有10台机器编号yun[00-09]。
yun00机器为master机器, 安装cloudera-server, 然后所有机器(包括master)安装cloudera-agent. master为总控机器, 负责发号施令. agent负责在本地执行命令.
主机的规划如下:
主机的规划1. zookeeper 一般是三台
2. zookeeper 不要和yarn部署在同一台机器上, 因为zookeeper负责yarn的HA方案, 如果混合部署极容易出现yarn和zookeeper同时出问题的情况.
3. HDFS 的NameNode和SecondaryNameNode部署在不同的机器上.
4. NodeManager和DataNode一起部署.
## 修改系统hostname
目标机器: 所有
略
## 系统间ssh免监权
目标机器: 所有
略
## 操作系统的优化
目标机器: 所有
我们使用centos 7.4 需要做的优化很少.
首先是关闭所谓的透明大页内存管理(Transparent HugePage). THP会给运行时动态内存分配打来延迟. 所以不仅仅是hadoop, mysql, oracle的部署都是建议关闭THP的.
立即生效:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
重启生效:
将上两句追加到 /etc/rc.local 中。
其次,关闭swap分区(略)。
最后安装下必要的依赖:
yum -y install psmisc libxslt screen telnet
yum -y install httpd mod_ssl
## 安装 java1.7
目标机器: 所有
hadoop目前稳定支持的java版本还是1.7。
wgethttps://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common/x86_64/jdk-7u80-linux-x64.rpm
rpm -ivh jdk-7u80-linux-x64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
rpm -ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
将如下两句追加到/etc/profile:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export CLASSPATH=.:$CLASSPTAH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
java -version可以验证java是否安装正确。
其次需要安装mysql的javaconnect。
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar -xvf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar
## 保证各个机器时间同步
目标机器:所有
hadoop对于各个机器的时钟要求非常严格,必须安装ntp保证时钟同步。
yum install ntp -y
如果是阿里云机器不需要其他设置,会自动和阿里云同步时间。
安装 mysql 5.6
目标机器: master
如果有条件, 准备一个国外机器, 用于下载文件. 不然在大陆的网络环境下, 下载数G的文件将是一个灾难.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server.x86_64 -y
启动mysql:
systemctl start mysqld
systemctl enable mysqld
配置mysql:
mysql_secure_installation # 配置mysqlroot等
使用root登陆mysql并创建用户和database:
grant all privileges on cm.* to cm@'%' identified by 'dHuuj3JE';
grant all privileges on hive.* to hive@'%' identified by 'dHuuj3JE';
grant all privileges on hue.* to hue@'%' identified by 'dHuuj3JE';
grant all privileges on oozie.* to oozie@'%' identified by 'dHuuj3JE';
flush privileges;
create database cm DEFAULT CHARACTER SET utf8;
create database hive DEFAULT CHARACTER SET utf8;
create database hue DEFAULT CHARACTER SET utf8;
create database oozie DEFAULT CHARACTER SET utf8;
其中cm用户和cm数据库是给cloudera服务本身使用的。其他账号和数据库看名字就知道了。
准备安装需要的包和文件
目标机器: 所有
cd /tmp
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-agent-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-daemons-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
wget https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.13.3/RPMS/x86_64/cloudera-manager-server-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-daemons-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-server-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
yum -y install cloudera-manager-agent-5.13.3-1.cm5133.p0.6.el7.x86_64.rpm
启动cloudera-cm-server
目标机器:master
初始化数据库配置:
/opt/cm-5.13.3/share/cmf/schema/scm_prepare_database.sh --host yun00 mysql cm cm dHuuj3JE
启动scm-server:
systemctl start cloudera-scm-server
systemctl enable cloudera-scm-server
启动cloudera-server-agent
目标机器:agent
配置:
vim /opt/cm-5.13.3/etc/cloudera-scm-agent/config.ini
# Hostname of the CM server.
server_host=yun00
启动scm-agent:
systemctl start cloudera-scm-agent
systemctl enable cloudera-scm-agent
添加cloudera帐号
目标机器: 所有
useradd --home=/opt/cm-5.13.3/run/cloudera-scm-server --no-create-home --shell=/bin/bash --comment "Cloudera SCM User" cloudera-scm
usermod -a -G root cloudera-scm
echo USER=\"cloudera-scm\" >> /etc/default/cloudera-scm-agent
echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" >> /etc/sudoers
启动cm server
目标机器: master
/opt/cm-5.13.3/etc/init.d/cloudera-scm-server start
tail -f /opt/cm-5.13.3/log/cloudera-scm-server/cloudera-scm-server.log
启动cm agent
目标机器: 所有
mkdir -p /opt/cm-5.13.3/run/cloudera-scm-agent; chown cloudera-scm:cloudera-scm /opt/cm-5.13.3/run/cloudera-scm-agent
/opt/cm-5.13.3/etc/init.d/cloudera-scm-agent start
至此cloudera安装完毕, 下面的步骤就是使用cloudera安装hadoop了, 安装过程非常简单, 基本上是一路回车.
安装hadoop
略
配置hdfs权限
su hdfs
hdfs dfs -chmod -R 777 /user
开发机的安装
使用cdh搭建hadoop集群后需要安装客户端机器, 才能安全的给团队成员使用. CDH可以支持安装客户端机器. 在CDH中客户端机器叫gateway. 只需要将客户端机器加入集群并设计角色为各个服务的gateway就可以了. 这样就实现了服务与使用的分离.
网友评论