Hadoop初探——Hadoop集群搭建

本人在进行Hadoop集群搭建创建了三台虚拟机,一台作为master,另外两台为slave,在搭建集群的过程中采用是centOs7,Java版本为1.8,Hadoop版本为2.7。

三台虚拟机对应的IP为:192.168.25.128,192.168.25.129,192.168.25.130.

虚拟创建完成之后首先应该先将各台虚拟机的防火墙关闭:

[root@localhost ~]# systemctl stop firewalld.service

[root@localhost ~]#  systemctl disable firewalld.service

之后在三台虚拟机上创建目录/export/software(存放压缩包)和/export/servers(存放解压文件):本人将Java解压文件放在了 /export/servers/java下,Hadoop解压文件放在/export/servers/hadoop所以直接创建:

[root@localhost ~]# mkdir  -p /export/servers/java

[root@localhost ~]# mkdir  -p /export/servers/hadoop

之后上传Java压缩包到虚拟机上采用rz命令,若果rz命令报错,则采用yum install lrzsz命令安装插件,即可操作之后选择Java安装包所在的路径,上传压缩包。由于上传的压缩包不在事先创建的目录中所以应该执行以下命令移动压缩包:

[root@localhost ~]# mv jdk-8u161-linux-x64.tar.gz /export/software

之后进入software目录下:

[root@localhost ~]# cd /export/software

解压Java压缩包到/export/servers/java

[root@localhost software]# tar -zxvf jdk-8u161-linux-x64.tar.gz -C /export/servers/java

之后配置Java环境变量:

[root@localhost ~]# vi /etc/profile

写入以下语句:

                 export JAVA_HOME=/export/servers/java/jdk1.8.0_161

                 export PATH=$PATH:$JAVA_HOME/bin

                 export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar

Java环境变量配置完成之后可以采用以下命令即时生效不用重启服务器:

[root@localhost servers]# source /etc/profile

采用以下命令查看Java版本,看是否安装成功:

[root@localhost servers]# java -version

接下来配置主机域名,方便以后操作,在master主机上操作命令:

[root@localhost servers]# hostname master

[root@localhost servers]# vi /etc/hostname

master

在slave主机上操作命令:

[root@localhost servers]# hostname slave01

[root@localhost servers]# vi /etc/hostname

slave01

在另一台slave主机上操作命令:

[root@localhost servers]# hostname slave02

[root@localhost servers]# vi /etc/hostname

slave02

之后配置hosts文件使ip地址与主机域名映射,在三台服务器上执行以下命令:

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

192.168.25.128 master

192.168.25.129 slave01

192.168.25.130 slave02

接下来设置免密登陆,这样可以防止以后重复的输入密码:

分别在三台主机上执行以下命令:

[root@localhost ~]# ssh-keygen -t rsa(按enter键四次)

[root@localhost ~]# ssh-copy-id slave01(输入要访问的主机ip或者主机域名)

搭建Hadoop集群:

上传hadoop压缩包,参照上面Java压缩包的上传,解压hadoop压缩包:

[root@master software]# tar -zxvf hadoop-2.7.3.tar.gz -C /export/servers/hadoop

配置Hadoop环境:

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

                        export HADOOP_HOME=/export/servers/hadoop/hadoop-2.7.3

                        export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin

采用以下命令即时生效:

[root@master hadoop-2.7.3]# source /etc/profile

采用以下命令查看hadoop版本:

[root@master hadoop-2.7.3]# hadoop version

修改hadoop配置文件,hadoop-env.sh,yarn-env.sh增加JAVA_HOME配置

[root@master software]# echo -e "export JAVA_HOME=/soft/java/jdk1.7.0_79" >> /soft/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh

[root@master software]# echo -e "export JAVA_HOME=/soft/java/jdk1.7.0_79" >> /soft/hadoop/hadoop-2.7.3/etc/hadoop/yarn-env.sh

创建目录/hadoop,/hadoop/tmp,/hadoop/hdfs/data,/hadoop/hdfs/name

[root@master ~]# mkdir -p /hadoop/tmp

[root@master ~]# mkdir -p /hadoop/hdfs/data

[root@master ~]# mkdir -p /hadoop/hdfs/name

修改core-site.xml文件

[root@master ~]# vi /export/servers/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml

<configuration>
 
<property>
                <name>hadoop.tmp.dir</name>
                <value>/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
</property>
<property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
</property>
<property>
                <name>io.file.buffer.size</name>
                <value>4096</value>
</property>
 
 
</configuration>

修改hdfs-site.xml

[root@master ~]# vi /export/servers/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml 

<configuration>
  <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/hadoop/hdfs/name</value>
  </property>
  <property>
     <name>dfs.datanode.data.dir</name>
     <value>file:/hadoop/hdfs/data</value>
  </property>
  <property>
     <name>dfs.replication</name>
     <value>2</value>
  </property>
  <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>master:9001</value>
  </property>
  <property>
     <name>dfs.webhdfs.enabled</name>
     <value>true</value>
  </property>
</configuration>

复制mapred-site.xml.template为mapred-site.xml,并修改

[root@master ~]# /export/servers/hadoop/hadoop-2.7.3/etc/hadoop

[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml

[root@master hadoop]# vi mapred-site.xml

<configuration>
 
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <final>true</final>
    </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>master:50030</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
    <property>
         <name>mapred.job.tracker</name>
         <value>http://master:9001</value>
</property>
 
</configuration>

修改yarn-site.xml

[root@master hadoop]# vi yarn-site.xml

<property>
         <name>yarn.resourcemanager.hostname</name>
         <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>

/export/servers/hadoop/hadoop-2.7.3/etc/hadoop/slave,删除默认的localhost,添加slaveo1,slave02

[root@master hadoop]# echo -e "slaveo1\nslave02" > /export/servers/hadoop/hadoop-2.7.3/etc/hadoop/slaves

启动,只在master执行,格式化

[root@master hadoop]# cd /export/servers/hadoop/hadoop-2.7.3/bin/

[root@master bin]# ./hadoop namenode -format

[root@master bin]# cd /export/servers/hadoop/hadoop-2.7.3/sbin/

[root@master sbin]#  ./start-all.sh

验证:

master主机上执行

[root@master sbin]# jps

显示信息:

1856 SecondaryNameNode
1669 NameNode
2008 ResourceManager
2265 Jps

slave01主机上执行

[root@slave01 ~]# jps

显示信息:

[root@slave01 ~]# jps
1712 NodeManager
1605 DataNode
1833 Jps

slave02主机上执行

[root@slave02 ~]# jps

显示信息:

[root@slave02 ~]# jps
1812 NodeManager
1706 DataNode
1933 Jps

显示如上信息说明搭建成功,如果发现显示信息与上面不服,可能是格式两次之后集群中的clusterID不一致造成的:这样需将clusterID改为一致:

在master上执行以下命令查看:

[root@master sbin]# cat /hadoop/hdfs/name/current/VERSION

在slave01或slave02上执行以下命令查看:

[root@slave01 ~]# cat /hadoop/hdfs/name/current/VERSION

若不一致则用以下命令修改,只需要复制粘贴改为一致即可:

vi /hadoop/hdfs/name/current/VERSION

浏览器访问master的50070,比如http://192.168.25.128:50070,http://192.168.25.128:8080查看

关闭hadoop集群,执行命令:

[root@master sbin]#./start-all.sh

猜你喜欢

转载自blog.csdn.net/yangmingtia/article/details/83926818