分布式环境搭建redhat7+hadoop2.6.1+jdk1.8

来源:互联网 发布:阿里云香港服务器快吗 编辑:程序博客网 时间:2024/06/08 06:41

共三台服务器,安装的Redhat7系统,Redhat7命令与常用的Linux命令稍有不同。第一次写博客,记录过程方便自己的同时方便他人,直接开始正题,环境搭建过程如下。

一、安装Redhat7.1系统

1.用光盘安装,服务器开启后启动过程中按del键进入BIOS,在boot菜单中将boot priority的CD/ROM选项设置为1st,具体做法是选中CD/ROM选项并按shift+键。

 

2.安装设置,界面上分区选项会有感叹号,选中分区选项,进入后选择一个磁盘sda或sdb或其他都可以,但是要自己知道装在哪个盘上了,因为后面重启后还要选择优先启动盘,如果sda盘上有系统可以先delete,或者装在sdb盘上。

 

3.开始安装,安装过程中,创建root用户的密码,密码过简单时,需要按down按钮两次。

 

4.安装完成后,做一些配置,这些配置其实可以在安装设置时就设置好,首先配置网络:

打开网络配置文件,并做下面的配置,

vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

TYPE=Ethernet

       BOOTPROTO=static

       DEFROUTE=yes

       PEERDNS=yes

       PEERROUTES=yes

       IPV4_FAILURE_FATAL=no

       IPV6INIT=yes

       IPV6_AUTOCONF=yes

       IPV6_DEFROUTE=yes

       IPV6_PEERDNS=yes

       IPV6_PEERROUTES=yes

       IPV6_FAILURE_FATAL=no

       NAME=enp3s0

       UUID=3b85ec9a-857d-4a20-af48-5beaf403c6a9

       DEVICE=enp3s0

       ONBOOT=yes

       IPADDR=172.19.0.189

       NETMASK=255.255.255.0

       GATEWAY=172.19.0.179

其中ip地址不能和其他机器冲突。

配置完成后重启网络服务,

service network restart

5.修改主机名,查看主机名,将主机名修改为静态的主机,

hostnamectl status

hostnamectl set-hostname slave2 --static

6.测试,ping外网,ping网关,ping内网,如果可以ping通网络就没问题了。

接下来要用ssh服务,需要配置防火墙,首先查看防火墙状态,

systemctl status firewalld

会有一个Active,关闭防火墙,

systemctl disable firewalld

重启服务器,开启ssh服务,

service sshd start

至此就可以使用Xshell连接到服务器。注意,ip地址不能有冲突,若ip地址冲突了,则ssh连接老断。


二、安装hadoop2.6.1

1.创建hadoop用户,修改密码,

useradd -m hadoop -s /bin/bash

passwd hadoop

以root身份为用户hadoop增加管理员权限,找到root ALL=(ALL) ALL,下面增加内容,

visudo

hadoop ALL=(ALL) ALL

添加这一行的意义是让hadoop用户能够使用sudo root 命令;

之后修改xshell连接的属性,将用户名和密码改为hadoop,以hadoop用户身份操作。

2.安装jdk1.8,首先在/usr/local目录下新建一个目录jdk,以root身份操作;

su root

cd /usr/local

mkdir jdk

使用xftp向服务器上传文件很容易中断,中断后重新连接,不要删除原来没上传完的文件,直接将文件再次拖入jdk目录下,此时会弹出文件重复提示,将下方覆盖选为继续下载,断了就重复继续下载步骤直到文件传完;

这里我上传的是RPM文件,强制安装省略卸载步骤,可以先卸载原来的jdk在安装新的,

rpm -ivh jdk-8u131-linux-x64.rpm --force

打开配置文件,在文件末尾加入以下内容:

vi /etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_131

JRE_HOME=$JAVA_HOME/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar

export JAVA_HOME JRE_HOME PATH CLASSPATH

使文件生效;

source /etc/profile

查看安装是否成功,出现以下信息则安装成功:

java -version

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build1.8.0_131-b11)

