大数据hadoop环境搭建

一、linux环境搭建

1.linux环境

1.hadoop是运行在linux系统之上; 但是也有windows版本的hadoop; 学习的时候使用linux来进行学习;

​ 使用虚拟机虚拟一个linux操作系统出来:(先做好单台服务器的相关配置,然后直接克隆其他节点服务器即可)

​ 1.设置虚拟机的的ip地址;(一般都是设置为静态地址)

​ 第一种操作:安装桌面版的centos系统(自动来获取地址;)

第二种操作 使用静态地址进行网络连接

先查看自己的网卡信息: ip addr

eno16777736 这个网卡的的名称,一般都不要改;因为这个是要对应;

接着输入以下指令修改inet的配置 # vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

查看网络的配置发现网卡没有打开,按下键盘 i 键后修改,将no改为yes。修改完成按下 esc 键,然后输入 :wq 保存退出。

输入指令 # service network restart 重新启动网络服务

查看新的地址:

查看 网络连接情况(一定要能够访问外网)

2.设置单台linux服务器的的防火墙

​ 1.服务器的防火墙的作用:就是阻止外界的非法的访问:

在公司业务服务外部会有服务进行限制; 我们的内部服务都是通过云服务器厂商进行映射进来;云服务会提前进行规则的判断定;-----所以在一个公司业务内部服务中不需要进行防火墙的开启;

2.关闭防火墙的方法:

一般我们的服务器在内容中数关闭防火墙的;防止访问的时候被防火墙拦截;
一般情况:我们不清楚该放行什么端口,所以索性让关上防火墙。
特殊情况:系统已有外部防火墙或第三方防火墙,所以关掉系统自带防火墙

第一种:防火墙firewall

Centos 7版本里默认的防火墙是firewall;每个服务都需要去设置才能放行,因为默认是拒绝。

1、查看防火墙运行状态
     # firewall-cmd --state

 # systemctl status firewalld.service

2、关闭防火墙
      # systemctl stop firewalld.service

3、开启防火墙
      # systemctl start firewalld.service

4、重启防火墙
    # systemctl restart firewalld.service

以上操作:都是一次性的操作;重启后就回复了;

5**、在开机时启动一个服务****(这里启动防火墙)**
      # systemctl enable firewalld.service

6、在开机时禁止一个服务(这里禁止防火墙)
      #systemctl disable firewalld.service

第二种:iptables(这种是在centos6的上面操作)

参考:https://www.jb51.net/article/101576.htm

默认是每个服务是允许,需要拒绝的才去限制。

CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下

1、直接关闭防火墙

systemctl stop firewalld.service #停止firewall` systemctl systemctl disable firewalld.service #禁止firewall开机启动

2、设置 iptables service

yum -y installiptables-services

如果要修改防火墙配置,如增加防火墙端口3306

vi /etc/sysconfig/iptables

增加规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

保存退出后

systemctl restart iptables.service #重启防火墙使配置生效` systemctl enable  iptables.service #设置防火墙开机启动

最后重启系统使设置生效即可。

查看防火墙的命令:service iptables status

# 停止防火墙

service iptables stop

# 启动防火墙

service iptables start

# 重启防火墙

service iptables restart

# 永久关闭防火墙

chkconfig iptables off

# 永久关闭后重启

chkconfig iptables on

临时关闭防火墙:service iptables stop (重新启动以后,又自动开启)

永久关闭防火墙:chkconfig iptables off (注意:只有先临时关闭,才可以永久关闭)

两种防火墙的底层原理:

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

一般我们都使用第一种就可以了。

3.安装jdk和配置环境变量

默认的时候Centos7-卸载自带的jdk,我们需要对他进行卸载后再进行安装;

卸载JDK

Centos7一般都会带有自己的openjdk,我们一般都回用oracle的jdk,所以要卸载

步骤一:查询系统是否以安装jdk

#rpm -qa|grep java

或 #rpm -qa|grep jdk

或 #rpm -qa|grep gcj

或 #rpm -qa|grep gcj

步骤二:卸载已安装的jdk

#rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64

#rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64

#rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

#rpm -e --nodeps java-1.7.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

步骤三:验证一下是还有jdk

#rpm -qa|grep java

#java -version

