Hadoop集群环境搭建

(1)、在虚拟机中设置静态主机IP
①、获取当前IP地址的网段
②、子网掩码以及网关

③、在虚拟机外部将其Ping通

(2)、修改主机名

临时修改
hostname 主机名称
永久修改
sudo vi /etc/sysconfig/network 文件
修改hostname属性

权限不够时可以通过su root -->sudo vi /etc/sudoers添加权限,如下

(3)、关闭防火墙
查看防火墙运行状态  sudo service iptables status
临时关闭防火墙  sudo service iptables stop

关闭防火墙服务  sudo chkconfig iptables off/on

(4)、安装远程客户端

1.filezilla.exe
2.SecureCRT
3.notepad++  (NTP.dll插件放入Notepad++\plugins下)

(5)、由于使用的时CentOS6.5自带java版本较低需删除,重新配置jdk1.7

①、卸载已有JDK

1.查看java相关的安装文件
sudo rpm -qa|grep java

2.卸载已安装的java文件
sudo rpm -e --nodeps 文件名1 文件名2 ...

②、安装JDk
1.上传JDK的安装包 1.7 (使用filezilla来上传安装包)

2.在/opt目录下新建两个子目录
softwares 存放上传的软件
modules 存放执行的文件

3.进入softwares目录
cd softwares

4.移动上传的文件到该目录
sudo mv ~/jdkxxxxx .
sudo mv ~/hadoopxxxx .

5.将文件解压到modules目录
sudo tar -zxvf jdk-7u80-linux-x64.tar.gz -C ../modules/

6.配置Java的环境变量
sudo vi ~/.bash_profile(环境变量配置文件),配置内容如下

7.使新增内容生效
source ~/.bash_profile

8.查看是否配置成功

  java -version  查看已安装的java版本

  javac   查看是否可编译java文件

(6)、SSH免登陆
ssh远程访问协议,用于多台虚拟机直接的交互
1.开启ssh免登录
sudo vi /etc/ssh/sshd_config

2.生成ssh免登录的公钥与密钥
ssh-keygen -t rsa (过程中不停回车,设置密码均为空)

3.查看隐藏文件
ls -al (~目录下有.ssh文件)

4.保存公钥到authorized_keys文件中
cat id_rsa.pub >> authorized_keys

5.对.ssh目录和authorized_keys进行授权
sudo chmod 600 authorized_keys (.ssh)
sudo chmod 750 .ssh (~目录下)

同时将"/"下的opt改为对应的当前用户名所有(sudo chown -R hadoop:hadoop /opt   [-R]表示循环改变)如下

设置主机名对应的ip
sudo vi /etc/hosts
ip地址 主机名

6.测试
  ssh 主机名

  ssh Master

(7)、在/opt/modules/hadoop-2.6.5/etc/hadoop下的文件修改

①、core-site.xm下添加

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:8020</value>
    </property>
	<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.6.5/tmp</value>
    </property>
</configuration>

②、在hadoop-env.sh、mappred-env.sh、yarn-env.sh下修改JAVA_HOME

export JAVA_HOME=/opt/modules/jdk1.7.0_80  

③、在hdfs-site.xml下修改为:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Master:50090</value>
    </property>
</configuration>

④、搭建集群时,主机要管理所有节点,修改slaves

Master
Slave1
Slave2

⑤、修改yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
	<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

	<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Master</value>
    </property>

</configuration>

 ⑥、按同样的方式搭建好其余两台主机,主机名分别叫Slave1和Slave2,不同的是在slave文件中只有各自对应的Slave1和Slave2一个节点,同时修改修改yarn-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(8)、在三台主机都添加上主机名

  sudo vi /etc/hosts

    192.168.9.111     Master

    192.168.9.112     Slave1

    192.168.9.113     Slave2

(9)、设置多台主机可直接ssh免登入

  ssh-copy-id -i ~/.ssh/id_rsa.pub

