博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用CentOS6.8搭建Hadoop集群
阅读量:5091 次
发布时间:2019-06-13

本文共 4841 字,大约阅读时间需要 16 分钟。

概述:集群cluster,能将很多进程分布到多台计算机上;通过联合使用多台计算机的存储、计算资源完成更庞大的任务。

为了实现无限量的存储和计算能力,在生产环境中必须使用集群来满足需求。
--注意事项:
1)集群中的计算机在时间上要同步,系统时间不能差太多(约30秒内),如果设置时间后重启时间又不准确了(可能是主板电池老化),可以启用NTP(Network Time Protocol网络时间协议)服务解决(CentOS7安装时就可以设置自动同步)。
2)集群中的计算机在网络上能够相互访问
i.虚拟机的网络使用NAT模式
ii.固定IP,要规划好IP地址和主机名()
iii.全部关闭防火墙
iv.全部实现Hosts解析
v.全部实现免密码SSH访问(可以统一密钥对)
-.NameNode-对应的是-master、DataNode-对应的是-slave
--前提:安装三个虚拟机(内存最好在8~13G),分别作为master、slave1、slave2
记住三个虚拟机的名字和IP
 1.安装JDK 

如果安装的是minimal(最小版),跳过卸载直接去下载安装,如果安装的不是minimal(最小版),那么你需要卸除原有的JDK。

1.1卸载非LinuxJDK
卸载OpenJDK(最小化安装不带Open JDK)
    Gnome桌面版自带OpenJDK,OpenJDK是JDK的一个开源实现
与Oracle官方JDK相似度近95%,一般情况下可以使用
但大数据的Hadoop不支持OpenJDK
    通过rpm查找jdk和java的安装信息
        rpm是RedHat包管理器,包管理器能够管理应用的安装卸载
