peter-lau

搭建数据仓库指引

  1. 环境准备

yum install -y gcc libxml2-devel libxslt-devel cyrus-sasl-devel mysql-devel python-devel python-setuptools python-simplejson sqlite-devel ant gmp-devel

yum install -y cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi

yum -y install libffi-devel

yum -y install openldap-devel (重新编译)

  1. CENTOS安装 略
  2. 修改IP地址 [root@master ~]#vi /etc/sysconfig/network

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.93

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

  1. 删除70-persistent-net.rules

[root@master ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules

  1. 修改主机名(从服务器同样修改)

[root@master ~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

  1. 设置IP与主机映射关系

[root@master ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.93 master

192.168.1.94 slave1

192.168.1.95 slave2

  1. 关闭防火墙

[root@master ~]#service iptables stop 关闭

[root@master ~]#chkconfig iptables off 开机自动关闭

  1. 关闭Selinux

[root@master ~]#setenforce 0 临时关闭

[root@master ~]#vi /etc/selinux/config

SELINUX=disabled

  1. 安装SSH服务
    1. root账号登录安装SSH :

yum install -y openssl openssh-server

  1. yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)
  2. root账户修改配置文件: #vim /etc/ssh/sshd_config

找到permitrootlogin将其前面的注释去掉

  1. 启动SSH服务: systemctl start sshd.service
  2. 设置SSH开机自启动:systemctl enable sshd.service
  1. 配置SSH免密登录
    1. 生成密钥对

[root@master ~]#ssh-keygen -t rsa

中间3次回车

clip_image001

  1. 将slave上的公钥发送到master上

Slave1机器上执行 # scp -r /root/.ssh/id_rsa.pub master:/root/.ssh/slave1 .pub

Slave2机器上执行 # scp -r /root/.ssh/id_rsa.pub master:/root/.ssh/slave2 .pub

  1. 复制公钥到authorized_keys

在master上执行

#进入/root/.ssh目录

[root@master ~]# cd .ssh/

#复制master生成的公钥到authorized_keys

[root@master .ssh]# cat id_rsa.pub >> authorized_keys

#复制slave1生成的公钥到authorized_keys

[root@master .ssh]# cat slave1.pub >> authorized_keys

#复制slave2生成的公钥到authorized_keys

[root@master .ssh]# cat slave2.pub >> authorized_keys

  1. 将合并后的公钥发送到其他节点

#发送到slave1服务器

[root@master .ssh]# scp -r authorized_keys slave1:$PWD

#发送到slave2服务器

[root@master .ssh]# scp -r authorized_keys slave2:$PWD

  1. 修改权限SSH文件夹及authorized_keys文件

[root@master -]# chmod -R 700 .ssh

[root@master -]# cd .ssh

[root@master .ssh]# chmod 600 authorized_keys

权限700和600功能参考如下:

  • -rw------- (600) 只有拥有者有读写权限。
  • -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
  • -rwx------ (700) 只有拥有者有读、写、执行权限。
  • -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
  • -rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
  • -rw-rw-rw- (666) 所有用户都有文件读、写权限。
  • -rwxrwxrwx (777) 所有用户都有读、写、执行权限。
  1. 测试免密登录

第一次登录要求输入YES确认一下,之后就可以直接进行登录,所以机器都要进行登录一遍

[root@master .ssh]# ssh master

[root@master .ssh]# ssh slave1

[root@master .ssh]# ssh slave2

  1. 修改时间同步(需要NTP)
    1. 主节点

#更新yum源ntp

Yum -y install ntp

#查询机器时间

Date

#时间同步

ntpdate pool.ntp.org

#查看时间同步服务

service ntpd status

#临时启用时间同步服务

service ntpd start

#配置ntpd永久生效(重启生效)

chkconfig ntpd on

从节点

使用crontab定时任务

crontab -e

添加定时任务(每分钟和主机同步)内容如下:

0-59/1 * * * * /usr/sbin/ntpdate cdh01.cm

  1. 更新yum源httpd

#更新yum源httpd

yum -y install httpd

#查看httpd状态

systemctl status httpd.service

#启动httpd

service httpd start

#配置httpd永久生效(重启生效)

chkconfig httpd on

  1. 更新yum源yum-utils

#更新yum源yum-utils createrepo

yum -y install yum-utils createrepo

安装系统依赖组件:(每台服务器均要)

  1. JDK安装

6.1新建SOFT文件夹

#mkdir /usr/local/soft

6.2上传JDK安装包

(注意hadoop2.x只支持1.7 hadoop3支持1.8)

6.3解压到JAVA目录

#tar -zxvf JDK-8u221-linux-x64.tar.gz -C /opt/java

#vi /etc/profile 配置环境变量 在文件最后加上

#JAVA_HOME

export JAVA_HOME=/opt/java/jdk1.8.0_221

export PATH=$PATH:$JAVA_HOME/bin

修改后,使profile文件重新生效

#source /etc/profile

验证JAVA版本

#java -version

java version "1.8.1_221"

Java(TM) SE Runtime Environment (build 1.8.1_221-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

ZOOKEEEPER组件安装

ZooKeeper软件的文件和目录

  • bin目录
    zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
  • conf目录
    配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
  • lib
    zk依赖的包。
  • contrib目录
    一些用于操作zk的工具包。
  • recipes目录
    zk某些用法的代码示例

运行配置

上面提到,conf目录下提供了配置的样例zoo_sample.cfg,要将zk运行起来,需要将其名称修改为zoo.cfg。

打开zoo.cfg,可以看到默认的一些配置。

  • tickTime
    时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。
    tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
  • clientPort
    zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
  • dataDir
    无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。

集群模式

单机模式的zk进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对zk进行部署。

注意

在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。如果只部署2个zk进程,当其中一个zk进程挂掉后,剩下的一个进程并不能构成一个quorum的大多数。因此,部署2个进程甚至比单机模式更不可靠,因为2个进程其中一个不可用的可能性比一个进程不可用的可能性还大。

5. 1 运行配置

在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),例如如下配置:

tickTime=2000

dataDir=/home/myname/zookeeper

clientPort=2181

initLimit=5

syncLimit=2

server.1=192.168.229.160:2888:3888

server.2=192.168.229.161:2888:3888

server.3=192.168.229.162:2888:3888

  • initLimit
    ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
    当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
  • syncLimit
    配置follower和leader之间发送消息,请求和应答的最大时间长度。
  • tickTime
    tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
  • server.id=host:port1:port2
    其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
    host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
  • dataDir
    其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。

注意

如果仅为了测试部署集群模式而在同一台机器上部署zk进程,server.id=host:port1:port2配置中的port参数必须不同。但是,为了减少机器宕机的风险,强烈建议在部署集群模式时,将zk进程部署不同的物理机器上面。

5.2 启动

假如我们打算在三台不同的机器 192.168.229.160,192.168.229.161,192.168.229.162上各部署一个zk进程,以构成一个zk集群。

三个zk进程均使用相同的 zoo.cfg 配置:

tickTime=2000

dataDir=/home/myname/zookeeper

clientPort=2181

initLimit=5

syncLimit=2

server.1=192.168.229.160:2888:3888

server.2=192.168.229.161:2888:3888

server.3=192.168.229.162:2888:3888

在三台机器dataDir目录( /home/myname/zookeeper 目录)下,分别生成一个myid文件,其内容分别为1,2,3。然后分别在这三台机器上启动zk进程,这样我们便将zk集群启动了起来。

5.3 连接

可以使用以下命令来连接一个zk集群:

bin/zkCli.sh -server 192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181

成功连接后,可以看到如下输出:

2016-06-28 19:29:18,074 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@770537e4

Welcome to ZooKeeper!

2016-06-28 19:29:18,146 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 192.168.229.162/192.168.229.162:2181. Will not attempt to authenticate using SASL (unknown error)

JLine support is enabled

2016-06-28 19:29:18,161 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@852] - Socket connection established to 192.168.229.162/192.168.229.162:2181, initiating session

2016-06-28 19:29:18,199 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 192.168.229.162/192.168.229.162:2181, sessionid = 0x3557c39d2810029, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: 192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181(CONNECTED) 0]