安装JDK8

步骤一:下载linux版本的jdk并上传到linux上

一般我们就放在usr /local/java文件夹中

步骤二:解压jdk包

tar -zxvf dk-8u144-linux-x64.tar.gz

步骤三:编辑/etc/profile文件,配置环境变量

#环境变量都在这个地方进行配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export CLASSPATH=.:JAVAHOME/jre/lib/rt.jar:JAVA_HOME/jre/lib/rt.jar:JAVAH​OME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:JAVAHOME/lib/tools.jarexportPATH=JAVA_HOME/lib/tools.jar export PATH=JAVAH​OME/lib/tools.jarexportPATH=PATH:$JAVA_HOME/bin

步骤四:生效profile

source /etc/profile

5安装数据库mysql

Mysql的安装方式:

1.先检查系统是否装有mysql

rpm -qa | grep mysql

2.下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

如果报错: -bash: wget: 未找到命令

安装插件 yum -y install wget(wget就是给一个地址直接下载)

3.安装 mysql-community-release-el7-5.noarch.rpm包

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

**4.**安装MySQL

sudo yum install mysql-server

5.重置MySQL密码

mysql -u root

如果报错:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

原因:原因是/var/lib/mysql的访问权限问题。

chown root /var/lib/mysql/

重启MySQL服务

service mysqld restart

接着登陆设置密码

mysql -u root

use mysql;

update user set password=password(‘123456’) where user=‘root’;

exit;

6.重启MySQL服务

service mysqld restart

接着设置Root账户远程连接密码,账户和密码都是 root

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY “root”;

重启服务器

service mysqld restart

7.使用外网工具连接MySQL

连接mysql的用户名和密码都是 root

关闭防火墙

systemctl stop firewalld.service

6.设置时间:

一般我们的服务器都和国家的服务器的时间进行同步;后边,节点服务器都是从我们的主服务器中同步时间,这样可以保证一个集群的时间同步;

一、手动修改

  1. date命令:查看当前时间

  1. date -s 时分秒 :修改时间

还需要把日期改过来

  1. date -s 完整日期时间(YYYY-MM-DD hh:mm[:ss]):修改日期、时间

时间要用双引号括起来,否则报错

手动修改会存在一定的时间误差

  1. hwclock -w

将时间写入bios避免重启失效。

当我们进行完 Linux 时间的校时后,还需要以 hwclock 来更新 BIOS 的时间,因为每次重新启动的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据吶。

二、同步网络时间

  1. 检查系统是否安装ntp服务

安装ntp服务命令:

apt-get install ntp 或者 yum install ntp

  1. ntpdate 服务器IP:同步服务器时间

ntp常用服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国:time.nist.gov
复旦:ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com

我们直接使用

ntpdate pool.ntp.org 更新服务器上的时间

NTP池正在为世界各地成百上千万的系统提供服务。 它是绝大多数主流Linux发行版和许多网络设备的默认“时间服务器”。

后边做集群的时候在使用时间定时任务进行更新;

7.克隆集群

大数据集群,都不是一个机器在工作。需要很多的机器一起工作。在实际的生活中是很多的物理机器(他可以使用磁盘克隆;或者网络分发系统的方式来实现); 但是在虚拟机中我们直接可以通过克隆的方式;

1.先把一个虚拟机(物理机)需要的软件都先安装上;(jdk;mysql等等)

2.关机 poweroff 要把这个系统关闭(虚拟机;物理机)

3.设置机器的机器名字: centos7和centos6不一样;

centos6是修改主机名字
vi /etc/sysconfig/network

centos7 的设置方法:

问题:打开**/etc/sysconfig/network文件,发现为空,手动添加HOSTNAME = ***,没有生效**

这时候使用命令行 hostnamectl set-hostname ** ,来修改hostname

4.开始克隆:

这个地方选择创建新的克隆:不然就是一个连接;还是原来的机器;

5.修改网络地址(因为通过的是克隆出来的,地址也就是一样的;所以在启动的时候不能启动两个;会出现ip地址冲突; 一般我们把克隆出来的机器修改ip地址后,再启动第一台机器;)

如果是centos6还需要删除克隆出来的网卡;

