hadoop搭建_hadoop集群搭建

虚拟机的搭建部分,请看另外一篇文章,关闭防火墙,关闭selinux,机器的时间同步都是要做,不然下面的操作会失败。

1.三台机器更改主机名(现在以node01机器为例,另外两台就是node02,node03)。

vim /etc/hostname
node01

2.三台机器和ip的映射(现在以node01机器为例,其他两台也是同样的配置)

vim /etc/hosts

192.168.224.100   node01
192.168.224.110   node02
192.168.224.120   node03

3.创建hadoop用户组和hadoop用户

创建hadoop用户组和hadoop用户需要在三台机器上分别操作,这里以node01节点配置过程为例
#1.创建用户组hadoop
[root@node01 ~]# groupadd hadoop
#2.创建用户hadoop并添加到hadoop用户组中
[root@node01 ~]# useradd -g hadoop hadoop
#3.使用id命令查看hadoop用户组和hadoop用户创建是否成功
[root@node01 ~]# id hadoop
#用户uid 			用户组id gid      用户组名
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
#设置hadoop用户密码为hadoop
[root@node01 ~]# passwd hadoop
Changing password for user hadoop.
New password: #输入hadoop后回车
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #再次输入hadoop后回车
passwd: all authentication tokens updated successfully.

#给普通用户添加sudo权限
visudo
#在文件找到root ALL=(ALL)   ALL,然后在下面添加一行
hadoop ALL=(ALL)   ALL

4.三台机器的免密登录(root用户和hadoop用户都要)

ssh-keygen -t rsa
然后一直回车

0688e53a680d827afca99f7bd2d65541.png
最后把所有的私钥都copy到第一台上去
ssh-copy-id   node01

5d0d61ff949a331488c53f90ddcc8f59.png
然后 cd .ssh/ (这里是把公钥分发下去)
scp authorized_keys node02:$PWD
scp authorized_keys node03:$PWD

b420b6b4377df3b4c9725b36b0f7ef76.png
#修改.ssh目录权限(三台都要做)
[root@localhost ~]# chmod -R 755 .ssh/
[root@localhost ~]#  cd .ssh/
[root@localhost .ssh]#  chmod 644 *
[root@localhost .ssh]# chmod 600 id_rsa
[root@localhost .ssh]# chmod 600 id_rsa.pub 
[root@localhost .ssh]#  cat id_rsa.pub >> authorized_keys 
[root@localhost .ssh]# 

26bda522f0ad7ae1e31e6685d6c04fb7.png
用root用户关机重启
reboot -h now

5.三台机器定义统一目录

定义三台linux服务器软件压缩包存放目录,以及解压后安装目录,三台机器执行以下命令,创建两个文件夹,一个用于存放软件压缩包目录,一个用于存放解压后目录

 mkdir -p /hadoop/soft     # 软件压缩包存放目录
 mkdir -p /hadoop/install  # 软件解压后存放目录
 chown -R hadoop:hadoop /hadoop    # 将文件夹权限更改为hadoop用户

6.卸载原有openjdk

rpm -qa |grep java #查看jdk

a17ea7c6d83c886504b6f34478fad45b.png
rpm 

4e452c9be30b45d48d4c2bbebd723c06.png

7.安装jdk(这里jdk,你放在哪个目录下都可以,环境变量配置对,就行)

1.登录Linux,切换到root用户
su root 获取root用户权限,当前工作目录不变(需要root密码)
2.在usr目录下建立java安装目录
cd /usr
mkdir java

3.将jdk拷贝到java目录下
cp /mnt/hgfs/linux/jdk-8u60-linux-x64.tar.gz /usr/java/

4.解压jdk到当前目录
tar -zxvf jdk-8u60-linux-x64.tar.gz
得到文件夹 jdk1.8.0_60
5.编辑配置文件,配置环境变量
vim /etc/profile

添加如下内容:JAVA_HOME根据实际目录来
JAVA_HOME=/usr/java/jdk1.8.0_141
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

7.重启机器或执行命令 :

source /etc/profile
sudo shutdown -r now

8.查看安装情况

java -version

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)

安装hadoop(都node01为例,后面会分发到node02和node03上)

1.上传hadoop安装包,进行解压

#解压安装包到/hadoop/install目录下
[root@node01 ~]# tar -xzvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /hadoop/install

2.配置hadoop环境变量

1.配置环境变量