图2:客户端连接zk集群的输出日志

从日志输出可以看到,客户端连接的是192.168.229.162:2181进程(连接上哪台机器的zk进程是随机的),客户端已成功连接上zk集群。

HADOOP组件安装

  1. HADOOP安装
  • 解压HADOOP安装包

#tar -zxvf hadoop-2.8.5.tar.gz -C /opt/hadoop

  • 配置/opt/hadoop/Hadoop-2.8.5/etc/hadoop下的六个文件,分别是

Hadoop-env.sh core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers

Hadoop-env.sh添加内容

export JAVA_HOME=/opt/java/jdk1.8.0_221

#Set HADOOP

export HDFS_NAMENODE_USER="root"

export HDFS_DATANODE_USER="root"

export HDFS_SECONDARYNAMENODE_USER="root"

export YARN_RESOURCEMANAGER_USER="root"

export YARN_NODEMANAGER_USER="root"

core-site.xml 添加内容

<configuration>

<!—指定hdfs的nameservice为NS1-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

</configuration>

hdfs-site.xml添加内容

<configuration>

<!—configurations for NameNode -->

<property>

<name>dfs.namenode.name.dir</name>

<value>/var/lib/Hadoop/hdfs/name/</value>

</property>

<property>

<name>dfs.blocksize</name>

