打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hadoop集群搭建过程
userphoto

2023.05.07 北京

关注

一、前言

如果你有很好的Java基础,当你入门以后,你会感觉到hadoop其实也是很简单的,大数据无非就是数据量大,需要很多机器共同来完成存储工作,云计算无非就是多台机器一起运算。

二、需要基础

1.Linux基础

2.虚拟机的使用

三、具体步骤

1.建立虚拟机

2.CentOS7修改静态IP

3.防火墙和SELinux关闭

4.安装JDK

5.虚拟机克隆

6.修改主机名(节点增加时也需要进行如上的配置)

1)修改network文件

vi /etc/sysconfig/network

HOSTNAME=master (HOSTNAME=slaver2)     (这里以slave2为例)

2)配置域名    (这里以slave2为例)

vi /etc/hostname

(要是namenode中:HOSTNAME=master 在datanode中:HOSTNAME=slave1)

(或者#> hostnamectl set-hostname master)

7修改hosts文件(以便namenode可以通过主机名解析datanode的IP)

202.204.65.xxx master

202.204.65.xxx   slave1

202.204.65.xxx  slave2

(节点增加时,往下排列)

8配置ssh免密登入

1)SSH无密码原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。

2)ssh配置

(1)检验是否安装ssh

rpm –qa | grep opensshrpm –qa | grep rsync

如果提示没有安装,则需安装,如果安装跳过该步

#> yum install ssh  #安装SSH协议#> yum install rsync  #rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)#> systemctl restart  sshd.service  #启动服务

(2)这句话一定要看,一定要看,因为关系到配置ssh效率的问题。 原理说白了就是:需要将Master的公钥id_rsa.pub追加到所有的Slave的authorized_keys里边,将所有的Slave中的id_rsa.pub追加到Master的authorized_keys里边。

(a)因此先配置Master和所有的Slave机器的sshd_config

vi /etc/ssh/sshd_config

    修改

#RSAAuthentication yes      #开启私钥验证#PubkeyAuthentication yes   #开启公钥验证

    成这样

RSAAuthentication yes # 启用 RSA 认证PubkeyAuthentication yes  开启公钥认证

(b) #启动服务

然后分别在所有机器用户的~/目录下分别建立.ssh文件夹并将其权限设为700

#> chmod 700 ~/.ssh #> cd #> mkdir .ssh#> chmod 777 .ssh

(c)更改namenode和datenode

(a1)slave1的配置

#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh

    (a2)slave2的配置

#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh

 (a3)master的配置

#> cd #> cd .ssh#> ssh-keygen -t rsa#> chmod 700 id*#> cat id_rsa.pub >> authorized_keys#> cat id_rsa >> authorized_keys#> chmod 644 authorized_keys#> scp /root/.ssh/authorized_keys slave1:/root/.ssh#> scp /root/.ssh/authorized_keys slave2:/root/.ssh#> scp /root/.ssh/authorized_keys master:/root/.ssh

9搭建Hadoop

1)官网下载hadoop(以hadoop-2.7.7为例,适用于hadoop-2.x)

#> mv hadoop-2.7.7.tar.gz /usr/local#> cd /usr/local#> tar -zxvf hadoop-2.7.7.tar.gz

2)配置环境变量

#> vi /etc/profile

在结尾添加

HADOOP_HOME=/usr/local/hadoop-2.7.7PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

退出vi,使生效

#> source /etc/profile

检验环境变量是否匹配好

#> which hadoop

3)Hadoop修改java环境

#> vi /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

找到export JAVA——HOME=${JAVA_HOME} 改成export JAVA_HOME=/usr/local/jdk1.8.0_201

4配置hadoop core-site.xml 对应有一个core-default.xml, hdfs-site.xml对应有一个hdfs-default.xml,mapred-site.xml对应有一个mapred-default.xml。这三个defalult文件里面都有一些默认配置,现在我们修改这三个site文件,目的就覆盖default里面的一些配置

#> cd /usr/local/hadoop-2.7.7/etc/hadoop

1)修改core-site.xml之前建立临时文件夹

 #>mkdir -p /home/hadoop/tmp

    配置内容如下