#1.在linux系统全局配置文件的末尾进行hadoop和java的环境变量配置
[root@node01 ~]# vi /etc/profile
​
# /etc/profile
​
# System wide environment and startup programs, for login setup
​
# Functions and aliases go in /etc/bashrc
​
# It's NOT a good idea to change this file unless you know what you
​
# are doing. It's much better to create a custom.sh shell script in
​
# /etc/profile.d/ to make custom changes to your environment, as this
​
# will prevent the need for merging in future updates.
​
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}
"/etc/profile" 85L, 2028C
​
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done
​
unset i
unset -f pathmunge
​
JAVA_HOME=/usr/java/jdk1.8.0_141
CLASSPATH=$JAVA_HOME/lib/
HADOOP_HOME=/hadoop/install/hadoop-2.8.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
​
export PATH JAVA_HOME HADOOP_HOME CLASSPATH
                                                                                                                                                                                                 
:wq!

2.验证环境变量

#1.使环境变量生效
[root@node1 ~]# source .bash_profile 或者 source /etc/profile
#2.显示hadoop的版本信息
[root@node1 ~]# hadoop version
#3.显示出hadoop版本信息表示安装和环境变量成功.
Hadoop 2.8.3
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2017-12-15T03:39Z
Compiled with protoc 2.5.0
From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9
This command was run using /opt/bigdata/hadoop-2.8.3/share/hadoop/common/hadoop-common-2.8.3.jar
[root@node1 ~]# 

3.配置hadoop-env.sh

这个文件只需要配置JAVA_HOME的值即可,在文件中找到export JAVA_HOME字眼的位置,删除最前面的#

[root@node01 ~]#cd /hadoop/install/hadoop-2.8.3/etc/hadoop
[root@node1 hadoop]# vi hadoop-env.sh 
​
export JAVA_HOME=/usr/java/jdk1.8.0_141

4.配置core-site.xml

[root@node01 ~]#cd /hadoop/install/hadoop-2.8.3/etc/hadoop
[root@node1 hadoop]# vi core-site.xml
​
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/install/hadoop-2.8.3/hadoopDatas/tempDatas</value>
    </property>
    <!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
<property>
     <name>fs.trash.interval</name>
     <value>10080</value>
     <description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。 
     该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。 
     如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description>
</property>
​
<property>
     <name>fs.trash.checkpoint.interval</name>
     <value>0</value>
     <description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。 
     如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
     它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description>
</property>
</configuration>

5.配置hdfs-site.xml

<configuration>
    <!-- NameNode存储元数据信息的路径,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割   --> 
    <!--   集群动态上下线 
    <property>
        <name>dfs.hosts</name>
        <value>/hadoop/install/hadoop-2.8.3/etc/hadoop/accept_host</value>
    </property>
    
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/hadoop/install/hadoop-2.8.3/etc/hadoop/deny_host</value>
    </property>
     -->
     
     <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>node01:50090</value>
    </property>
​
    <property>
        <name>dfs.namenode.http-address</name>
        <value>node01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///hadoop/install/hadoop-2.8.3/hadoopDatas/namenodeDatas</value>
    </property>
    <!--  定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割  -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///hadoop/install/hadoop-2.8.3/hadoopDatas/datanodeDatas</value>
    </property>
    
    <property>
        <name>dfs.namenode.edits.dir</name>
        <value>file:///hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/nn/edits</value>
    </property>
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file:///hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/snn/name</value>
    </property>
    <property>
        <name>dfs.namenode.checkpoint.edits.dir</name>
        <value>file:///hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/nn/snn/edits</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
</configuration>

6.配置mapred-site.xml

#默认没有mapred-site.xml文件,这里需要从模板中复制一份出来进行修改配置
[root@node01 hadoop]# cp  mapred-site.xml.template mapred-site.xml
​
​
<!--指定运行mapreduce的环境是yarn -->
<configuration>
   <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
​
    <property>
        <name>mapreduce.job.ubertask.enable</name>
        <value>true</value>
    </property>
    
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node01:10020</value>
    </property>
​
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node01:19888</value>
    </property>
</configuration>

7.配置yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node01</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
​
    
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
​
​
    <property>
         <name>yarn.log.server.url</name>
         <value>http://node01:19888/jobhistory/logs</value>
    </property>