<value>268435456</value>

</property>

<property>

<name>dfs.namenode.handler.count</name>

<value>100</value>

</property>

<!—configurations for DataNode -->

<property>

<name>dfs.datanode.data.dir</name>

<value>/var/lib/Hadoop/hdfs/data/</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

yarn-site.xml 添加内容

<configuration>

<!—Site specific YARN configuration properties -->

<!-Configurations for ResourceManager and NodeManager ->

<!-Configurations for ResourceManager.->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>master</value>

</property>

<!—配置外网只需替换外网IP为真实IP,否则默认为localhost:8088 ->

<!--<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>外网IP:8088</value>

</property> -->

<!—Configurations for NodeManager -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!-configurations for History Server(Needs to be moved elsewhere) -->

</configuration>

mapred-site.xml配置

<configuration>

<!-Configurations for MapReduce Applications ->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

Worker 配置

slave1

slave2

  1. 复制HADOOP文件到其他集群、配置HADOOP环境变量、格式化HDFS、开启集群、查看、关闭、重置集群
  1. 将配置好的HADOOP文件复制到其他同样位置的机器上

/opt/Hadoop/hadoop2.8.5

  1. 配置HADOOP环境变量【三台服务器均需要】

#vim /etc/profile.d/Hadoop-2.8.5.sh

export HADOOP_HOME=”/opt/Hadoop/Hadoop-2.8.5”

export PATH=”$PATH:$HADOOP_HOME/bin”

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/Hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/Hadoop

重新生效profile

source /etc/profile

  1. 格式化HDFS[只有首次部署才可使用] 谨慎操作,只在master上操作

/opt/hadoop/hadoop-2.8.5/bin/hdfs namenode -format myClusterName

  1. 开启【只在master上操作】

/opt/hadoop/hadoop-2.8.5/sbin/start-dfs.sh

/opt/hadoop/Hadoop-2.8.5/sbin/start-yarn.sh

  1. 查看【三台服务器】Jps

clip_image002

  1. web端localhost:8088查看【localhost只定servera的localhost,也可以换成外网ip,在详见步骤3.4. yarn-site.xml 】

clip_image003

  1. 关闭【只在master上操作】

/opt/hadoop/hadoop-2.8.5/sbin/stop-dfs.sh

/opt/hadoop/hadoop-2.8.5/sbin/stop-yarn.sh

  1. 重置hadoop环境【移除hadoop hdfs log文件】【谨慎操作,只在master上操作】

