hadoop集群部署1

1. 环境

平台使用 Centos 7 64位作为系统环境。采用1个Master节点与3个Slave节点搭建成为分布式集群,详情见表 1。

enter description here

2. 基础安装

2.1. 安装CentOS 7

拷制U盘启动后,选择开机使用U盘启动,进入主引导装机页面如下图。

图 1
选择Test this medis & install CentOS Linux 7,进入下面界面:

图 2
稍等片刻后,进入CenOS7可视化安装界面,选择中文。

图 3
点击Continue后,进入安装信息摘要界面,选择日期和时间为亚洲/上海 时区,主要保持每个服务器的时区一致,软件选择为最小安装,点击安装位置后如图 12所示,根据需要选择自动分区或者手动分区,这里为自动分区。点击完成后,回到图 11,点击开始安装。

图 4

图 5
安装进行过程中提示用户设置如下图,点击ROOT密码,为ROOT用户设置密码,如需要创建其他用户,可点击创建用户,新增其他用户。

图 6
之上内容设置完成后,点击重启,完成系统安装。

2.2. 配置网络

设置各节点静态IP
修改hostname:
$ vi /etc/hostname #编辑配置文件
Master

2.3. 关闭防火墙和SeLinux

CentOS 7.0默认使用的是firewall作为防火墙,默认为最小化安装时,系统没有安装防火墙,安装完可视化界面后,可能防火墙也会被安装上,因此需要关闭防火墙。

1
2
$ systemctl stop firewalld.service #停止firewall
$ systemctl disable firewalld.service #禁止firewall开机启动

使用sestatus -v 命令,查看Selinux状态。如果不是disable状态,编辑/etc/sysconfig/selinux 文件。

1
2
$ vi /etc/sysconfig/selinux
SELINUX=disabled

2.4. SSH免密码登录

SSH免密码登录,因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys
(1) CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,

1
2
3
$ vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

(2) 输入命令,ssh-keygen -t rsa,生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置。

1
$ ssh-keygen -t rsa

(3) 合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并

1
2
3
4
5
$ cat id_rsa.pub>> authorized_keys
$ Chmod 600 authorized_kdys
$ ssh root@192.168.0.165 cat ~/.ssh/id_rsa.pub>> authorized_keys
$ ssh root@192.168.0.166 cat ~/.ssh/id_rsa.pub>> authorized_keys
$ ssh root@192.168.0.167 cat ~/.ssh/id_rsa.pub>> authorized_keys

(4) 把Master服务器的authorized_keys、known_hosts复制到Slave服务器的/root/.ssh目录

1
2
3
$ scp authorized_keys root@192.168.0.165:~/.ssh
$ scp authorized_keys root@192.168.0.166:~/.ssh
$ scp authorized_keys root@192.168.0.167:~/.ssh

(5) 完成,ssh Slave1、ssh Slave2、ssh Slave3就不需要输入密码了

2.5. 安装JDK

安装JDK,Hadoop2.7需要JDK7,由于我的CentOS是最小化安装,所以没有OpenJDK,直接解压下载的JDK并配置变量即可
(1)下载“jdk-7u79-linux-x64.gz”,放到/home/java目录下
(2)解压,输入命令,tar -zxvf jdk-7u79-linux-x64.gz
(3)编辑/etc/profile

1
2
3
export JAVA_HOME=/home/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

(4)使配置生效,输入命令,source /etc/profile
(5)输入命令,java -version,完成

3. 数据库安装

1) 下载安装包
http://dev.mysql.com/downloads/mysql/#downloads
推荐下载通用安装方法的tar.gz包
2) 检查库文件是否存在,如有删除。
$ rpm -qa | grep mysql
mysql-libs-5.1.52-1.el6_0.1.x86_64
$ rpm -e mysql-libs-5.1.52.x86_64 –nodeps
3) 检查mysql组和用户是否存在,如无创建。