克隆会多出来一块网卡,把第一块网卡删掉,并把第二块网卡的eth1改成eth0
vi /etc/udev/ruXXX/70-XXXnXXX

如果是centos7就不需要;

同样的方法对第三台节点服务器进行设置;

二 、hadoop集群搭建

1.开始前的服务准备: 首先hadoop是运行在linux系统之上的(也可以部署windows的hadoop集群)

2.本集群搭建案例,以3节点为例进行搭建,角色分配如下:

hadoop01 NameNode(文件和文件树管理) SecondaryNameNode(监控hdfs的后台管理) ResourceManager (资源管理)

hadoop02 DataNode NodeManager (数据节点(工作节点)管理)

hadoop03 DataNode NodeManager (数据节点(工作节点)管理)

3.服务器的准备:

本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

Vmware 12.0

Centos 7.5 64bit

6.网络环境准备(配置网卡)

  1. 采用NAT方式联网

  2. 网关地址:192.168.xx.xx

  3. 3个服务器节点IP地址:192.168.xx.110、192.168.xx.120、192.168.xx.130

  4. 子网掩码:255.255.255.0

第一种操作:安装桌面版的centos系统(自动来获取地址;)

第二种操作 使用静态地址进行网络连接

先查看自己的网卡信息: ip addr

eno16777736 这个网卡的的名称,一般都不要改;因为这个是要对应;

接着输入以下指令修改inet的配置 # vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

查看ient的配置发现网卡没有打开,按下键盘 i 键后修改,将no改为yes。修改完成按下 esc 键,然后输入 :wq 保存退出。

输入指令 # service network restart 重新启动网络服务

查看新的地址:

查看 网络连接情况(一定要能够访问外网)

同样的方法对其他的三台服务器进行修

4.服务器之间资料互传(scp)

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

例子:1

从远处复制文件到本地目录

scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

这个是通过root用户从192.168.120.204 机器上/opt/soft/ 这个目录中赋值文件nginx-0.5.38.tar.gz 到本地/opt/soft/

Warning: Permanently added ‘192.168.219.110’ (ECDSA) to the list of known hosts.

Warning: Permanently added ‘192.168.219.110’ (ECDSA) to the list of known hosts.

这个是连接 的时候使用的私钥;(重新在来一次即可) 也可以忽略

ssh -q -o “trictHostKeyChecking no” root@192.168.0.12

or

ssh -q -o ‘StrictHostKeyChecking no’ -o ‘UserKnownHostsFile /dev/null’ root@192.168.0.12

例子:2

从远处复制目录到本地目录

scp -r root@192.168.120.204:/opt/soft/mongodb /opt/soft/

从192.168.120.204机器上的/opt/soft/中下载mongodb 目录到本地的/opt/soft/目录来。

-r 递归复制整个目录。

实例3:上传本地文件到远程机器指定目录

scp /opt/soft/nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/scptest

复制本地opt/soft/目录下的文件nginx-0.5.38.tar.gz 到远程机器192.168.120.204的opt/soft/scptest目录

实例4:上传本地目录到远程机器指定目录

scp -r /opt/soft/mongodb root@192.168.120.204:/opt/soft/scptest

本地目录中/opt/soft/mongodb上传到192.168.120.204的/opt/soft/scptest

以上这个方法:可以用来进行文件的下载和上传;但是每次都要输入密码非常的麻烦;

可以通过配置映射(服务之间相互加好友的方式);进行不需要密码登录;

5.免密登录

后边我们要进行配置内容,如果一台一台的进行非常的麻烦;并且还的输入密码;

就想scp的命令一样,每次都是需要输入密码;就是在一个机器上配置,然后分发到其他的节点中去;那就的免密登录;

每一次的都要进行写密码;非常的麻烦;我们想没有密码进行登录;(我们在一个服务器中配置好,然后分发给其他所有服务器;但是这个地方需要密码)

环境

三台虚拟机(IP):

  • 192.168.219.110
  • 192.168.219.120
  • 192.168.219.130

1.修改主机名

修改三台主机名,以此类推,hadoop01,hadoop02,hadoop03

hostnamectl set-hostname <hostname>
hostnamectl set-hostname hadoop01(hadoop02;hadoop03 等等)

修改完毕后要使用reboot进行重启;

2.修改映射关系

