centos7 cdh centos7维护到2024年
大家好,今天小编来为大家解答centos7 cdh这个问题,centos7维护到2024年很多人还不知道,现在让我们一起来看看吧!
基于CentOS6.4环境编译Spark-2.1.0源码
基于 CentOS6.4环境编译 Spark-2.1.0源码
本文探讨在实际开发实践中,有时直接使用 Spark官方提供的安装包可能无法满足特定需求。为深入理解 Spark并更灵活地使用其功能,学习根据源码进行编译显得尤为重要。
在进行 Spark源码编译前,确保系统已安装 Java 7,并选择合适的版本,例如 JDK 1.7.0_51。将所有软件安装在用户根目录下的 app文件夹内。接下来,安装 Maven 3.3.9,下载并根据官方指南进行安装。
接着,前往 Spark官网下载 Spark-2.1.0源码包。解压后,将根据官方文档中的介绍使用 dev目录下的 make-distribution.sh脚本来编译源码。在编译过程中,可自定义参数以适应特定环境,如指定的 Hadoop版本、运行环境(如 YARN)以及支持的工具(如 Hive)。
编译完成后,会在 Spark源码根目录生成一个包含所需配置的安装包,例如 spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz。此包即为编译结果,可用于安装 Spark。
理解编译生成安装包的命名逻辑,对于优化 Spark配置至关重要。在 make-distribution.sh脚本的末尾,可以看到用于生成安装包名的代码块,其依据 Spark版本和编译时指定的参数进行命名。
在编译过程中,可能遇到依赖包下载时间过长的问题,这通常由于网络不稳定导致。此时,可尝试中断编译进程,稍后重新运行命令,或开启虚拟专用网络(VPN)以优化网络环境,从而加速编译过程。
遵循以上步骤,结合对官方文档的深入理解,可实现对 Spark源码的高效编译和优化。此过程不仅有助于提高对 Spark的掌握程度,还能针对特定需求定制 Spark配置,提高开发效率。
【kerberos】Kerberos安装使用详解及遇到的问题
一、Kerberos协议:
Kerberos协议主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立了共享密钥,使得该协议具有相当的安全性。
二、环境信息:信息版本操作系统centos6.9服务器类型虚拟机CDH5.13节点数量5
节点信息:|?ip|主机名?|角色||--|--|--|| 10.12.24.209|dx-dev-test1029?| client|| 10.12.25.208|dx-dev-test1026?| client|| 10.12.25.209|dx-dev-test1030?| client|| 10.12.26.208|dx-dev-test1027?| client|| 10.12.27.208|dx-dev-test1028?| server|
三、安装kerberos
使用yum安装kerberos
1. server服务端安装:yum install krb5-server2. client客户端安装
注:server节点也是client节点,也是需要安装
yum install krb5-workstation krb5-libs krb5-auth-dialog 3.服务端节点配置(1)修改/etc/krb5.conf
/etc/krb5.conf:包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。注意修改:红色的标记
文件内容如下:
[libdefaults]default_realm= RONG360.COMdns_lookup_kdc= falsedns_lookup_realm= falseticket_lifetime= 86400renew_lifetime= 604800forwardable= truedefault_tgs_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacdefault_tkt_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacpermitted_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacudp_preference_limit= 1kdc_timeout= 60000[realms]RONG360.COM={kdc= dx-dev-test1028admin_server= dx-dev-test1028}[domain_realm]~
说明:
[logging]:表示server端的日志的打印位置
[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
default_realm= HADOOP.COM默认的realm,必须跟要配置的realm的名称一致。
udp_preference_limit= 1禁止使用udp可以防止一个Hadoop中的错误
oticket_lifetime表明凭证生效的时限,一般为24小时。
orenew_lifetime:表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
[realms]:列举使用的realm。
kdc:代表要kdc的位置。格式是机器:端口
admin_server:代表admin的位置。格式是机器:端口
default_domain:代表默认的域名
[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。
udp_preference_limit= 1 kdc原生支持tcp/udp协议,客户端访问kdc服务时,默认先使用udp协议发起请求,如果数据包过大或者请求失败,然后再换用tcp协议请求。网络条件不好,如果使用udp容易出现丢包现象。
(2)修改/var/kerberos/krb5kdc/kdc.conf
默认放在/var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。文件内容如下:文件内容如下:
[kdcdefaults] kdc_ports= 88 kdc_tcp_ports= 88[realms] RONG360.COM={#master_key_type= aes256-ctsacl_file=/var/kerberos/krb5kdc/kadm5.acldict_file=/usr/share/dict/wordsadmin_keytab=/var/kerberos/krb5kdc/kadm5.keytabsupported_enctypes= aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal}
说明:
RONG360.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
max_renewable_life= 7d涉及到是否能进行ticket的renwe必须配置。
master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,更多参考2.2.9关于AES-256加密:。推荐不使用。
acl_file:标注了admin的用户权限。文件格式是
Kerberos_principal permissions [target_principal]?[restrictions]支持通配符等。
admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
supported_enctypes:支持的校验方式。注意把aes256-cts去掉。
(3)修改/var/kerberos/krb5kdc/kadm5.acl
编辑 Kerberos访问控制列表文件(kadm5.acl)文件应包含允许管理 KDC的所有主体名称。文件内容如下:
*/admin@RONG360.COM*
注:将上面修改的文件,进行全节点分发。
4.创建/初始化Kerberos database
初始化并启动:完成上面三个配置文件后,就可以进行初始化并启动了。
创建命令:
kdb5_util create-s-r RONG360.COM
其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name——当krb5.conf中定义了多个realm时才是必要的。
保存路径为/var/kerberos/krb5kdc如果需要重建数据库,将该目录下的principal相关的文件删除即可
在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。
当Kerberos database创建好后,可以看到目录/var/kerberos/krb5kdc下生成了几个文件:
kadm5.acl kdc.conf principal principal.kadm5 principal.kadm5.lock principal.ok5.重启服务
重启服务
service krb5kdc start或 systemctl startkrb5kdcservice kadmin start或 systemctl startkadmin6.设置开机启动
设置开机自动启动:
chkconfig krb5kdc on或 systemctl enable krb5kdcchkconfig kadmin on或 systemctl enable kadmin
现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log和/var/log/kadmind.log)。
可以通过命令kinit来检查这两个daemons是否正常工作。
7.添加database administrator
我们需要为Kerberos database添加administrative principals(即能够管理database的principals)——至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。
在maste KDC上执行:
/usr/sbin/kadmin.local-q"addprinc admin/admin"
通过上面的命令为其设置密码
yum install krb5-workstation krb5-libs krb5-auth-dialog0
可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本地文件的读写权限。
8.客户端阶段配置
将之前修改的/etc/krb5.conf拷贝到从节点。
四、kerberos日常操作1.管理员操作登陆
登录到管理员账户:如果在本机上,可以通过yum install krb5-workstation krb5-libs krb5-auth-dialog0直接登录。其它机器的,先使用kinit进行验证。
增删改查账户
在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
yum install krb5-workstation krb5-libs krb5-auth-dialog0-q"addprinc-pw 111111 test"yum install krb5-workstation krb5-libs krb5-auth-dialog0: delprinc testyum install krb5-workstation krb5-libs krb5-auth-dialog0: listprincs生成keytab:使用xst命令或者ktadd命令yum install krb5-workstation krb5-libs krb5-auth-dialog22.用户操作查看当前的认证用户认证用户yum install krb5-workstation krb5-libs krb5-auth-dialog3删除当前的认证的缓存yum install krb5-workstation krb5-libs krb5-auth-dialog4五、常见问题1.查看ticket是否是renewable
通过klist命令来查看
如果Valid starting的值与renew until的值相同,则表示该principal的ticket不是 renwable。
2. ticket无法更新
如果过了Expires,可以通过命令kinit–R来更新ticket但如果ticket无法更新
yum install krb5-workstation krb5-libs krb5-auth-dialog5
这是因为krbtgt/HADOOP.COM@ HADOOP.COM的[renewlife]被设置成了0,这一点可以通过[yum install krb5-workstation krb5-libs krb5-auth-dialog0=> getprinc krbtgt/ HADOOP.COM@ HADOOP.COM]看出来。
将krbtgt/HADOOP.COM@HADOOP.COM的[renewlife]修改为7days即可。
yum install krb5-workstation krb5-libs krb5-auth-dialog0: modprinc-maxrenewlife 1week krbtgt/HADOOP.COM@HADOOP.COM3. CDH安装Kerberos后,重启集群报错yum install krb5-workstation krb5-libs krb5-auth-dialog7
原因:因为系统采用的是Centos7.6,对于使用Centos5.6及以上西戎,默认采用 AES-256来加密;这就需要CDH集群所有的节点都安装 Java Cryptography Extension(JCE) Unlimited Strength Jurisdiction Policy File下载链接:
yum install krb5-workstation krb5-libs krb5-auth-dialog8
解决办法: 1.下载的文件是个zip包,解压 2.将解压后的 UnlimitedJCEPolicyJDK8文件下的两个jar包复制到$JAVA_HOME/jre/lib/security/
我的JAVA_HOME=/opt/module/jdk1.8.0_144yum install krb5-workstation krb5-libs krb5-auth-dialog9
3.如果你的JAVA_HOME不是在/usr/java下,那么还需要进行一步操作 mkdir/usr/java
创建软链接指向自己的JAVA_HOME[libdefaults]default_realm= RONG360.COMdns_lookup_kdc= falsedns_lookup_realm= falseticket_lifetime= 86400renew_lifetime= 604800forwardable= truedefault_tgs_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacdefault_tkt_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacpermitted_enctypes= aes128-cts aes256-cts-hmac-sha1-96 des3-hmac-sha1 arcfour-hmacudp_preference_limit= 1kdc_timeout= 60000[realms]RONG360.COM={kdc= dx-dev-test1028admin_server= dx-dev-test1028}[domain_realm]~0
目前总结到这!
原文:
如何用cloudera manager接管已有hadoop的cdh版本集群
本文介绍如何搭建cloudera manager去接入已有hadoop组件(cdh),搜索国内资料并无整体介绍,没有任何参考文章可以借鉴;通过大数据qq交流群当中某老师提供的国外某篇cloudera cto的文章得到解决思路,经实验调试可以实现此功能。
下面进入本文主题。
一、下载必备文件:
1.cloudera manager:
大部分公司内大数据集群环境都无公网访问权限,针对当前集群系统环境和想要接入的cm版本找到对应版本离线包,对于redhat、centos系统来说el6就是redhat6、centos6系统,之后找到想要安装的cm版本,本文搭建过程采用cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
2.cdh安装包:
本搭建过程采用CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel、CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1,parcel文件为cdh压缩包,执行安装过程会进行解压并且上传到各节点;sha1文件内为压缩包的校验码
3.mysql的jdbc驱动jar包:
4.mysql5.6:
本搭建过程采用mysql5.6社区版源码包mysql-5.6.35.tar.gz
二、cloudera manager安装:
1.server端安装配置mysql5.6:
解压mysql安装包后执行
1 yuminstallcmakencurses-*-y
其余看编译输出,缺少什么包就再yum安装什么
进入mysql解压目录,执行
12 cmake-DCMAKE_INSTALL_PREFIX=/export/mysql5.6make&&makeinstall
如果没有报错继续执行
顺利执行过后将/etc/my.cnf删除或移走,在mysql安装目录当中简单编写my.cnf并启动,具体配置请根据自身环境进行设置,本文不对此内容赘述
2.解压cloudera-manager-el6-cm5.9.0_x86_64.tar.gz到安装目录:
默认cloudera和cm-5.9.0目录放置在/opt下,如果想放在其他目录须留意对应配置
3.导入数据,执行完成后会有cm库:
1/export/tmp/opt/cm-5.9.0/share/cmf/schema/scm_prepare_database.shmysqlcm-hlocalhost-uroot--scm-host127.0.0.1scmscmscm
4.登录mysql,进行必要的修改配置:
12 setglobalbinlog_format='ROW';grantallon*.*to'scm'@'%'identifiedby'scm';
否则默认binlog格式为statement,cm会启动报错
对scm进行所有主机的授权
5.cloudera manager server端配置:
创建用户
1 useradd--system--home=/opt/cm-5.9.0/run/cloudera-scm-server/--no-create-home--shell=/bin/false--comment"clouderaSCMuser"cloudera-scm
在之前的cloudera目录下创建parcel-repo目录,将CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel和CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1放在此目录下,重命名sha1文件为sha,否则cm找不到sha文件无法进行校验,会重新去公网上下载压缩包
1 mvCDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha
6.mysql jar包放入lib库:
将解压mysql-connector-java-5.1.40.tar.gz得到的文件放在/opt/cm-5.9.0/share/cmf/lib下
7.配置db连接信息:
1 vim/opt/cm-5.9.0/etc/cloudera-scm-server/db.properties
host由于mysql就装在本机所以写127地址即可,库名、用户名、密码遵循上面创建用户和授权的内容进行填写
8.配置cm启动脚本的java环境:
123 vim/opt/cm-5.9.0/etc/init.d/cloudera-scm-agentvim/opt/cm-5.9.0/etc/init.d/cloudera-scm-serverexportJAVA_HOME=/usr/java/jdk1.7.0_51
9.agent配置:
1 vim/export/tmp/opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
server_host配置server端的ip或者主机名
server_port和port没有修改,使用默认的即可
listening_ip可以不做修改
之后将/opt/cm-5.9.0此目录拷贝到其他agent节点的对应目录
注:须确保/opt/cm-5.9.0/lib/cloudera-scm-agent下的uuid文件删掉,否则会出现cm web中主机显示冲突的情况
10.启动服务:
server端执行
1/opt/cm-5.9.0/etc/init.d/cloudera-scm-serverstart
agent端执行
1/opt/cm-5.9.0/etc/init.d/cloudera-scm-agentstart
server端启动端口7180 7182
agent端启动端口9000
三、web配置:
1.添加cloudera management service:
浏览器访问server端地址的7180端口,用户名密码默认admin admin
登录后不按照提示进行安装,直接点击左上方主页,然后选择右边添加管理服务
填入管理员登录mysql的连接信息即可
审核更改页不用做任何更改
之后等待安装完成,安装过后会发现集群监控已经有数据,点选所有主机,检查所有主机检查各节点状态
回到主页,点击cluster1右侧的添加服务
2.添加hdfs服务:
选择hdfs继续,根据原有集群情况进行主机选择
审核更改部分可以根据现有集群配置进行填写,左侧会有对应参数名
需要注意的是,datanode数据目录不管原来所有者是谁必须要修改为hdfs,否则无法通过cm启动,并且原有集群对应进程要先停掉
点击继续后不要等待进程进行,直接返回主页,会发现hdfs集群角色已经添加
进入hdfs配置journalnode目录dfs.journalnode.edits.dir
之后启动集群,观察监控数据
注:其余hadoop组件接入原则也是停掉原有进程,修改对应目录属主为组件名称的用户,比如hdfs,yarn,同时修改cm上对应的关键配置。此种做法对程序环境改造很大,很多标准必须遵循cloudera manager的规则,而且有丢失hdfs元数据风险。
四、后记:
此次搭建cm集群遇到一些问题,比如添加hdfs角色后无法启动namenode,报错java.io.IOException: There appears to be a gap in the edit log. We expected txid 1, but got txid 16,可能数据不连续,通过hadoop namenode-recover命令进行修复后可以启动,此命令不敢保证在生产环境执行没有问题;又或者datanode无法启动,遇到以下报错Operation not permitted
之后发现原集群的对应目录所有者为hadoop,而根据其他角色启动进程的所有者hdfs来进行权限修改后datanode可以启动