1
2
3
4
$ cat /etc/group | grep mysql
mysql:x:490:
$ cat /etc/passwd | grep mysql
mysql:x:496:490::/home/mysql:/bin/bash

以上为默认存在的情况,如无,执行添加命令:

1
2
$groupadd mysql
$useradd -r -g mysql mysql

//useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
4) 解压TAR包,更改所属的组和用户

1
2
3
4
$ cd /usr/local/
$ tar -xvfz mysql-5.6.37-linux-glibc2.5-x86_64.tar.gz
$ chown -R mysql mysql-5.6.37-linux-glibc2.5-x86_64/
$ chgrp -R mysql mysql-5.6.37-linux-glibc2.5-x86_64/

5) 安装和初始化数据库

1
$ bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

6) 改写配置文件

1
2
3
4
$ cp -a ./support-files/my-default.cnf /etc/my.cnf
$ cp -a ./support-files/mysql.server /etc/init.d/mysqld
$ cd etc/
$ vi my.cnf

修改my.cnf的内容如下
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
port=3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql # 设置mysql的安装目录
datadir=/usr/local/mysql/data # 设置mysql数据库的数据的存放目录
max_connections=200 # 允许最大连接数
character-set-server=utf8
default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
lower_case_table_names=1
max_allowed_packet=16M

7) 启动数据库服务并设置服务开机自动启动

1
2
3
$ ./mysqld_safe --user=mysql &
$ /etc/init.d/mysqld restart
$ chkconfig --level 35 mysqld on //设置开机启动

8) 初始化密码

1
$ cat /root/.mysql_secret

# Password set for user 'root@localhost' at 2016-06-01 15:23:25
,xxxxxR5H9
$ mysql -uroot –p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.12

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> SET PASSWORD = PASSWORD(‘123456’);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
9) 添加远程访问权限
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = ‘%’ where user = ‘root’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select host, user from user;
+———–+———–+
| host | user |
+———–+———–+
| % | root |
| localhost | mysql.sys |
+———–+———–+
mysql> quit
$ /etc/init.d/mysqld restart //一定要重启才会生效。

4. Ambari安装

由于在线安装容易受到网络不稳定等方面影响,因此采用平台选用离线安装的方式。

4.1. 搭建Yum源服务器

1) 安装httpd服务
检查是否已经安装apache http服务。

1
$ which httpd

如果没有出现目录信息,则说明没有安装。通过下面的语句进行安装。

1
$ sudo yum install httpd

安装成功之后,apache工作目录默认在/var/www/html。检查如没有此目录,需要手动创建相同目录结构。检查端口是否占用,http服务使用80端口

1
$ netstat -nltp | grep 80

如果有占用情况,安装完毕之后需要修改apache http服务的端口号:

1
$ sudo vi /etc/httpd/conf/httpd.conf

修改监听端口,Listen 80为其他端口。
为了加快安装速度和防止超时错误,建议为HDP配置本地源,请在事先在网上下载HDP、HDP-UTILS和Ambari,本例中几个组件版本为HDP-2.6.0,HDP-UTILS-1.1.0.21和Ambari-2.5.1.0。此处把slave3服务器做为源服务器。以下操作在slave3机器运行。
2) 下载压缩包
首先下载包含必要软件的压缩包(tarball)到本地,在https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/ambari_repositories.html中,查看需要下载的tarball。下表为本平台所用的内容:
服务内容 Tarball源地址
Ambari http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.1.0/ambari-2.5.1.0-centos7.tar.gz
HDP http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.1.0/HDP-2.6.1.0-centos7-rpm.tar.gz
HDP-UTILS http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz
建立本地仓库,这里使用 httpd 来建立,安装启动httpd省略。解压三个包到 /var/www/html 目录下。

1
2
3
$ tar -zxvf ambari-2.5.1-centos7.tar.gz -C /var/www/html/
$ tar -zxvf HDP-2.6.1.0-centos7-rpm.tar.gz -C /var/www/html/
$ tar -zxvf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/