1.在 hadoop01 的 /etc/hosts 文件下添加如下内容;其他服务器的地址和名字;(就相当是我们添加微信一样;加了之后相互就可以发文件了(然后添加私钥,就不需要验证))

相互之间都进行添加;

2.也可以使用上传的方法进行:(通过循环的方法给我们的hadoop02和hadoop03的服务器)

for a in {1..3} ; do scp /etc/hosts hadoop0$a:/etc/hosts ; done

查看有没有修改:

for a in {1..3} ; do ssh hadoop0$a cat /etc/hosts ; done

都已经修改好了;

(其实centos7不用配置映射关系就可以进行传递文件 scp 但是需要密码;)

3.服务器之间的免密登录:

(1)先各自生成自己的账号跟密码(生成公钥跟私钥):
ssh-keygen 生成公钥和私钥

1.在你的hadoop01上生成公钥和私钥

2.生成hadoop02的公钥和秘钥

3.生成hadoop03的公钥和秘钥(这个里边没有known-hosts 这个文件的原因是没有ssh连接过;hadoop01和hadoop02他们里边都有这个文件的原因是;之前他们互相传递问过文件)

他们的公钥和私钥都在/root/.ssh/(如果没有生成公钥和私钥的时候他们是没有这个文件夹的)

(2)相互告诉对方自己的公钥和秘钥

(生成的公钥跟私钥也要告诉自己一份)

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

也就是在每一台服务器中执行;

使用同样的方法对hadoop02 和hadoop03进行相互添加

都执行完毕就可以了;

(3)测试免密:

hadoop01给hadoop02传文件没有需要密码;

scp -r /usr/local/java/apache-tomcat-9.0.46 hadoop02:/usr/local/

hadoop02给hadoop03传递文件不需要输入密码;

scp -r /usr/local/apache-tomcat-9.0.46 hadoop03:/usr/local/

同样道理hadoop01给hadoop03也可以免密操作:

scp -r /usr/local/java/apache-tomcat-9.0.46 hadoop03:/usr/local/

到这里就可以进行集群的免密操作了;后边有继续同样的方法进行即可;

6.集群时间同步

时间的更新我们可以使用同时执行的方式:

但是这种方法其实就是给每个服务发送了更新数据的语句,从服务器中进行更新;

我们要做一个主服务器;他定时更新时间服务(使用服务器的时间,也可以用本地时间);然后让其他的服务器节点的时间走我们这个服务的时间;定时可以主服务器进行同步;

例子:

三台服务器分别是hadoop01,hadoop02、hadoop03,这里是以01作为时间服务器(服务端),02、03作为客户端同步01的时间。

1.检查hadoop01 安装时间ntp

rpm -qa|grep ntp

2.修改ntp配置文件

vi /etc/ntp.conf

修改1(授权192.168.219.0-192.168.219.255网段上的所有机器可以从这台机器上查询和同步时间)

这里的网段要根据自己的配置,比如我的网关是192.168.219.1,那配置就如下

修改2(集群在局域网中,不使用其他互联网上的时间;如果要使用互联网上的时间;pool.net.org)

添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)

server 127.127.1.0
fudge 127.127.1.0 stratum 10

3.修改/etc/sysconfig/ntpd 文件

vi /etc/sysconfig/ntpd