​
    <!--多长时间聚合删除一次日志 此处-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>2592000</value><!--30 day-->
    </property>
    <!--时间在几秒钟内保留用户日志。只适用于如果日志聚合是禁用的-->
    <property>
        <name>yarn.nodemanager.log.retain-seconds</name>
        <value>604800</value><!--7 day-->
    </property>
    <!--指定文件压缩类型用于压缩汇总日志-->
    <property>
        <name>yarn.nodemanager.log-aggregation.compression-type</name>
        <value>gz</value>
    </property>
    <!-- nodemanager本地文件存储目录-->
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/hadoop/install/hadoop-2.8.3/hadoopDatas/yarn/local</value>
    </property>
    <!-- resourceManager  保存最大的任务完成个数 -->
    <property>
        <name>yarn.resourcemanager.max-completed-applications</name>
        <value>1000</value>
    </property>
​
</configuration>

8.编辑slaves

此文件用于配置集群有多少个数据节点,我们把node2,node3作为数据节点,node01作为集群管理节点.

配置/hadoop/install/hadoop-2.8.3/etc/hadoop目录下的slaves

[root@node1 hadoop]# vi slaves 
#将localhost这一行删除掉
node01
node02
node03

9.创建文件存放目录

[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/tempDatas
[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/namenodeDatas
[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/datanodeDatas
[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/nn/edits
[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/snn/name
[root@node01 ~]# mkdir -p /hadoop/install/hadoop-2.8.3/hadoopDatas/dfs/nn/snn/edits
[root@node01 ~]# 

10.远程复制hadoop到集群各个机器中

#1.切换到/hadoop目录下
[root@node01 hadoop]# 
#2.进入install/hadoop-2.8.3/share/目录下删除doc用户文档(比较大),如果没有删除下面进行scp复制的时候时间会很长
[root@node01 kkb]# cd install/hadoop-2.8.3/share/
[root@node01 share]# rm -rf doc/
#3.切换到/hadoop目录下
[root@node01 share]# cd /hadoop/
[root@node01 hadoop]# scp -r install node02:$PWD
[root@node01 hadoop]# scp -r install node03:$PWD
#4.分发全局环境变量配置文件
[root@node01 ~]# scp /etc/profile node02:/etc/
profile                                                          100% 2028   608.8KB/s   00:00    
[root@node01 ~]# scp /etc/profile node03:/etc/
profile                                                          100% 2028     1.0MB/s   00:00    
#5.使得node01上的环境变量生效
[root@node01 ~]#source /etc/profile
#6.检查hadoop环境变量配置是否成功.
[root@node01 ~]# hadoop version
#显示hadoop的版本,说明环境变量配置成功
​
​

11.使集群所有机器环境变量生效

在node02,node03的root用户家目录下使环境变量生效

[root@node02 ~]#source /etc/profile
[root@node02 ~]# hadoop version
[root@node03 ~]#source /etc/profile
[root@node03 ~]# hadoop version

12.修改hadoop安装目录的权限

node01,node02,node03安装目录的权限

node01节点操作

#1.修改目录所属用户和组为hadoop:hadoop
[root@node01 ~]# chown -R hadoop:hadoop /hadoop
[root@node01 ~]# 
​
#2.修改目录所属用户和组的权限值为755
[root@node01 ~]#  chmod -R 755  /hadoop
[root@node01 ~]#  chmod -R g+w /hadoop
[root@node01 ~]#  chmod -R o+w /hadoop
[root@node01 ~]# 

node02节点操作

#1.修改目录所属用户和组为hadoop:hadoop
[root@node03 ~]# chown -R hadoop:hadoop /hadoop
[root@node01 ~]# 
​
#2.修改目录所属用户和组的权限值为755
[root@node01 ~]#  chmod -R 755  /hadoop
[root@node01 ~]#  chmod -R g+w /hadoop
[root@node01 ~]#  chmod -R o+w /hadoop
[root@node01 ~]#  

node03节点操作

#1.修改目录所属用户和组为hadoop:hadoop
[root@node01 ~]# chown -R hadoop:hadoop /hadoop
[root@node03 ~]# 
​
#2.修改目录所属用户和组的权限值为755
[root@node03 ~]#  chmod -R 755  /hadoop
[root@node03 ~]#  chmod -R g+w /hadoop
[root@node03 ~]#  chmod -R o+w /hadoop
[root@node03 ~]# 

13.格式化hadoop

#切换
[root@node01 ~]# su - hadoop
[appuser@node01 ~]$ hdfs namenode -format
[hadoop@node01 ~]$ 

5eff6d23e21978b489abe353dfc24d50.png

14.启动集群

start-all.sh

33d11b18cdaa88911459e24d8c00ea64.png

15.查看集群状态

jps 或者输入网址 http:// 192.168.224.100:50070/

0c9c97de67ce981d3ddcfad6b9a7bc28.png

a43c158f9644c50be0a2a786152c21fc.png

然后关闭集群

stop-all.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值