类似于Maven管理Jar包
rpm -qa | grep jdk
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
卸载
对于如上的每一行输出,都调用rpm -e --nodeps,如(:
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
    -e 表示卸载
    --nodeps 表示不考虑是否有依赖问题,强制卸载

1.2下载:

上浏览器上下载linuxJDK压缩包(搜索Linux JDK 64)
提示路径:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

或者温馨jdk链接:https://pan.baidu.com/s/1Yg7Nwp-JQSC7eNDDe2uaaA 提取码:mjnk

1.3:将JDK压缩包上传到虚拟机的 ~/
解压提取 tar zxvf jdk….tar.gz
将得到的jdk1.8…移动到/usr/local/中
mv jdk1.8…/ /usr/local/jdk
1.4配置环境变量
vi /etc/profile
在最后添加
#JDK1.8
JAVA_HOME=/usr/local/jdk
JRE_HOME=/usr/local/jdk/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH    
保存
然后刷新环境变量
source /etc/profile
注意:上面的环境变量JAVA_HOME=这边填写的是你JDK的位置(路径)
------测试JDK安装是否成功
java -version

----------------------------安装Hadoop---------------------

1.安装Hadoop
到Hadoop官方下载 hadoop-xxx.tar.gz(选择稳定版)

温馨Hadoop链接:https://pan.baidu.com/s/1uAfgrBQaz6ST7_iPl4tcTw 提取码:cn8w

上传到master虚拟机上的 ~/
解压提取 tar zxvf hadoop-xxx.tar.gz
将得到的hadoop-xxx…移动到/usr/local/hadoop中(可以不移动,但是在配置关于路径的配置文件时,注意路径)
2.配置Hadoop
打开/etc/profile,在最后添加
#Hadoop
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

执行source /etc/hadoop更新环境变量

-------------
关于搭建Hadoop集群的配置
首先--进入/usr/local/hadoop/etc/hadoop
1.打开hadoop-env.sh指定JDK位置
 # The java implementation to use.
   export JAVA_HOME=JDK位置

2.打开core-site.xml指定NameNode

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
--master:表示NameNode(根据自己的master名字自己改变),9000:表示大小(不用改变就行)

3.打开hdfs-site.xml指定SecondaryNameNode,关闭权限检查

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hdfs://master:50090</value>
    </property>
    <property>
            <name>dfs.permissions.enabled</name>
            <value>false</value>
    </property>
-----------这里的master与上面的意思一样
    
4.打开slaves文件,指定担任DataNode的主机
        master            #让master同时成为datanode,生产环境不需要!
        slave1
        slave2
        …

Slaves文件的作用是当使用start-dfs.sh启动HDFS时,会自动将各个datanode节点自动启动起来。

5.vi /etc/hosts
Hosts的作用是可以在网络使用名字替换IP地址,添加文件内容如下:
192.168.2.10                master
192.168.2.11                slaves1

192.168.2.12                slaves2

 

--将master的/etc/hosts分发到各个节点(master是根节点)

再分发之前安装scp,如果不安装会出现以下错误
结果提示:

-bash: scp: command not found

想当然用yum install scp命令安装,

结果提示:

No package scp available.

后来发现scp这东西应该属于openssh-clients这个包,

运行:

yum -y install openssh-clients  (注:两台机器都需要安装)

--现在发布
scp /etc/hosts root@slaveXX :/etc/hosts
注意slaveXX表示slave1、slave2…,每个节点都要分发
----------------------------------------
在NameNode(master)上使用ssh-keygen命令生成密钥对
先运行一下ssh命令,查看是否能用
ssh

生成密钥对(一路回车,如果已经有了,直接使用现有的)
ssh-keygen    
生成的密钥对在~/.ssh中,分别是:
id_rsa                    #私钥
id_rsa.pub                #公钥~

--发送公钥使之免密码

在NameNode上将本地的公钥发送给所有节点(包括自己),之后就可以不用输入密码登陆
ssh-copy-id slaveXX
注意slaveXX表示master、slave1、slave2…
-------发布配置到DataNode(slave),这样就可以不用配置和安装JDK与Hadoop--------
分发JDK
    scp -r /usr/local/jdk root@slaveXX:/usr/local
分发Hadoop
    scp -r /usr/local/hadoop root@slaveXX:/usr/local
分发/etc/profile
    scp /etc/profile root@slaveXX:/etc/
注意要在每个节点上执行source /etc/profile
--------------------启动--------------------------
1.格式化
在namenode上运行
    hdfs namenode -format
--注意:每次格式化,都会在每个节点上(包括自己)的/tmp/中创建 hadoop-root
重启再格式化
stop-all.sh关闭
start-all.sh开启
2.启动
在namenode上运行
    start-dfs.sh
----检查启动结果

【1】用JPS查看Java进程

NameNode                 #NameNode启动了,NameNode上要有此进程
DataNode                #DataNode启动了,DataNode上要有此进程
SecondaryNameNode            #SecondaryNameNode启动了
#这个是SecondaryNameNode上的辅助进程

【2】用master(或者master的IP):50070查看Hadoop站点,检查各个节点是否启动,如下图

【3】用命令测试,检查HDFS是否工作正常

hdfs dfs -mkdir /abc
hdfs dfs -ls /

-----------------------------温馨提示-------------------------------

1.查看及修改主机名

1.1查看主机名
hostname
1.2修改主机名(通常不需要)
vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=s1
---上面操作之后,重启Linux
reboot

2.重启网络服务

service network restart
3.网络时间同步
3.1下载ntpdate 
 yum -y install ntpdate
3.2同步时间
 ntpdate ntp.api.bz
4..启动出现节点缺少进程,查看日志,看是否格式化成功。如果格式化没有成功
每个节点上先执行  rm -rf /tmp/hadoop-root     再次格式化
检查配置文件,防火墙,时间是否一致
然后再次格式化,不允许连续格式化两次

转载于:https://www.cnblogs.com/pigdata/p/10305525.html

你可能感兴趣的文章
数组中方法some,every , reduce简单方法
查看>>
图形学-剔除
查看>>
人生哲学
查看>>
JAVA调用.NET的WEBSERVICE
查看>>
Selenium+Python浏览器调用:Firefox
查看>>
nohup 详解
查看>>
树莓派实现摄像头监控(使用motion和mjpg-streamer)
查看>>
《转》推荐系统经典论文文献及业界应用
查看>>
webpack的像素转vw单位的loader插件
查看>>
javascript高级程序设计一书----关于创建和对象继承的总结
查看>>
媒体电话
查看>>
Web开发者欣喜若狂的40个UI设计工具和资源
查看>>
整数拼数 C语言版
查看>>
在固定宽度 下计算出实际的行高
查看>>
hdu 1873 看病要排队
查看>>
scope_ref的实现
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
ASP.NET缓存 Cache之数据缓存
查看>>
bzoj3529: [Sdoi2014]数表
查看>>
SSH三大框架 整合必备jar包
查看>>