(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

4.重新启动ntpd服务

​ 查看下ntpd的状态;

service ntpd status

启动ntpd服务:

service ntpd start

查看启动的状态:

设置ntpd服务开机启动

chkconfig ntpd on

5.其他机器配置(必须root用户)

(1)在其他机器配置1分钟(或者时间自己设置)与时间服务器同步一次

分别在hadoop02;和hadoop03中进行设置定时任务(他们对应的就是同一个服务hadoop01);

*/1 * * * * /usr/sbin/ntpdate hadoop01

(2) 分别在hadoop02;和hadoop03中设置时间;查看他在一分钟后更新;

hadoop02

hadoop03

说明:测试的时候可以将分钟调整为1分钟,节省时间。

hadoop集群的初级的配置信息基本就完成。

大数据----2.基础环境搭建相关推荐

  1. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  2. 大数据单机学习环境搭建(5)Hive建表DDL详解

    专题:大数据单机学习环境搭建和使用 1. Hive建表简单示例 1.1.Hive建表语句 1.2.表详细信息 1.3.数据展示 2. Hive建表语法详解 3.拓展1:复杂数据分割 4.拓展2:事务表 ...

  3. 大数据单机学习环境搭建(12)Azkaban的简单使用

    专题:大数据单机学习环境搭建和使用 1.登录和密码修改 2.新建工程 2.1新建工程 2.2创建zip文件 2.3添加文件到项目 3.任务执行 3.1立即执行 3.2.设置定时任务 4.依赖任务建立 ...

  4. 大数据单机学习环境搭建(9)Spark单节点安装与pyspark使用

    包含sparksql的完整使用案例,请务必耐心看完 专题:大数据单机学习环境搭建和使用 1.Spark安装 2.Spark配置 2.1配置环境变量 2.2spark客户端 3.Spark使用 3.1环 ...

  5. 大数据实战之环境搭建(七)

    本节我给大家测试一下Linux环境的Solr,通过增删改查的实例demo看看Solr环境是否已经OK.记得有哥们留言,问到只看见Solr和Cassandra的单独环境搭建,却不见它们的协同.我想说这两 ...

  6. 大数据实战之环境搭建(十)

    Html5, 云计算,移动互联网,大数据你知道多少,如果不知道多少,请抓紧时间学习. 今天要说的是消息队列ActiveMQ,这个和cassandra一样也是apache的产品,开源的,支持很多客户端, ...

  7. 大数据实战之环境搭建(三)

    今天不小心下载了一个VMPLayer和CenterOS-5.所以我决定后面的demo全部使用linux作为大数据的载体来进行讲解.今天主要就是讲一下CenterOS的安装准备 我们安装好VMPlaye ...

  8. 大数据 - HDFS单机环境搭建(一)

    一.服务器 操作系统:CentOS Linux release 7.6.1810 (Core) 二.JAVA JDK1.8:oraclce官网下载jdk-8u261-linux-x64.tar.gz ...

  9. 大数据实战之环境搭建(八)

    由于本人机器有限,只有虚拟机的centOS和windows7操作系统,所以这次我们就以这两台机器作为搭建Cassandra集群的节点. 首先我们将Cassandra解压包拷贝至linux系统的usr下 ...

最新文章

  1. 李彦宏/王坚/王传福等上榜“中国工程院2019院士增选候选人”引争议,实至名归吗?...
  2. 5G NGC — AUSF 鉴权服务功能
  3. 面试:为什么 https 比 http 更安全?
  4. python openstack究竟能干嘛_openstack是什么,能干什么
  5. matlab cell取一列,MATLAB cell struct
  6. 前端做微信好友分享_前端微信分享,调用微信分享,分享朋友圈,分享微信好友,分享qq空间,qq好友...
  7. CRM_REPORT_RF_AUTH_OBJ_ORD_LP
  8. 互评Beta版本(Hello World!——SkyHunter)
  9. 【转】3.7(译)构建Async同步基元,Part 7 AsyncReaderWriterLock
  10. process java类_Java中Process类的用途是什么?
  11. Modeling and Analyzing the Influence of Chunk Size Variation on Bitrate Adaptation in DASH 名字解释0728
  12. CC++中的时间函数和时间类
  13. JVM 内存模型组成+经典总结
  14. 关于js对象添加属性
  15. (完整版)原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决
  16. 公式编辑器中怎么打出分数中间的一横
  17. 机顶盒两个灯出现红色
  18. 开源微信小程序源码+小程序游戏代码附搭建框架教程
  19. laravel框架跨域请求
  20. 广州IT销售菜鸟总结精华

热门文章

  1. C语言小黄鸭-->函数()
  2. 【干货】OJ上各种术语
  3. 【算法】最长公共子序列(LCS)
  4. 【艾琪出品】《计算机应用基础》【试题汇总2】
  5. 皮卡丘(pikachu)越权漏洞
  6. GitHub 小白入门
  7. 艺术聚焦:#DRIVE
  8. Go是Google的语言,而不是我们的语言
  9. 联想微型计算机如何设置u盘启动,联想电脑如何设置U盘启动?联想电脑bios设置U盘启动教程...
  10. 手机充电原理分析及问题总结