3) 修改Repo
修改 ambari.repo,使之与 yum源机器匹配。

1
2
3
4
5
6
7
8
9
10
11
$ cd /etc/yum.repos.d
$vi ambary.repo
#VERSION_NUMBER=2.5.1.0-159
[Updates-ambari-2.5.1.0]
name=ambari-2.5.1.0- Updates
baseurl=http://192.168.1.3/data/ambari/centos7/
gpgcheck=1
gpgkey=http://192.168.1.3/data/ambari/centos7/RPM-GPG-KEY/RPM-GPG-KEY
-Jenkinsenabled=1
priority=1
修改 hdp.repo,使之与 yum源机器匹配。
1
2
3
4
5
6
7
$vi ambary.repo
[HDP-2.6]
name=HDP-2.6
baseurl=http://192.168.1.3/data/HDP/centos7/
path=/
enabled=1
gpgcheck=0

修改 HDP-UTILS.repo,使之与 yum源机器匹配。

1
2
3
4
5
6
7
$vi ambary.repo
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS-1.1.0.21
baseurl=http://192.168.1.3/data/HDP-UTILS-1.1.0.21-centos7/
path=/
enabled=1
gpgcheck=0

4.2. 安装Ambari Server

在上述内容配置完成后,安装ambari-service。出现Complete! 则可

1
$ yum install ambari-server

启动Ambari-server服务,出现提示后,根据提示填写相应的回答。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$ ambari-server setup
Using python /usr/bin/python2.6
Setup ambari-server
Checking SELinux...
SELinux status is 'disabled'
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
==============================================================================
Enter choice (1): 3
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/jdk64/jdk1.7.0_67
Validating JDK on Ambari Server...done.
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? y
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
==============================================================================
Enter choice (1): 3
Hostname (localhost):
Port (3306):
Database name (ambari):
Username (ambari):
Enter Database Password (bigdata):
Configuring ambari database...
Copying JDBC drivers to server resources...
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)?
Extracting system views...
...ambari-admin-2.1.0.1470.jar
...
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

看到以上结果后,安装成功。
上面出现如下错误

下载mysql_jdbc驱动,放到/usr/share/java/目录,并重命名为mysql-connector-java.jar,否则后面安装会报错。
下载:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

4.3. 初始化数据库

1
2
cd /var/lib/ambari-server/resources/
mysql -uroot -p123456 ambari < Ambari-DDL-MySQL-CREATE.sql

没初始化数据库,启动服务会报如下错误

4.4. 启动服务

ambari-server start启动服务。

此时,登录192.168.1.168:8080,即可看到ambari的页面,如下:
enter description here

4.5. 安装 HDP 集群

在ambari的登录页面中输入用户名:admin,密码:admin,即可开始准备创建集群。
1) 点击 launch install wizard ,开始创建一个集群,输入集群名称:BasicPlatform。
enter description here
2) 修改下面红框的内容,选择HDP的版本为2.6,修改HDP-2.6的数据源Base URL为http://192.168.1.3/HDP/centos7/,修改HDP-UTILS的数据源Base URL为http://192.168.1.3/HDP-UTILS-1.1.0.21-centos7/。
enter description here
3) 设置集群机器:输入Target Hosts如下:
备注,必须安装如下格式,不能使用hadoop2
hadoop2.zhjx
hadoop3.zhjx
hadoop4.zhjx
从master中拷贝出来id_rsa文件,通过选择文件,上传到ambari中。
enter description here
点击确认后,开始向每个机器中安装ambari-client,稍等到下面页面,即可显示安装完成。
enter description here
问题1:
centos7.3/4安装ambari2.6以上版本报EOF occurred in violation of protocol (_ssl.c:579)
enter description here
解决办法:
enter description here
4) 选择要安装的服务,与下图中的一致。
可先按照如下组件
HDFS、Hive、HBase、Sqoop、ZooKeeper、Flume
enter description here
这里选择默认了,也可以自己调整
enter description here
enter description here
配置标红的组件,进行修改配置
enter description here
enter description here
enter description here