(10)、删除hadoop-2.6.5下的tmp和logs文件,格式化硬盘,启动hdfs文件系统以及查看开启的节点

  rm -rf logs

  rm -rf tmp(这两步三台主机都要进行)

  bin/hdfs namenode -format    格式化硬盘

  sbin/start-all.sh       启动HDFS文件关系系统

  jps             查看开启节点数

(11)、登入http://192.168.9.111:50070查看详细信息,可以看到如下信息,说明三台主机可以正常工作了



利用web端实现对HDFS系统的管理

bin/hdfs dfs -mkdir /user   创建user文件夹

bin/hdfs dfs -mkdir /user/<username>  创建username文件夹,此处我的是hadoop

bin/hdfs dfs -put etc/hadoop input  将创建的input的复制到HDFS文件管理系统中

其中Dao的写法如下:

package com.gqx.dao;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;

import javax.servlet.http.Part;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FileDao {
	public FileStatus[] getAllFile() throws IOException{
		System.setProperty("HADOOP_USER_NAME","hadoop");
		System.setProperty("hadoop.home.dir","D:\\hadoop-2.6.5");
		Configuration conf = new Configuration();
		FileSystem fs =FileSystem.get(conf);
		FileStatus[] list =fs.listStatus(new Path("/user/hadoop/input"));
		return list;
	}

	public boolean delete(String name) throws IOException{
		System.setProperty("HADOOP_USER_NAME","hadoop");
		System.setProperty("hadoop.home.dir","D:\\hadoop-2.6.5");
		Configuration conf = new Configuration();
		FileSystem fs =FileSystem.get(conf);
		return fs.delete(new Path("/user/hadoop/input/"+name),true);
	}

	public boolean upload(Part part) throws IOException{
		System.setProperty("HADOOP_USER_NAME","hadoop");
		System.setProperty("hadoop.home.dir","D:\\hadoop-2.6.5");
		//创建HDFS文件系统
		Configuration conf = new Configuration();
		FileSystem hadoopFS= FileSystem.get(conf);
		InputStream in=part.getInputStream();
		Path path = new Path("/user/hadoop/input");
		FSDataOutputStream fsout=hadoopFS.create(new Path(path+"/"+part.getSubmittedFileName()));
		byte[] buf=new byte[1024];
		int readbytes=0;
		while((readbytes=in.read(buf))>0){
			fsout.write(buf,0,readbytes);
		}
		in.close();
		fsout.close();
		return true;
	}

	public FSDataInputStream download(String name) throws IOException{
		System.setProperty("HADOOP_USER_NAME","hadoop");
		System.setProperty("hadoop.home.dir","D:\\hadoop-2.6.5");
		//创建HDFS文件系统
		Configuration conf = new Configuration();
		FileSystem hadoopFS= FileSystem.get(conf);
		// 如果文件名是中文,需要进行url编码
		FSDataInputStream fsin = hadoopFS.open(new Path("/user/hadoop/input/"+name));
		return fsin;
	}

}  

文件下载的servlet如下:

package com.gqx.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.hadoop.fs.FSDataInputStream;

import com.gqx.dao.FileDao;

/**
 * Servlet implementation class DownloadServlet
 */
@WebServlet("/DownloadServlet")
public class DownloadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public DownloadServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String name=request.getParameter("name");
		FileDao dao = new FileDao();
		//name = URLEncoder.encode(name, "UTF-8");
		FSDataInputStream fsin = dao.download(name);
		System.out.println(name);
		response.setHeader("content-disposition", "attachment;fileName=" +
				new String(name.getBytes("GBK"),"ISO-8859-1"));
		OutputStream out = response.getOutputStream();
		byte[] b = new byte[1024];
		int len=-1;
		while((len=fsin.read(b)) != -1){
			out.write(b,0,len);
		}
		out.close();
		fsin.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  

文件的目录和最终效果如下

 

  

  

原文地址:https://www.cnblogs.com/helloworldcode/p/8297111.html

时间: 2024-10-12 07:16:44

Hadoop集群环境搭建的相关文章

大数据 -- Hadoop集群环境搭建

首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间. Hadoop主要包含三个模块: HDFS模块:HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单

Hadoop+Spark:集群环境搭建

