目录
12.使用Ambari界面安装Hadoop、spark、Hbase等服务
D、测试Spark yarn-client(适合交互和调试)
E、测试Spark yarn-cluster(适合生产环境)
端口 | 主机名 | 备注 |
192.168.10.151 | hdp1 | 主节点 |
192.168.10.152 | hdp2 | 从节点 |
192.168.10.153 | hdp3 | 从节点 |
1.配置静态IP、DNS
首先,进入到网卡,然后编辑。
[root@ambari-1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" #配置静态IP,网关,子网掩码 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="383ad5a3-01a3-45bb-9546-3ccf00f1bc46" DEVICE="ens33" ONBOOT="yes" #表示系统将在启动时开启该接口 IPADDR="192.168.10.151" #设置IP地址 PREFIX="24" #设置子网掩码(255.255.255.0) GATEWAY="192.168.10.1" #设置网关 DNS1="192.168.10.1" #设置主DNS IPV6_PRIVACY="no" |
配置完静态IP后重启网络服务
|
ping www.baidu.com验证是否可以访问外网,能ping通百度说明配置完成。
2.配置hostname/hosts
vi /etc/hosts #添加以下配置 192.168.10.151 hdp1.bdsoft.com hdp1 192.168.10.152 hdp2.bdsoft.com hdp2 192.168.10.153 hdp3.bdsoft.com hdp3 |
vi /etc/hostname hdp1 #从节点分别为hdp2、hdp3 |
vi /etc/sysconfig/network hostname=hdp1.bdsoft.com #从节点分别替换为hdp2、hdp3 |
hostname和hosts改完之后,统一把所有机器重启一遍!让配置生效!
3.关闭防火墙与SElinux
systemctl disable firewalld.service systemctl stop firewalld.service |
vi /etc/sysconfig/selinux #将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效 SELINUX=disabled |
4.SSH无密码登陆
主节点执行
ssh-keygen -t rsa (回车后再按连续三个回车) cd .ssh/ cat id_rsa.pub >> authorized_keys |
分别在其他两台机器上创建/root/.ssh目录,如下:
mkdir /root/.ssh |
然后将authorized_keys拷贝到其他两台机器的.ssh目录,如下:
scp authorized_keys hdp2:/root/.ssh/ scp authorized_keys hdp3:/root/.ssh/ |
验证配置:
[root@hdp1 ~]# ssh hdp1 date; ssh hdp2 date; ssh hdp3 date Fri Jun 14 17:15:02 CST 2019 Fri Jun 14 17:15:04 CST 2019 Fri Jun 14 17:15:36 CST 2019 |
5.修改YUM源
先安装wget
yum -y install wget
改用阿里云镜像站点 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache |
6.JDK1.8
下载安装包:E:\安装包\hdp\安装文件\jdk-8u161-linux-x64.tar.gz
ftp上传至服务器/home/tools
解压到/home/soft/ tar -zxvf /home/tools/jdk-8u161-linux-x64.tar.gz -C /home/soft/ 配置环境变量 vi /etc/profile 追加以下4行内容 JAVA_HOME=/home/soft/jdk1.8.0_161 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH 执行命令让配置文件生效 source /etc/profile |
7.NTP时间同步
以hdp1为ntp校准服务器
yum -y install ntp systemctl is-enabled ntpd systemctl enable ntpd systemctl start ntpd
在hdp1上配置: vi /etc/ntp.conf 注掉: #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst 添加以下2行: server 127.127.1.0 fudge 127.127.1.0 stratum 10 #在restrict指定的两行下面追加一行: restrict 192.168.1.1 mask 255.255.252.0 nomodify notrap
在hdp2/hdp3上配置: vi /etc/ntp.conf 注掉: #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst 添加以下1行: server 192.168.10.151 //指定ntp 服务器 |
启动全部节点ntp服务
systemctl start ntpd.service
检查是否成功用“ntpstat”命令查看同步状态,出现以下状态代表启动成功
[root@hdp2 ~]# ntpstat synchronised to NTP server (192.168.10.151) at stratum 12 time correct to within 62 ms polling server every 1024 s |
ps:请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -umaster (主节点ntp服务器)这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步
8.安装HTTP服务器(后期要用的)
这个操作比较简单,主要作用在为后期安装ambari制作本地源时候用的
安装:yum install httpd
启动:systemctl start httpd.service
修改网站默认的根目录(一般都是默认var/www/html 所以不用改)
vi /etc/httpd/conf/httpd.conf
在浏览器测试:http://192.168.10.151/
ps: 如果访问不到,参考https://blog.csdn.net/ganjiangshui/article/details/54133861
1、先在命令行输入nproc命令。 [root@hdp1 ~]# nproc 4 得到这个数字后再打开ambari.properties文件。 [root@Slave3 var]# sudo vi /etc/ambari-server/conf/ambari.properties 找到其中的client.threadpool.size.max=25,把其中等号后面的数字替换成刚才执行nproc命令所获得的数字,如我的是4.则 client.threadpool.size.max=4 保存后,重启ambari. [root@ hdp1 ~]# ambari-server restart 重新输入地址就可以看到页面了 |
在/var/www/html下放入文件后可在浏览器查看,例如:
9.安装mysql
下载离线文件:E:\安装包\hdp\安装文件\ mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
上传到linux服务器并解压 tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz mv /home/tools/mysql-5.7.19-linux-glibc2.12-x86_64 /home/soft/mysql-5.7.19 |
添加mysql用户组 cd /home/soft/mysql-5.7.19 groupadd mysql useradd -r -g mysql mysql cd .. chown -R mysql:mysql mysql-5.7.19 |
安装数据库,初始化mysql cd /home/soft/ --创建数据存储位置data文件夹(可自行选择位置) mkdir mysqldata cd /home/soft/mysql-5.7.19/bin mysqld --initialize --user=mysql --basedir=/home/soft/mysql-5.7.19/ --datadir=/home/soft/mysqldata |
修改配置文件
cd /home/soft/mysql-5.7.19/support-files cp mysql.server /etc/init.d/mysql vi /etc/init.d/mysql 修改mysql文件中的两个变更值 basedir=/home/soft/mysql-5.7.19/ datadir=/home/soft/mysqldata
vi /etc/my.cnf [mysqld] basedir=/home/soft/mysql-5.7.19/ datadir=/home/soft/mysqldata 下面配置选加: lower_case_table_names=1 character_set_server = utf8 max_allowed_packet = 20M ft_min_word_len=1 max_connections=1000 |
添加环境变量 vi /etc/profile 在文件中增加以下两行: export MYSQL_HOME=/home/soft/mysql-5.7.19/ export PATH="$PATH:$MYSQL_HOME/bin" 环境变量生效: source /etc/profile |
添加自动重启 chmod +x /etc/init.d/mysqld #赋予可执行权限 chkconfig --add mysql #增加mysql服务 chkconfig mysql on |
启动mysql cd /home/soft/mysql-5.7.19/bin service mysql start |
Linux下 MySQL 5.7 修改root密码 (https://blog.csdn.net/Love_XO/article/details/81502503) vi /etc/my.cnf 添加以下两行: user=mysql skip-grant-tables 重启服务 service mysql stop 关闭mysql service mysql start 启动mysql mysql -u root #不用密码直接登录mysql use mysql #更改用户 update user set authentication_string=password('123456') where user='root'; #修改密码 flush privileges; #刷新一下权限 之后再去编辑一下my.cnf 去掉skip-grant-tables
可能的报错 https://blog.csdn.net/hj7jay/article/details/65626766 alter user user() identified by "123456"; |
远程登录授权(也可以用mysql用户) mysql> grant all privileges on *.* to'root' @'%' identified by '123456'; --允许root用户远程访问 mysql> flush privileges; --授权生效 mysql> exit; |
Ambari安装会将安装等信息写入数据库,建议使用自己安装的Mysql数据库,也可以不安装而使用默认数据库PostgreSQL 建数据库 create database ambari character set utf8 ; CREATE USER 'ambari'@'%'IDENTIFIED BY 'Ambari-123'; GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%'; FLUSH PRIVILEGES;
create database hive character set utf8 ; CREATE USER 'hive'@'%'IDENTIFIED BY 'Hive-123'; GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'; FLUSH PRIVILEGES;
create database oozie character set utf8 ; CREATE USER 'oozie'@'%'IDENTIFIED BY 'Oozie-123'; GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%'; FLUSH PRIVILEGES; |
安装mysql jdbc E:\安装包\hdp\安装文件\ mysql-connector-java-5.1.43-bin.jar 我使用另一种方法直接下载压缩的jar包,放在/usr/share/java 下面 |
10.制作本地源 (在hdp1部署)
(1)下载 Ambari HDP、HDP-UTILS、 HDP-GPL源包
Ambari: http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.1.0/ambari-2.6.1.0-centos7.tar.gz
HDP: http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.4.0/HDP-2.6.4.0-centos7-rpm.tar.gz
HDP-UTILS: http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
(2)安装本地源相关工具
将下载好的源上传到hdp1的 /var/www/html 目录下,结构如下:
接下来,我们安装制作本地源工具
yum install yum-utils createrepo -y |
(3)配置ambari、HDP、HDP-UTILS的本地源
解压本地文件
tar -zxvf /home/tools/ambari-2.6.1.0-centos7.tar.gz -C /var/www/html/ tar -zxvf /home/tools/HDP-GPL-2.6.4.0-centos7-rpm.tar.gz -C /var/www/html/ |
首先下载上面资源列表中的相应repo文件,修改其中的URL为本地的地址,相关配置如下:
cd /etc/yum.repos.d/ vi ambari.repo
vi hdp.repo
vi hdp-gpl.repo
|
ps:其中 baseurl路径与gpgkey需要根据自己的实际解压路径来,否则makecache不能成功
紧接着制作源:
yum clean all yum makecache yum repolist |
11.安装Ambari (在hdp1部署)
安装Ambari yum install ambari-server –y
配置Ambari ambari-server setup 下面是配置执行流程,按照提示操作: 启动Amabri
ambari-server start 成功启动后在浏览器输入Ambari地址:http://192.168.10.151:8080 出现登录界面,默认管理员账户登录, 账户:admin 密码:admin 登录成功后出现下面的界面,至此Ambari的安装成功 |
ps: 报错的话修改在/etc/ambari-server/conf/ambari.properties配置文件中添加(Ambari默认的 mysql jdbc 驱动不支持 5.6以上版本)
server.jdbc.driver.path=/usr/share/java/mysql-connector-java-5.1.43-bin.jar |
执行
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-5.1.43-bin.jar |
12.使用Ambari界面安装Hadoop、spark、Hbase等服务
(1)开始安装
点击登录成功页面的Launch Install Wizard 按钮进行集群配置
(2)设置集群名称
(3)选置HDP安装源
选择HDP2.6.4.0 ,并且选择Use Local Repository,本次使用本地源,选择redhat7填写本地源地址
HDP-2.6 | http://192.168.10.151/HDP/centos7/2.6.4.0-91 |
HDP-2.6-GPL | http://192.168.10.151/HDP-GPL/centos7/2.6.4.0-91 |
HDP-UTILS-1.1.0.22 | http://192.168.10.151/HDP-UTILS/centos7/1.1.0.22 |
填写内容为hdp.repo和hdp.gpl.repo文件中对应的baseurl
(4)设置集群机器
下载hdp1机器上的id_rsa私钥到本地
(5)Host确认
确认前面配置集群中hosts列表中的机器是否都可用,也可以移除相关机器,集群中机器Success后进行下一步操作
ps:该步骤会遇到多种确认失败的原因,部分错误解决方式见附录或百度
序号 | 失败原因 | 解决 |
1 | SSLError: Failed to connect. Please check openssl library versions.
Registration with the server failed. | https://blog.csdn.net/cp_panda_5/article/details/79993057 1、vi /etc/ambari-agent/conf/ambari-agent.ini [security]位置下添加force_https_protocol=PROTOCOL_TLSv1_2 2、vi /etc/locale.conf 改为: LANG="en_US.UTF-8" LANGUAGE="en_US:en" 3、vi /etc/python/cert-verification.cfg 改为: [https] verify=disable 或者执行: sed -i 's/verify=platform_default/verify=disable/' /etc/python/cert-verification.cfg |
2 | File "/usr/lib/python2.6/site-packages/ambari_agent/main.py", line 312, in <module> main(heartbeat_stop_callback) File "/usr/lib/python2.6/site-packages/ambari_agent/main.py", line 248, in main stop_agent() File "/usr/lib/python2.6/site-packages/ambari_agent/main.py", line 195, in stop_agent sys.exit(1) | 解决方法同上(2、3) |
(6)选择要安装的服务
(选择HDFS、Hive、ZooKeeper、Spark、Spark2)
点击Next时会提示需要勾选需要依赖的Service,选择OK即可
(7)各个服务Master配置
ps:由于mysql安装到hdp1服务器,所以修改Hive对应的服务器为hdp1
(8)服务的Slaves 和 Clients节配置
(9)服务的客制化配置
序号 | 问题 | 解决 |
1 | HDFS 和 YARN can't start with "home(s)" NameNode和DataNode目录设置不能用/home目录的修改 | vi /usr/lib/ambari-server/web/javascripts/app.js 把false改成true,注意如果使用winscp工具打开编辑的时候,一定先设置编辑的语言为UTF-8,否则导致ambari页面起不来,后果很严重。 改后不需要重启ambari-server直接刷新界面即可。 |
2 | HIVE 选择已有数据库 | hive账号的密码为Hive-123,填写后测试数据库连接 |
3 | 其他需要填写密码的位置 | 填写admin即可 |
4 | snappy版本过高 | rpm -qa | grep snappy rpm -e snappy-1.1.0-3.el7.x86_64 --nodeps cd /home/tools/rpm/ yum install snappy-1.0.5-1.el6.x86_64.rpm -y |
5 | Package: hadoop_2_6_4_0_91-hdfs-2.7.3.2.6.4.0-91.x86_64 (HDP-2.6-repo-1) Requires: libtirpc-devel | 安装libtirpc-devel-0.2.4-0.10.el7.x86_64.rpm和libtirpc-so-0.2.4-0.10.el7.x86_64.rpm 有顺序问题 yum install libtirpc-so-0.2.4-0.10.el7.x86_64.rpm -y yum install libtirpc-devel-0.2.4-0.10.el7.x86_64.rpm -y |
6 | Cannot match package for regexp name hadoop_${stack_version} | 有之前安装过的,需要卸载 yum list installed |grep hadoop_* |
7 | Cannot match package for regexp name phoenix_${stack_version} | 有之前安装过的,需要卸载,类似6/7项的错误可以替换关键字执行 yum list installed |grep phoenix_* |
(10)显示配置信息
(11)安装、启动服务及测试
(安装各个服务,并且完成安装后会启动相关服务,安装过程比较长,如果中途出现错误,请根据具体提示或者log进行操作)
问题 | 解决 |
Failed connect to 192.168.10.151:80; Connection refused | 重启http服务 systemctl start httpd.service |
exceptions.Fail: Applying File['/usr/hdp/current/slider-client/lib/slider.tar.gz'] failed, parent directory /usr/hdp/current/slider-client/lib doesn't exist | 创建路径即可 |
Cannot create directory '/usr/hdp/current/slider-client/conf' as '/usr/hdp/current/slider-client' is a broken symlink | mkdir /usr/hdp/2.6.4.0-91/slider/conf mkdir /usr/hdp/2.6.4.0-91/slider/lib |
Fail("Cannot match package for regexp name {0}. Available packages: {1}".format(name, self.available_packages_in_repos)) resource_management.core.exceptions.Fail: Cannot match package for regexp name zookeeper_${stack_version}. Available packages | ln -s /usr/hdp/2.6.4.0-91/slider /usr/hdp/current/slider-client |
Execution of 'ambari-python-wrap /usr/bin/hdp-select set oozie-client 2.6.4.0-91' returned 1. symlink target /usr/hdp/current/oozie-client for oozie already exists and it is not a symlink. | 从其他机器上copy /usr/hdp/2.6.4.0-91/oozie #ln -s /usr/hdp/2.6.4.0-91/oozie /usr/hdp/current/oozie-client # /usr/bin/hdp-select set oozie-client 2.6.4.0-91 |
/usr/sbin/hst: line 321: install-activity-analyzer.sh: command not found | yum remove smartsense-hst rm -rf /var/log/smartsense/ |
HDP 2.6.1 Infra Solr Client Install fails "Source file /usr/lib/ambari-infra-solr-client/solrCloudCli.sh is not found" | Query for ambari rpm: # rpm -qa | grep ambari Removed ambari-infra-solr-client yum remove ambari-infra-solr-client |
Oozie web console is disabled. | 安装extjs2.2.zip |
Execution of 'tar -xvf /usr/hdp/current/oozie-server/oozie-sharelib.tar.gz -C /usr/hdp/current/oozie-server' returned 2. tar: /usr/hdp/current/oozie-server/oozie-sharelib.tar.gz: Cannot open: No such file or directory tar: Error is not recoverable: exiting now | 从其他机器上copy |
Faclon Web UI failing with HTTP 503 service unavailable | 安装je.jar 参考: https://community.hortonworks.com/questions/77600/faclon-web-ui-failing-with-http-503-service-unavai.html |
Getting exception: java.lang.ClassNotFoundException: org.apache.hadoop.metrics2.sink.kafka.KafkaTimelineMetricsReporter | yum reinstall ambari-metrics-hadoop-sink 参考: https://community.hortonworks.com/questions/135736/getting-exception-javalangclassnotfoundexception-o.html https://community.hortonworks.com/content/supportkb/49117/storm-worker-fails-with-javalangclassnotfoundexcep.html |
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them。 | ### yum 清除未完成的 1、安装 yum-complete-transaction 这是一个能发现未完成或被中断的yum事务的程序。 #yum -y install yum-utils 2、清除yum缓存 #yum clean all 3、执行清理未完成事务 #yum-complete-transaction --cleanup-only 参考:https://yq.aliyun.com/ziliao/65810 |
(12)全部安装成功
界面如下
(13)安装完成界面
13. Hadooop开启高可用
现在安装好Hadoop是不支高可用的,下面准备开启Hadoop高可用
(1)开启高可用开关
(2)设置高可用名称
如果hbase是启动的话请关闭在开启HA高可用
(3)选择服务安装在那台主机上
(4)创建检查点(含手动任务)
执行成功上面两个命令之后,Next按钮变为可用状态
(5)初始化JournalNodes(含手动任务)
执行完上面命令后Next可用
(6)初始化Meatdata(含手动任务)
按照提示执行上述命令,注意执行命令对应的服务器
执行提示框
(7)完成高可用安装
14.验证集群
(1)Ambari上给Root用户增加HDFS写权限
重启受影响的服务
(2)验证集群
修改本地hosts文件方便用域名访问服务
C:\Windows\System32\drivers\etc 添加: 192.168.10.151 hdp1.bdsoft.com hdp1 192.168.10.152 hdp2.bdsoft.com hdp2 192.168.10.153 hdp3.bdsoft.com hdp3 |
A、HDFS Namenode
http://hdp1.bdsoft.com:50070/dfshealth.html#tab-overview
http://hdp2.bdsoft.com:50070/dfshealth.html#tab-overview
B、YARN
http://hdp2.bdsoft.com:8088/cluster
C、测试MapReduce
[root@hdp1 ~]# hdfs dfs -mkdir /data/ [root@hdp1 ~]# vi mr_test_data.txt #准备测试数据,保存文件 [root@hdp1 ~]# cat mr_test_data.txt hadoop hadoop spark hbase hbase hbase [root@hdp1 ~]# hdfs dfs -put mr_test_data.txt /data/ [root@hdp1 ~]# hadoop jar /usr/hdp/2.6.4.0-91/hadoop-mapreduce/hadoop-mapreduce-examples-2.7.3.2.6.4.0-91.jar wordcount /data/mr_test_data.txt /result/ |
下图只有在任务计算时可以访问,在运行结束后将无法访问
查看运行结果:http://hdp2.bdsoft.com:50070/explorer.html#/result
D、测试Spark yarn-client(适合交互和调试)
cd /usr/hdp/2.6.4.0-91/spark2/ && bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 540M --num-executors 1 examples/jars/spark-examples_2.11-2.2.0.2.6.4.0-91.jar 100 |
E、测试Spark yarn-cluster(适合生产环境)
cd /usr/hdp/2.6.4.0-91/spark2/ && bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 750M --num-executors 1 examples/jars/spark-examples_2.11-2.2.0.2.6.4.0-91.jar 10 |
15. 错误及解决方法总结
报错 | 解决方法 |
/usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro: line 317: /home/user/jdk1.8.0_161/bin/java: Permission denied /usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro: line 317: exec: /home/user/jdk1.8.0_161/bin/java: cannot execute: Permission denied | jdk访问权限受限,将jdk的父级目录修改权限及拥有者 chown -R root:root /home/user chmod -R 755 /home/user |
http://192.168.10.151/repo/HDP/centos7/2.6.4.0-91/repodata/4348bb6c119f27aa6b2906666956841d6bb5594da8950149bbfad44ba51d2156-primary.sqlite.bz2: [Errno 14] curl#56 - "Recv failure: Connection reset by peer" | http服务启动后,直接访问http://192.168.10.151没有出现Testing 123...画面,部署时遇到以.sqlite.bz2结尾的文件无法访问,但是其他文件可以正常访问。 最终修改http服务的默认端口后成功,有可能80端口访问受限 vi /etc/httpd/conf/httpd.conf 修改 Listen 9901 |
root用户无法实现ssh免密登录 | 修改/etc/ssh/sshd_config文件如下配置: 重启ssh服务:service sshd restart |