rm -rf /opt/hadoop/hadoop-2.8.5/logs/*

rm -rf /var/lib/hadoop/

  1. 安装HADOOP遇到的坑 待增加

Namenode \datanode 启动不了,主要检查6个配置文件

HIVE组件安装

– 下载 Hive 2.3.4 到 Master 的 /home/dc2-user 并解压

  wget  http : //mirror.bit.edu.cn/apache/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz

  tar  zxvf  apache - hive - 2.3.4 - bin . tar . gz

  • 设置 Hive 环境变量

编辑 /etc/profile.d/hive.sh 文件, 在其中添加以下内容:

clip_image004

使环境变量生效:

  source   / etc / profile

  • 配置 Hive

重命名以下配置文件:

clip_image005

修改 hive-env.sh:

clip_image006

修改 hive-site.xml

修改对应属性的 value 值

clip_image007

  • 配置 Hive Metastore

Hive Metastore 是用来获取 Hive 表和分区的元数据,本例中使用 MariaDB 来存储此类元数据。

下载 mysql-connector-java-5.1.40-bin.jar 放入 $HIVE_HOME/lib 下并在 hive-site.xml 中添加 MySQL 数据库连接信息。

clip_image008

MYSQL组件安装

下载并安装MySQL官方的 Yum Repository

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

开始安装

[root@localhost ~]# yum -y install mysql-community-server

这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb

clip_image009

至此MySQL就安装完成了,然后是对MySQL的一些设置。

MySQL数据库设置

首先启动MySQL

[root@localhost ~]# systemctl start mysqld.service

查看MySQL运行状态,运行状态如图:

[root@localhost ~]# systemctl status mysqld.service

clip_image010

https://blog.csdn.net/lmss82/article/details/4414178

MySQL 重置密码

如果你忘记 MySQL 密码,可以通过修改 my.cnf 文件添加 skip-grant-tables 来重置密码,步骤如下:

1、打开 my.cnf 配置文件,找到 [mysqld] ,然后在该行下面添加以下参数:

skip-grant-tables

clip_image011

重启 MySQL 服务:

service mysql restart

登录 MySQL,此时不需要密码,直接回车:

# mysql -u root -p

更改 root 密码 为 123456:

mysql> use mysql;

mysql> update user set authentication_string=password("123456") where user=\'root\';

mysql> flush privileges; # 刷新权限

注意密码字段名 5.7 版本的是 authentication_string,之前的为 password。

修改完后,记得注释掉 my.cnf 中的 skip-grant-tables 参数,重启 MySQL 服务,就可以用你设置的密码登录了。

如果你想要设置一个简单的测试密码的话,比如设置为123456,会提示这个错误,报错的意思就是你的密码不符合要求

mysql> alter user \'root\'@\'localhost\' identified by \'123456\';

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

1

2

3

.

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

1

2

validate_password_length(密码长度)参数默认为8,我们修改为1

mysql> set global validate_password_length=1;

Query OK, 0 rows affected (0.00 sec)

1

2

4,完成之后再次执行修改密码语句即可成功

mysql> alter user \'root\'@\'localhost\' identified by \'123456\';

Query OK, 0 rows affected (0.00 sec)

————————————————

版权声明:本文为CSDN博主「谁还不是小白鼠」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/memory6364/article/details/82426052

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

[root@localhost ~]# grep "password" /var/log/mysqld.log

clip_image012

如下命令进入数据库:[root@localhost ~]# mysql -uroot -p

输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:mysql> ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'new password\';

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/\';:等),不然不能配置成功开启mysql的远程访问

执行以下命令开启远程访问限制(注意:下面命令开启的IP是 192.168.0.1,如要开启所有的,用%代替IP):

grant all privileges on *.* to \'root\'@\'192.168.0.1\' identified by \'password\' with grant option;

然后再输入下面两行命令

clip_image013

mysql> flush privileges;

mysql> exit

clip_image014

4 为firewalld添加开放端口

添加mysql端口3306和Tomcat端口8080

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp –permanent

[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent

然后再重新载入

[root@localhost ~]# firewall-cmd --reload

clip_image015

5 更改mysql的语言

首先重新登录mysql,然后输入status:

clip_image016

可以看到,绿色箭头处不是utf-8

因此我们先退出mysql,然后再到、etc目录下的my.cnf文件下修改一下文件内容

clip_image017

进入文件后,新增四行代码:

clip_image018

保存更改后的my.cnf文件后,重启下mysql,然后输入status再次查看,就会发现变化

clip_image019

HBASE集群安装(处理非结构化数据)必需先安装ZOOKEEPER

解压HBASE

#tar -zxvf /usr/local/soft/hbase-2.1.7-bin.tar.gz

配置conf/hbase-site.xml 及hbase_env.sh

PIG安装

  • 下载Pig
  • 前往http://mirror.bit.edu.cn/apache/pig/ 下载合适的版本,比如Pig 0.12.0
  • 解压文件到合适的目录
  • tar –xzf pig-0.12.0
  • 设置环境变量 /etc/profile
  • export PIG_INSTALL=/opt/pig-0.12.0
  • export PATH=$PATH:$PIG_INSTALL/bin
  • 如果没有设置JAVA环境变量,此时还需要设置JAVA_HOME,比如:
  • export JAVA_HOME=/usr/lib/jvm/java-6-sun
  • 验证
  • 执行以下命令,查看Pig是否可用:
  • pig –help

OOZIE安装

hue安装(HADOOP UI系统)

  • 环境配置

sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel

  • 检查系统版本

cat /etc/redhat-release

  • 下载安装包

git clone https://github.com/cloudera/hue.git

cd hue

增加CDH中的CM界面管理HADOOP集群(待测试)

DATAX操作

分类:

技术点:

相关文章:

  • 2021-09-18
  • 2021-12-06
  • 2021-07-04
  • 2021-08-15
  • 2021-12-03
  • 2021-08-08
  • 2021-11-12
  • 2021-09-06
猜你喜欢
  • 2021-12-14
  • 2021-05-28
  • 2021-11-02
  • 2021-10-09
  • 2021-08-25
  • 2021-11-21
  • 2021-09-05
相关资源
相似解决方案