enter description here

enter description here

enter description here
enter description here

5) 各个服务Master配置
详见附件2
6) 服务的Slaves 和 Clients节配置:
详见附件3
7) 服务详情配置
看到如下界面后,如有红色警告提示,根据警告修改服务详情内容,注意把Ooize等服务中使用的数据库改为MySQL数据库。
enter description here
待确定完修改后的配置时,开始安装:
enter description here
全部安装成功界面如下:
enter description here
点击下一步,确定安装内容后,即可看到集群情况。
enter description here
、Hadooop开启高可用(现在安装好Hadoop是不支高可用的,下面准备开启Hadoop高可用)
1、 开启高可用开关
enter description here
3、 设置高可用名称(如果hbase是启动的话请关闭在开启HA高可用)
enter description here
4、
enter description here
enter description here

5. 安装ELK

5.1. 安装Elasticsearch

  1. 安装elasticsearch
    下载地址: https://www.elastic.co/downloads/elasticsearch
    下载对应的版本,下载后解压到想安装的文件夹中,因为es是绿色版本所以解压后就可以使用
    ./bin/elasticsearch其实是一个shell脚本,最终还是启动在java的虚拟机环境中,并加入了一定参数。
1
2
3
4
5
# rpm -ivh elasticsearch-5.6.4.rpm
# chkconfig --add elasticsearch
# chkconfig elasticsearch on
# vim etc/elasticsearch/elasticsearch.yml
# /etc/init.d/elasticsearch.rpmnew start

可执行文件目录:/usr/share/elasticsearch/
配置文件目录: /etc/elasticsearch/
日志文件目录:/var/log/elasticsearch/
data文件目录:/var/lib/elasticsearch/
pid文件路径:/var/run/elasticsearch/
日志文件:/var/log/elasticsearch/

  1. 启动elasticsearch
    守护进程 ./bin/elasticsearch -d
    前台运行 ./bin/elasticsearch
    配合elasticsearch-servicewrapper 插件将脚本服务化更易管理 (2.x加不再支持,弃用)。
    运行日志在../log/下,每一个索引一个文件,每日一个文件,包括运行的慢日志和服务日志。
  2. 测试elasticsearch
    curl -XGET http://xxx:9200/?pretty

    5.2. 安装Kibana

    下载页面:https://www.elastic.co/cn/downloads/kibana
    安装rpm包,我的电脑是x64的所以下载64位的安装包,rpm包安装完毕后会自动在/etc/init.d/下生成执行脚本,提供给service/chkconfig,更方便我们使用。
1
2
3
# wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.4-x86_64.rpm
# rpm -ivh kibana-5.6.4-x86_64.rpm
# vim /etc/kibana/kibana.yml

5.3. 安装x-pack插件

官方下载地址:https://www.elastic.co/downloads/x-pack
官方文档地址:https://www.elastic.co/guide/en/x-pack/current/xpack-introduction.html
https://www.elastic.co/gu ide/en/x-pack/6.0/setting-up-authentication.html#set-built-in-user-passwords

  1. elasticsearch安装x-pack插件
     如果是集群架构,则每一台新机器都需要安装插件。
     kibana安装了x-pack,elasticsearch也必须要安装。
1
2
3
4
5
6
# /usr/share/elasticsea     rch/bin/elasticsearch-plugin install x-pack
# /usr/share/kibana/bin/kibana-plugin install x-pack
2. 编辑配置文件
# vim /etc/elasticsearch/x-pack/
3. 用户管理
# /usr/share/elasticsearch/bin/x-pack/users useradd test -p 123456 -r superuser
  1. 其他安装

    6.1. 安装VNC Service

    由于165、166、167当做服务器的同时,也作为外网开发机使用,为了建立远程可编程环境,加入了可视化桌面也远程桌面,需要在每个机器上安装VNC Service。
    1) 安装 X-Window
    由于我们安装操作系统为最小化版本,因此首先需要安装 X-Window,在终端中运行下面的命令,安装会花费一点时间。