<configuration>        <!-- 指定HDFS老大(namenode)的通信地址,说白了就是谁是namenode -->    <property>      <name>fs.defaultFS</name>      <value>hdfs://hdfs:master:9000</value> <!--master是namenode的主机名;8020是默认端口-->    </property>    <!--配置操作Hadoop的缓存大小-->    <property>      <name>io.file,buffer.size</name>      <value>4096</value> <!--Hadoop 2.x默认是4096-->    </property>        <!-- 指定hadoop运行时产生文件的存储路径,临时数据存储目录 -->    <property>      <name>hadoop.tmp.dir</name>      <value>/home/hadoop/tmp</value> <!--需要#>mkdir -p /home/hadoop/tmp,而且不能放到/tmp里面,因为那里面的数据不可控-->    </property>    <property>      <name>fs.default.name</name>        <value>hdfs:master:9000</value>    </property>  <property>    <name>dfs.namenode.rpc-address</name>    <value>master:8080</value>  </property></configuration>

    2)修改hdfs-site.xml,修改配置如下

 <configuration>        <!-- 设置hdfs副本数量 -->    <property>       <name>dfs.replication</name>       <value>3</value> <!--一般习惯是配置3个副本-->    </property>    <!--配置每个块的大小(hadoop文件最小存储单元)-->    <property>      <name>dfs.block.size</name>      <value>134217728</value> <!--Hadoop2.x是128M,Hadoop1.x是64M,这里添加的是字节-->    </property>    <!--hdfs的元数据存储位置(元数据:namenode管理的数据,描述datanode的数据)-->     <property>      <name>dfs.namenode.name.dir</name>      <value>/home/hadoop/hadoopdata/dfs/name</value> <!--需要#>mkdir -p /home/hadoop/hadoopdata/dfs/name-->    </property>    <!--hdfs的数据存储位置-->    <property>      <name>dfs.datanode.data.dir</name>      <value>/home/hadoop/hadoopdata/dfs/data</value> <!--需要#>mkdir -p /home/hadoop/hadoopdata/dfs/data-->    </property>    <!--hdfs的检测目录-->    <property>      <name>fs.checkpoint.dir</name>      <value>/home/hadoop/hadoopdata/checkpoint/dfs/name</value>    </property></configuration>

    3)修改mapred-site.xml 由于在配置文件目录下没有,需要修改名称:

#> cp mapred-site.xml.template mapred-site.xml

然后修改配置

  <configuration>    <!-- 通知框架MapReduce使用YARN -->    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>        <final>true</final>    </property>    <!--历史服务的通信地址-->    <property>    <name>mapreduce.jobhistory.address</name>    <value>master:10020</value>  <!--这里是resourcemanager-->    </property>    <!--历史服务的Web UI的地址-->    <property>    <name>mapreduce.jobhistory.webapp.address</name>    <value>master:19888</value>    </property>    <!--设置jobtracker所在机器,端口号9001-->    <property>        <name>mapred.job.tracker</name>        <value>master:9001</value>      </property>    </configuration>

    4)修改yarn-site.xml,修改内容如下

 <configuration>    <!-- reducer取数据的方式是mapreduce_shuffle -->    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.resourcemanager.hostname</name>        <value>localhost</value>    </property>    </configuration>

    5将整个hadoop-2.7.7文件夹及其子文件夹使用scp复制到slave1和slave2的相同目录中:

#> scp -r /usr/local/hadoop-2.7.7 slave1:/usr/local/#> scp -r /usr/local/hadoop-2.7.7 slave2:/usr/local/

5启动hadoop

1)格式化hadoop,进入目录:

#> /usr/local/hadoop-2.7.7/etc/hadoop

    执行下列之一命令即可

#> hadoop namenode -format  (过时)

    或

#> hdfs namenode -format

2)启动hdfs和yarn

(1)先启动HDFS(NameNode,DataNode守护进程)

#> cd/usr/local/hadoop-2.7.7#> sbin/start-dfs.sh

(2)再启动YARN

#> sbin/start-yarn.sh

3)验证是否成功,使用命令:jps,输出如下即表示配置成功。

 #> jps

12272 Jps

4135 JobTracker

9500 SecondaryNameNode

9943 NodeManager

9664 ResourceManager

8898 NameNode

9174 DataNode

4)可以在浏览器中查看hdfs和mr的状态.hdfs管理界面:http://localhost:50070  MR的管理界面:http://localhost:8088

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hadoop分布式集群
Hadoop环境搭建——集群篇
Hadoop中的集群配置和使用技巧
hadoop核心配置文件
如何装Hadoop?详细点哈?
Hadoop集群搭建
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服