环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-server-amd64.iso): 192.168.1.200 master 192.168.1.201 node1 192.168.1.202 node2 在Master上安装Spark环境: 具体请参考我的文章:<Hadoop:搭建hadoop集群> Spark集群环境搭建: 搭建h

Hadoop分布式集群环境搭建

分布式环境搭建之环境介绍 之前我们已经介绍了如何在单机上搭建伪分布式的Hadoop环境,而在实际情况中,肯定都是多机器多节点的分布式集群环境,所以本文将简单介绍一下如何在多台机器上搭建Hadoop的分布式环境. 我这里准备了三台机器,IP地址如下: 192.168.77.128 192.168.77.130 192.168.77.134 首先在这三台机器上编辑/etc/hosts配置文件,修改主机名以及配置其他机器的主机名 [[email protected] ~]# vim /etc/host

阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建

准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: 更改主机名: 由于系统为CentOS 7,可以直接使用‘hostnamectl set-hostname 主机名’来修改,修改完毕后重新shell登录或者重启服务器即可. 1 hostnamectl set-hostname master 2 exit 3 ssh [email protected]

Hadoop2.6集群环境搭建

Hadoop2.6集群环境搭建(HDFS HA+YARN)原来4G内存也能任性一次. 准备工作: 1.笔记本4G内存 ,操作系统WIN7 (屌丝的配置) 2.工具VMware Workstation 3.虚拟机:CentOS6.4共四台 虚拟机设置: 每台机器:内存512M,硬盘40G,网络适配器:NAT模式 选择高级,新生成虚机Mac地址(克隆虚拟机,Mac地址不会改变,每次最后手动重新生成) 编辑虚拟机网络: 点击NAT设置,查看虚机网关IP,并记住它,该IP在虚机的网络设置中非常重要. N

Hadoop2.6集群环境搭建(HDFS HA+YARN)

Hadoop2.6集群环境搭建(HDFS HA+YARN)原来4G内存也能任性一次. 准备工作: 1.笔记本4G内存 ,操作系统WIN7 (屌丝的配置) 2.工具VMware Workstation 3.虚拟机:CentOS6.4共四台 虚拟机设置: 每台机器:内存512M,硬盘40G,网络适配器:NAT模式 选择高级,新生成虚机Mac地址(克隆虚拟机,Mac地址不会改变,每次最后手动重新生成) 编辑虚拟机网络: 点击NAT设置,查看虚机网关IP,并记住它,该IP在虚机的网络设置中非常重要. N

Spark 1.6.1分布式集群环境搭建

一.软件准备 scala-2.11.8.tgz spark-1.6.1-bin-hadoop2.6.tgz 二.Scala 安装 1.master 机器 (1)下载 scala-2.11.8.tgz, 解压到 /opt 目录下,即: /opt/scala-2.11.8. (2)修改 scala-2.11.8 目录所属用户和用户组. ? 1 sudo chown -R hadoop:hadoop scala-2.11.8 (3)修改环境变量文件 .bashrc , 添加以下内容. ? 1 2 3

Hadoop2.2.0-HA高可用集群环境搭建

Hadoop2.2.0-HA高可用集群环境搭建 集群主机信息 主机名称 主机ip 配置 主要功能 master1 硬盘300G,内存32G,CPU8核 管理主节点 master2 硬盘300G,内存32G,CPU8核 管理备份节点 slave1 硬盘300G,内存8G,CPU4核 数据节点 slave2 硬盘300G,内存8G,CPU4核 数据节点 slave3 硬盘300G,内存8G,CPU4核 数据节点 slave4 硬盘500G,内存4G,CPU2核 mysql数据库 本次集群使用6台物理

spark-1.2.0 集群环境搭建

1.下载scala2.11.4版本 下载地址为:http://www.scala-lang.org/download/2.11.4.html ,也可以使用wget http://downloads.typesafe.com/scala/2.11.4/scala-2.11.4.tgz?_ga=1.248348352.61371242.1418807768 2.解压和安装: 解压 :[[email protected] scala]$ tar -xvf scala-2.11.4.tgz  ,安装:[