1
2
3
$ yum check-update
$ yum groupinstall "X Window System"
$ yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts

待安装完成后,修改系统启动界面为图形界面。

1
2
$ unlink /etc/systemd/system/default.target
$ ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/ default.target

重启电脑,重启完成后即可进入图形化界面。
2) 安装 VNC 服务器

1
$ yum install tigervnc-server -y

安装完成后后,我们需要在 /etc/systemd/system/ 目录里创建一个配置文件。我们可以将 /lib/systemd/sytem/vncserver@.service 拷贝一份配置文件范例过来。

1
$cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver @:1.service

打开 /etc/systemd/system/vncserver@:1.service ,找到下面这几行,用自己的用户名替换掉 。

1
2
ExecStart=/sbin/runuser -l hadoop -c "/usr/bin/vncserver %i"
PIDFile=/home/hadoop/.vnc/%H%i.pid

如果是 root 用户则替换内容如下:

1
2
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

修改完成后,按Esc退出编辑模式,!wq保存,下面重启 systemd。

1
$ systemctl daemon-reload

最后还要设置一下用户的 VNC 密码。要设置某个用户的密码,必须要有能通过 sudo 切换到用户的权限。这里我们用的root用户,直接输入一下代码即可。

1
$ sudo vncpasswd

3) 开启服务
用下面的命令(永久地)开启服务:

1
$ sudo systemctl enable vncserver@:1.service

启动服务。

1
$ sudo systemctl start vncserver@:1.service

4) 用 VNC 客户端连接服务器
要使用 VNC 连接服务器,我们还需要一个在本地计算机上安装的仅供连接远程计算机使用的 VNC 客户端。
可以用像 Tightvnc viewer 和 Realvnc viewer 的客户端来连接到服务器。此处用RealVNC Viewer连接,配置如下:

图 11
要用更多的用户连接,需要创建配置文件和端口,请回到第2步,添加一个新的用户和端口。你需要创建 vncserver@:2.service 并替换配置文件里的用户名和之后步骤里相应的文件名、端口号。请确保你登录 VNC 服务器用的是你之前配置 VNC 密码的时候使用的那个用户名。
VNC 服务本身使用的是5900端口。鉴于有不同的用户使用 VNC ,每个人的连接都会获得不同的端口。配置文件名里面的数字告诉 VNC 服务器把服务运行在5900的子端口上。在我们这个例子里,第一个 VNC 服务会运行在5901(5900 + 1)端口上,之后的依次增加,运行在5900 + x 号端口上。其中 x 是指之后用户的配置文件名 vncserver@:x.service 里面的 x 。
在建立连接之前,我们需要知道服务器的 IP 地址和端口。IP 地址是一台计算机在网络中的独特的识别号码。我的服务器的 IP 地址是96.126.120.92,VNC 用户端口是1。

附件1:账户密码表
表 2 系统用户表
Hostname 角色 登录名/密码 备注
Master root root/123456
Slave1 root root/123456 系统管理员
Slave2 root root/123456 系统管理员
Slave3 root root/123456 系统管理员
注*:大小写敏感

表 3 数据库用户表
数据库 角色 登录名/密码 作用域 备注
MySQL DBA root/ localhost
MySQL DBA zhjx/1234 %
注*:大小写敏感

表 4 服务用户表
服务名称 角色 登录名/密码 作用域 备注
Ambari superuser admin/admin
HUE DBA root/123456 %
:大小写敏感

-------------本文结束感谢您的阅读-------------

本文标题:hadoop集群部署1

文章作者:OperationMAN

发布时间:2021年04月19日 - 16:04

最后更新:2022年06月05日 - 21:06

原始链接:https://kxinter.gitee.io/2021/04/19/hadoop集群部署1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!