Java HotSpot(TM) 64-Bit Server VM (build25.131-b11, mixed mode)

 

3.配置ssh无密码登录,进入目录

cd ~/.ssh/

生成公钥和密钥,

ssh-keygen -t rsa

 cat id_rsa.pub >>authorized_keys

在slave1和slave2上做一遍上述操作,因为没有用root用户登陆过slave1,所以报错-bash: cd: /root/.ssh: No suchfile or directory,解决办法是执行ssh localhost

将slave1的id_rsa.pub 复制到 master的对应目录中,

scp id_rsa.pub root@master:~/.ssh/id_rsa.pub_slave1

在master中,将slave1的id_rsa.pub_slave1内容合并到authorized_keys中,

cat id_rsa.pub_slave1 >> authorized_keys

在master中将authorized_keys复制到slave1中,

scp authorized_keys root@slave1:~/.ssh/

将master节点和slave1节点的文件权限改一下,

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

使用命令 sshslave1测试一下,测试成功如下,

[root@master .ssh]# ssh slave1

Last login: Thu Oct 12 04:40:06 2017 fromlocalhost

[root@slave1 ~]# exit

对slave2做相同操作,这样配置完后,master和slave1可以互相免密访问。

 

4.配置hosts文件,分别在每个节点操作,首先修改每个主机的hostname,

hostnamectl --static set-hostname master(slave1slave2)

修改配置文件,文件末尾添加内容:

vi /etc/hosts

masterip地址 master

slave1ip地址 slave1

slave2ip地址 slave2

 

5.在master节点安装配置hadoop2.6.1,下载hadoop-2.6.1.tar.gz,将文件上传到服务器/home/hadoop目录中,上传方法与jdk一样;将文件解压,

tar xzfv hadoop-2.6.1.tar.gz

修改配置文件,

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_131

修改配置文件,在<configuration></configuration>节点内增加内容

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/core-site.xml

<!-- 运行时产生文件的存储目录-->

    <property>

       <name>hadoop.tmp.dir</name>

        <value>file:/home/hadoop/hadoop-2.6.1/tmp</value>

        <description>Abase for othertemporary directories.</description>

    </property>

<!-- 指定NameNode地址 -->

    <property>

        <name>fs.defaultFS</name>

       <value>hdfs://master:9000</value>

    </property>

修改配置文件,在<configuration></configuration>节点内增加内容

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/hdfs-site.xml

<property>

    <name>dfs.namenode.name.dir</name>

   <value>/home/hadoop/hadoop-2.6.1/dfs/name</value>

    <description>Path onthe local filesystem where the NameNode stores the namespace and transactionslogs persistently.</description>

</property>

<property>

   <name> dfs.http.address</name>

   <value> master:50070</value>

</property>

<property>

   <name>dfs.namenode.secondary.http-address</name>

   <value> slave1:50090</value>

</property>

<property>

       <name>dfs.namenode.secondary.http-address</name>

       <value>slave1:9001</value>

   </property>

   <property>

   <name>dfs.webhdfs.enabled</name>

   <value>true</value>

   </property>

<property>

    <name>dfs.datanode.data.dir</name>

   <value>/home/hadoop/hadoop-2.6.1/dfs/data</value>

    <description>Commaseparated list of paths on the local filesystem of a DataNode where it shouldstore its blocks.</description>

</property>

<property>

       <name>dfs.permissions</name>

       <value>false</value>   

</property>

<!-- 副本复制数量,这里配置为1-->

<property>

   <name>dfs.replication</name>

    <value>1</value>

</property>

修改配置文件,在<configuration></configuration>节点内增加内容

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/yarn-site.xml

JAVA_HOME=/usr/java/jdk1.8.0_131

<property>

       <name>yarn.nodemanager.aux-services</name>

       <value>mapreduce_shuffle</value>

   </property>

   <property>

       <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

       <value>org.apache.hadoop.mapred.ShuffleHandler</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>

   <property>

       <name>yarn.nodemanager.resource.memory-mb</name>

       <value>22528</value>

   </property>

 

修改配置文件,在<configuration></configuration>节点内增加内容

