自己做网站升seo,抖音权重查询,免费好用的云电脑,怎样开公众号一、从官方文档整体认识CDH
官方文档地址如下#xff1a;
CDH Overview | 6.3.x | Cloudera Documentation
CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算#xff0c;以及基于Web的用户界面和重…一、从官方文档整体认识CDH
官方文档地址如下
CDH Overview | 6.3.x | Cloudera Documentation
CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算以及基于Web的用户界面和重要的企业功能。是唯一一个提供统一批处理、 交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
下面是官方的组件架构图 二、安装包下载
现在官网下载需要注册百度网盘共享一份出来整个过程所需的安装包都在里面了能不能给个
链接: https://pan.baidu.com/s/1Qc4S93QB8krrcFmXqQwNNA 提取码: jfji
三、VMware准备三台Linux操作虚拟机
在我的博客cdh适配国产化操作系统中有讲到CDH支持的操作系统以及版本有在国产化操作系统上安装的需求可以看我这一份博客这次我们选择CDH支持的最高版本操作系统Centos7.9 后面按照步骤和提示走就行因为是离线安装这里选择仅主机模式 根据做好的一台的源文件目录复制两份修改下名字再从VMware打开就好 离线虚拟机资源情况 主机名ip内存磁盘操作系统备注cdh1192.168.200.1313G30Gcentos7.9后面升级到了6Gcdh2192.168.200.1323G30Gcentos7.9cdh3192.168.200.1333G30Gcentos7.9 如果你的资源丰富尽量磁盘和内存都给大点
四、环境准备
用SecureCRT分别连接三台服务器方便以后批量操作需要先关闭每台服务器上的防火墙 选择 ViewChat Window
右键选择Send chat to all tabs 如果服务器时间不是东八区时间需要修改/etc/localtime的软连接指向 unlink /etc/localtime ln -s /usr/share/zoneinfo/UTC /etc/localtime 1、修改主机名
vi /etc/hostname 或 hostnamectl set-hostname 主机名
检测hostname 2、修改域名映射
vi /etc/hosts
末尾追加 192.168.200.131 cdh1 192.168.200.132 cdh2 192.168.200.133 cdh3 3、关闭防火墙 systemctl stop firewalld 查看防火墙状态 systemctl status firewalld 永久关闭防火墙 systemctl disable firewalld.service 4、关闭selinux
vi /etc/selinux/config
SELINUXenforcing 改为 SELINUXdisabled
5、永久关闭ipv6
vi /etc/sysctl.conf
# 禁用整个系统所有接口的IPv6可以只简单的设置这一个参数用来关闭所有接口的 IPv6 net.ipv6.conf.all.disable_ipv61 # 禁用某一个指定接口的IPv6(例如eth0, eth1) net.ipv6.conf.eth0.disable_ipv61 net.ipv6.conf.eth1.disable_ipv61 6、设置swap空间
临时修改 sysctl vm.swappiness0 # 查看是否修改成功 cat /proc/sys/vm/swappiness 永久修改 echo vm.swappiness0 /etc/sysctl.conf # 执行以下命令可以让修改立即生效 sysctl -p 7、关闭大页面压缩
临时生效 echo never /sys/kernel/mm/transparent_hugepage/defrag echo never /sys/kernel/mm/transparent_hugepage/enabled 永久生效 echo echo never /sys/kernel/mm/transparent_hugepage/defrag /etc/rc.local echo echo never /sys/kernel/mm/transparent_hugepage/enabled /etc/rc.local chmod x /etc/rc.local 8、最大数限制
vi /etc/security/limits.conf * soft nofile 65535 * hard nofile 1024999 * soft nproc 65535 * hard noroc 65535 * soft memlock unlimited * hard memlock unlimited 如果不修改计算数据量增大时会报 打开的文件数过多 错误 因为linux处处皆文件所以也会限制socket打开的数量当各个节点数据传输增大时就会导致整个错暴漏出来
9、操作系统内核调优-网络部分
vi /etc/sysctl.conf net.ipv4.ip_local_port_range 1000 65534 net.ipv4.tcp_fin_timeout30 net.ipv4.tcp_timestamps1 net.ipv4.tcp_tw_recycle1 如果 小文件特别多错误文件特别多主要时受损的压缩文件 这个时候就会报如下错
23/11/28 17:11:58 WARN hdfs.DFSClient: Failed to connect to /10.183.243.230:9866 for block BP-1901849752-10.183.243.230-1672973682151:blk_1074692119_951295, add to deadNodes and continue.
java.net.BindException: Cannot assign requested address
“Cannot assign requested address.”是由于linux分配的客户端连接端口用尽无法建立socket连接所致虽然socket正常关闭但是端口不是立即释放而是处于TIME_WAIT状态默认等待60s后才释放端口才可以继续使用。在http查询中需要发送大量的短连接这样的高并发的场景下就会出现端口不足从而抛出Cannot assign requested address的异常。
查看当前linux系统的可分配端口
cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999
当前系统的端口数范围为32768~60999, 所以能分配的端口数为28231。如果我的连接数达到了28231个就会报如上错误。
1、修改端口范围
vi /etc/sysctl.conf
#1000到65534可供用户程序使用1000以下为系统保留端口
net.ipv4.ip_local_port_range 1000 65534
2、配置tcp端口的重用配置提高端口的回收效率
vi /etc/sysctl.conf
#调低端口释放后的等待时间默认为60s修改为15~30s 表示如果套接字由本端要求关闭这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_fin_timeout30
#修改tcp/ip协议配置 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0修改为1释放TIME_WAIT端口给新连接使用
net.ipv4.tcp_timestamps1
#修改tcp/ip协议配置快速回收socket资源默认为0修改为1 需要开启net.ipv4.tcp_timestamps该参数才有效果
#更不为提到却很重要的一个信息是当tcp_tw_recycle开启时tcp_timestamps同时开启快速回收socket的效果达到对于位于NAT设备后面的Client来说是一场灾难——会导到NAT设备后面的Client连接Server不稳定有的Client能连接server有的Client不能连接server。也就是说tcp_tw_recycle这个功能是为“内部网络”网络环境自己可控——不存在NAT的情况设计的对于公网不宜使用。
net.ipv4.tcp_tw_recycle1
10、重启机器使以上配置生效
reboot
11、时间同步
将ntp安装包上传至三台服务器/opt/software
cd /opt/software/ntp_rpm
需要用root用户来安装 rpm -Uvh *.rpm --nodeps --force 配置
vi /etc/ntp.conf
这里选的cdh1为mastercdh2、cdh3为slaver
master:
注释掉其他server
填写 server 127.127.1.0 fudge 127.127.1.0 stratum 8 限制从节点ip段信息可以不配置
restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap
slaver: server 192.168.200.131 启动、查看状态命令
systemctl status ntpd
systemctl restart ntpd
设置自动启动
systemctl enable ntpd
报错
/lib64/libcrypto.so.10: version OPENSSL_1.0.2 not found (required by /usr/sbin/ntpd)
解决
备份原有libcrypto.so.10
mv /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10_bak
从其他服务器找到对应的so文件复制到/usr/lib64目录下
cp libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10
手动同步
ntpdate -u ip
查看同步状态
ntpdc -np
ntpstat
12、安装java
解压并重置目录 tar -xzvf jdk-8u181-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_181 /usr/java 配置环境变量
vi /etc/profile export JAVA_HOME/usr/java/jdk1.8.0_181 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 刷新配置 source /etc/profile 验证 java -version 13、安装scala
rpm安装 rpm -Uvh scala-2.11.12.rpm --nodeps --force 验证 scala -version 14、安装mysql
选择再cdh1上安装mysql
解压并重置目录 tar -xvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.11-linux-glibc2.5-x86_64 /usr/local/mysql 创建数据目录 mkdir -p /data/mysql 编辑my.cnf配置文件
vi /etc/my.cnf bind-address0.0.0.0 port3306 userroot basedir/usr/local/mysql datadir/data/mysql socket/tmp/mysql.sock [mysqld_safe] log-error/data/mysql/mysql.err pid-file/data/mysql/mysql.pid #character config character_set_serverutf8mb4 symbolic-links0 explicit_defaults_for_timestamptrue !includedir /etc/my.cnf.d 初始化 cd /usr/local/mysql/bin/ ./mysqld --defaults-file/etc/my.cnf --basedir/usr/local/mysql/ --datadir/data/mysql/ --userroot --initialize 记录这个临时密码mF/bkx)O1G,
启动mysql并更改root 密码 cd /usr/local/mysql/support-files cp mysql.server mysql mv mysql /etc/init.d/ service mysql start 登录并修改密码 /usr/local/mysql/bin/mysql -uroot -p alter user rootlocalhost identified by test_1234; grant all privileges on *.* to rootlocalhost identified by test_1234 with grant option; flush privileges; 创建Cloudera Manager用户和Hive metastore 相关用户注意下面的大写不能修改成小写 create database cmf default character set utf8; create database hive default character set utf8; GRANT ALL PRIVILEGES ON cmf.* TO cmf% IDENTIFIED BY test_1234; GRANT ALL PRIVILEGES ON hive.* TO hive% IDENTIFIED BY test_1234; flush privileges; 重命名并在固定路径放置mysql驱动包 mkdir -p /usr/share/java/ cp /opt/software/mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar chmod 777 -R /usr/share/java 15、离线按照CDH相关服务
解压 tar -xzvf cm6.3.1-redhat7.tar.gz 查看CDH相关安装文件 cd /opt/software/cm6.3.1/RPMS/x86_64 ls -lh 主节点cdh1执行 rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force 从节点cdh2、cdh3执行 rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force agent配置修改因为所有节点都安装了agent因此都需要执行cdh1是server角色的主机名 sed -i s/server_hostlocalhost/server_hostcdh1/g /etc/cloudera-scm-agent/config.ini server配置修改cdh1节点
vi /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.typemysql com.cloudera.cmf.db.hostmysql主机ip或者域名:端口127.0.0.1:3306 com.cloudera.cmf.db.namecmf com.cloudera.cmf.db.usercmf com.cloudera.cmf.db.passwordtest_1234 com.cloudera.cmf.db.setupTypeEXTERNAL 16、安装httpd
只需要部署一台就行这里选择cdh1 cd /opt/software/httpd_rpm rpm -Uvh *.rpm --nodeps --force 17、部署离线parcel源 mkdir -p /var/www/html/cdh6_parcel cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/www/html/cdh6_parcel cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 /var/www/html/cdh6_parcel cp manifest.json /var/www/html/cdh6_parcel 启动httpd systemctl start httpd 浏览器可以访问到 18、启动Server和Agent
Server节点执行cdh1 systemctl enable cloudera-scm-server systemctl start cloudera-scm-server 查看节点状态 systemctl status cloudera-scm-server 查看日志 cd /var/log/cloudera-scm-server tail -f cloudera-scm-server.log 出现0.0.0.0:7180即为成功
Agent执行三台全部执行 systemctl enable cloudera-scm-agent systemctl start cloudera-scm-agent 查看节点状态 systemctl status cloudera-scm-agent 五、根据页面指引安装
浏览器输入网址http://192.168.200.131:7180/cmf/login 默认用户名密码都为admin 继续 勾选接收条款继续 我们这里选择免费版继续如果选择试用版到期不续费会自动转成免费版 继续 起个自己喜欢的名字继续 选择所有主机继续可以看到提示在Cloudera Express中您最多可以在100台主机上安装CDH 6.0或更高版本即免费版本最多支持100台节点对于我们学习和中小公司已经够用了 点击更多选项把我们自己部署的离线parcel源地址填写上去尽量写到第一行不然可能识别不到继续且路径最后要夹/不然也识别不了 已经开始下载并往各个节点分发parce包了 全部过程走完后自动跳到下一页 分别点击 Inspect Network Performance 检查网络性能和 Inspect Hosts 检查主机连通性
检查完我们勾选第3项I understand the risks, let me continue with cluster setup.我了解风险让我继续进行集群设置继续下面我们开始安装所需要的服务 我们先选择自定义服务以后学习一项技术我们安装一个组件cdh这点非常好全程界面安装无需自己配置继续 这里需要自己安排组件的哪些角色安装到哪些节点上我们需要根据自己的机器性能和组件特性来合理安排这里给出一些基本原则
1、内存最大的节点给NameNode
2、内存第二大的节点给ResourceManager
3、NameNode和secondaryNameNode不设置在同一节点
4、HiveMetastoreServer 和mysql 放在一个节点
5、Spark HistoryServer、YARN 的 JobHistory Server 和 NameNode 不放在同一节点上 填写hive、cmf在mysql中的相关信息点击测试连接点击继续 这里可以设置服务的详细配置如果你的机器有挂载数据盘尽量将所有数据目录指向你的数据盘因为系统盘一般都支撑不了真实的业务如果你公司对网络端口也有限制需要在这里修改成符合公司网络管理的端口继续 开始首次运行我们静等是否报错报错 - 看日志 - 解决报错
经过重重解决只留下了警告提示主要原因都是虚拟机的配置太低了磁盘不足但是小数据量的测试还是可以的。 六、问题列举与解决
问题1节点资源不足 安装过程中报错很正常不要灰心兵来将挡水来土掩
先看下日志
[Errno 2] No such file or directory: /var/log/zookeeper/zookeeper-cmf-zookeeper-SERVER-cdh1.log
服务器上看了下只有/var/log/zookeeper 目录没有我们就创建一个试试 touch zookeeper-cmf-zookeeper-SERVER-cdh1.log chown zookeeper:zookeeper zookeeper-cmf-zookeeper-SERVER-cdh1.log 重新运行下发现点不动了我们进入首页看看哪个组件还报错着重看下 Cloudera Manager Server GC cpu usage is at 10% or more of total process time.
还是节点性能问题给cdh1的内存增加3G核数增加1个重启看看 解决但出现了第二个问题时钟偏差
问题2时钟偏差 我们手动同步下cdh2、cdh3执行下
ntpdate -u cdh1
静等一会儿少了一个 再等一会儿就都没有了实在不行就重启下ntp服务。最终都同步了 问题3Yarn组件启动失败 看日志是权限问题手动创建也报权限问题 mkdir: Permission denied: userroot, accessWRITE, inode/:hdfs:supergroup:drwxr-xr-x
我们可以使用hdfs用户赋权下也可以在HDFS界面上取消掉权限校验选项 问题4Spark组件启动失败 File does not exist: hdfs://cdh2:8020/user/spark/applicationHistory
手动创建下该目录
hadoop fs -mkdir -p /user/spark/applicationHistory
问题5Hive不能正常使用 FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
需要初始化下元数据 /opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/bin/schematool -dbType mysql -initSchema 发现还是默认derby的因此需要将hive-site.xml 中的hive元数据配置和连接数据库的驱动修改一下为什么不在界面上改因为我发现cm界面上是正确的hive-site.xml中却没有相关配置应该是最初启动是没有初始化成功这不就导致了一致性问题吗是不是cdh的一个bug哈哈
vi /etc/hive/conf.cloudera.hive/hive-site.xml property namehive.metastore.db.type/name valuemysql/value description元数据库类型指定为使用mysql/description /property property namejavax.jdo.option.ConnectionDriverName/name valuecom.mysql.jdbc.Driver/value description指定mysql的驱动/description /property property namejavax.jdo.option.ConnectionUserName/name valuehive/value description指定元数据库用户/description /property property namejavax.jdo.option.ConnectionPassword/name valuetest_1234/value description指定元数据库密码/description /property property namejavax.jdo.option.ConnectionURL/name valuejdbc:mysql://cdh1:3306/hive?createDatabaseIfNotExisttrue/value description指定mysql连接串/description /property 再次执行初始化成功 界面重启hive命令行创建成功