vi/home/hadoop/hadoop-2.6.1/etc/hadoop/mapred-site.xml.template

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    <description>Host or IP and port ofJobTracker.</description>

</property>

</configuration>

<property>

   <name>mapred.job.tracker</name>

   <value>master:9001</value>

    <description>Host or IPand port of JobTracker.</description>

</property>

<property>

   <name>mapred.child.java.opts</name>

   <value>-Xmx512m</value>

   <description>使用更大的堆用于maps/reduces的子虚拟机</description>

</property>

修改配置文件,增加内容

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/masters

master

修改配置文件,增加内容

vi /home/hadoop/hadoop-2.6.1/etc/hadoop/slaves

slave1

slave2

master节点的hadoop安装配置完成后,将目录复制到slave1和slave2节点上

scp -r /home/hadoop/hadoop-2.6.1 root@slave1:/home/hadoop

将hadoop配置到环境变量中,在文件末尾添加内容,

vi ~/.bashrc

export HADOOP_HOME=/home/hadoop/hadoop-2.6.1

exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin      

使文件生效,

source ~/.bashrc

 

6.格式化并重新启动hadoop,HDFS格式化,

/home/hadoop/hadoop-2.6.1/bin/hdfs namenode -format

启动hadoop,

start-all.sh

查看启动是否成功,

jps

显示如下启动成功,

15984 Jps

15813 SecondaryNameNode

14462 NameNode

 

7.WordCount实例运行,首先进入目录,

cd /home/hadoop/hadoop-2.6.1

新建一个input目录,

mkdir input

进入新建的input目录中,新建文件并写入内容,

vi f1

hello world bye zjw1

vi f2

hello world bye zjw2

在HDFS中新建一个目录,

hadoop fs -mkdir /zjw

hadoop fs -mkdir /zjw/input

将f1和f2放入HDFS新建的目录中

hadoop fs -put f1 /zjw/input

hadoop fs -put f2 /zjw/input

查看刚才放入的文件

hadoop fs -ls /zjw/input

显示如下则继续,

Found 2 items

-rw-r--r--  1 root supergroup         202017-10-15 22:55 /zjw/input/f1

-rw-r--r--  1 root supergroup         20 2017-10-15 22:55 /zjw/input/f2

回到hadoop目录中,

cd /home/hadoop

运行WordCount程序:

hadoop jarhadoop-2.6.1/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.1-sources.jarorg.apache.hadoop.examples.WordCount /zjw/input/ /output/wordcount3

查看运行结果,

hdfs dfs -cat/output/wordcount3/*

显示结果如下:

bye  2

hello       2

zjw2       1

world      2

zjw1       1

//hadoop jar/home/hadoop/hadoop-2.6.1/input/fsm-hadoop.jar

8.配置eclipse使得在eclipse中直接编写mapreduce程序并运行在服务器的hadoop集群上。eclipse:eclipse neon3

jdk:1.8

// 这一步配置可以忽略,目前没觉着有什么用处

配置电脑的用户名,首先"右击"桌面上图标"我的电脑",选择"管理"接着选择"本地用户和组",展开"用户",找到系统管理员"Administrator",修改其为"hadoop"

最后,把电脑进行"注销"或者"重启电脑",这样才能使管理员这个名字。

 

下载hadoop-eclipse-plugin-2.7.3.jar包,下载好后复制到eclipse安装目录的plugins文件夹下,重启eclipse。

点击Window->ShowView->Others->MapReduceTools->MapReduceLocations,界面中出现Map/Reduce Locations 点击右边蓝色,新建一个DFS Location,

General选项中做如下配置:

Advancedparameters中找到hadoop.tem.dir,做如下配置:

点击Finish,即可在projectExplorer中看到DFSLocation ,点开即可看到hadoop文件系统

 

网页查看hadoop集群状态,ip地址:8088/cluster

配置JobHistory

修改配置文件

使用命令mr-jobhistory-daemon.sh start historyserver 启动服务,可以打开网址http://172.19.0.189:19888/jobhistory/即为配置成功


原创粉丝点击