环境搭建

  1. 安装虚拟机:VMware Workstation10。
  2. 安装配置Linux :CentOS 6.6,完全分布式模式需要至少3个节点,这里需要安装3个Linux系统来虚拟出这3个节点。
  3. 安装SSH工具:Windows下可以使用SecureCRT、putty、Xshell等ssh client程序,作用是用来远程连接Linux服务器。
  4. 配置hadoop

    一、安装虚拟机

    此步骤省略

    二、安装配置Linux

    虚拟机上安装Linux
  • 新建虚拟机:自定义->稍后安装操作系统->linux,CentOS->虚拟机名称,位置->处理器,内存(1GB)->网络类型:使用桥接网络->默认...->磁盘容量:20GB->默认...。
  • 配置虚拟机:上面步骤硬件分配错误,可以在配置虚拟机中重新分配,并在cd/dvd选项中加载Linux镜像iso文件。
  • 安装Linux(三台):点击虚拟机的开始按钮,虚拟机会自动加载并引导系统镜像文件,进入安装目录,选择第一个选项install...,然后会提醒是否检查光盘,选择skip,最重要的是要选择自定义分区,要分四个分区(20GB的硬盘:'/'8GB,'/boot'200MB,'swap'2GB,'/home'10GB)。
  • 配置ip(三台):用于SSH工具连接,输入ifconfig eth0命令,查看IP,如果显示的IP为127.0.0.1,这需要在/etc/sysconfig/network-scripts/ifcfg-eth0进行配置,将ONBOOT =no改为ONBOOT=yes,保存后执行命令service network restart,输入命令查看IPifconfig eth0
  • 创建hadoop专用用户(三台):用useradd username创建用户,并为用户分配密码passwd username,要重复密码确认,为刚创建的用户分配sudo权限,在新创建的用户下面创建文件夹sudo mkdir /usr/lib/jvm提示无法创建,此时需要为此用户添加sudo权限,输入rpm -qa|grep sudo,查看是否安装了sudo,输入su,切换到root用户,并输入visudo(等同于vi /etc/sudoers),visudo命令是用来编辑修改/etc/sudoers配置文件,找到root ALL=(ALL) ALL这一行,并在下一行添加username All=(All) ALL,username为你当前使用的用户名,也就是普通用户的用户名,保存之后,输入exit,退出root用户,此时,再次输入命令sudo mkdir /usr/lib/jvm之后,可以发现,jvm文件夹建立成功,该文件夹是以root权限创建的。
  • 安装JDK(三台):首先到官网下载,然后解压文件,修改文件名:
$ sudo mkdir /usr/lib/jvm
$ sudo tar zxvf jdk jdk-7u71-linux-i586.gz -C /usr/lib/jvm
$ cd /usr/lib/jvm
$ sudo mv jdk1.7.0_71 java

添加到环境变量,对所有用户生效需要修改文件/etc/profile,只对本用户生效修改文件/home/usrname/.bashrc本用户下面的.bashrc文件,注销后重新登录可以生效,使用exit命令注销,可以用echo $PATH命令验证。

sudo vim ~/.bashrc

添加如下内容

export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH  

配置默认JDK版本

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/bin/javac 300  

然后执行

sudo update-alternatives --config java

若是初次安装JDK,将提示

There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java/bin/java
无需配置。

若非初次安装,将有不同版本的JDK选项。
测试

$ java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) Client VM (build 24.71-b01, mixed mode)

上面配置好的JDK

  • 配置主机名(三台)
    1.输入hostname命令查看当前的主机名;
    2.修改/etc/sysconfig/network文件中的HOSTNAME参数,输入你想命名的主机名名称,修改此参数需要重启Linux系统才能生效,输入hostname 主机名,可以在本次的会话中修改主机名,系统重启后会失效。
    3.修改/etc/hosts文件,见下一步骤配置hosts文件,并输入命令ping 新主机名进行验证。
  • 配置hosts文件(三台):所有的节点都修改/etc/hosts文件,使彼此之间都能把主机名解析为IP,将上一步骤的主机名与对应的IP地址添加到hosts文件中。
$ vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.l0.131.33    master.hadoop.h1
10.10.131.27    slave.hadoop.h2
10.10.131.29    slave.hadoop.h3
  • SSH免密码登录配置(三台)
    SSH通过“公私钥”的方式进行登录,具体的原理为
  • 首先在客户端上创建一对公私钥(公钥文件:/home/username/.ssh/id_rsa.pub;私钥文件:/home/username/.ssh/id_rsa);
  • 然后把公钥文件放到服务器上(/home/username/.ssh/authorized_keys),自己保管好私钥;
  • Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
    SSH免密码登录配置具体步骤
    1.在客户端生成公钥/私钥对:-P表示密码,-P "" 就表示空密码,也可以不用-P参数,这样就要三次回车,用-P就一次回车。
$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Created directory '/home/yuanjian/.ssh'.
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
87:14:91:6d:90:25:06:22:41:c3:ca:de:f9:02:6c:2d username@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| o=.. ..*B.      |
|  .o . .ooo      |
|..      ..       |
|..     . .       |
|o o .   S .      |
| E +     .       |
|. o .            |
|   . .           |
|    .            |
+-----------------+

2.把客户端的公钥id_rsa.pub复制到服务器/home/username/.ssh/id_rsa.pub,用scp复制:

$ scp /home/username/.ssh/id_rsa.pub username@h2:/home/username/.ssh/h1_id_rsa.pub
username@h2's password:
id_rsa.pub                                           100%  412     0.4KB/s   00:00                                                                                                                                                    

由于还没有免密码登录,所以要输入密码;由于前面已经配置了h2的hosts,这里就用h2代替了IP;首先也要在h2服务器上创建.ssh目录。
3.在服务器上,将刚从客户端复制的h1_id_rsa.pub文件追加到/home/username/.ssh/authorized_keys文件里:

$ cat /home/username/.ssh/h1_id_rsa.pub  >> /home/username/.ssh/authorized_keys
$ chmod 600 /home/username/.ssh/authorized_keys

authorized的权限是600。
4.客户端h1登录服务器h2:

$ ssh h2

现在客户端h1可以登录服务器h2无需密码了。
小结登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub);
注意想让h1,h2,h3机相互之间无密码互登录,那么需要按照上面的步骤将每台机器的authorized_keys文件写入这三台机子公钥(包括本身机子的公钥)

四、安装SSH工具(三台)

使用SSH工具进行连接Linux服务器,后面的shell操作完全可以用SSH工具进行操作Linux。

三、配置hadoop(三台)

1.先下载0.20.2版本;
2.将下载好的hadoop安装文件hadoop-0.20.2.tar.gz用ftp文件上传到/home/username
3.创建/usr/local/hadoop目录,并解压hadoop-0.20.2.tar.gz/usr/local/hadoop目录;

$ cd /usr/local
$ mkdir hadoop
$ tar zxvf hadoop-0.20.2.tar.gz -C /usr/local/hadoop

4.把解压后得到的hadoop文件夹/usr/local/hadoop/hadoop-0.20.2分配读权限分配给hadoop用户,chown -R usrname:username hadoop-0.20.2/

$ chown -R usrname:username hadoop-0.20.2/

5.修改hadoop-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlmastersslaves(datanode不需要配置)文件配置,文件位于/usr/local/hadoop/hadoop-0.20.2/conf/目录内;
hadoop-env.sh文件配置:

$ cd /usr/local/hadoop/hadoop-0.20.2/conf
$ vi hadoop-env.sh
# The only required environment variable is JAVA_HOME.  All others are
# optional.  When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.
# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/usr/lib/jvm/java

添加export JAVA_HOME=/usr/lib/jvm/java(我们新装的JDK目录);
core-site.xml文件配置:

$ vi core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadooptmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://h1:9000</value>
</property>
</configuration>

新增<property></property>标签中的内容,其中h1namenode的IP,创建目录/usr/local/hadoop/hadooptmp
hdfs-site.xml文件配置:

$ vi hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

新增<property></property>标签中的内容,其中2datanode个数;
mapred-site.xml文件配置:

$ vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>h1:9001</value>
</property>
</configuration>

新增<property></property>标签中的内容,其中h1namenode的IP;
masters文件配置(namenode和datanode节点都需要配):

$ vi masters
master.hadoop.h1

添加namenode的IP(master.hadoop.h1);
slaves文件配置(只需namenode节点配置):

$ vi slaves
slave.hadoop.h2
slave.hadoop.h3

添加datanode的IP(slave.hadoop.h2、slave.hadoop.h3);

  • 格式化hadoop,启动hadoop
    注意:在启动前先要确定所有节点的防火墙是否关闭,输入
$ sudo service iptables status   #查看防火墙状态
$ sudo service iptables stop     #关闭防火墙,即时生效,重启后失效
$ sudo service iptables start    #打开防火墙,即时生效,重启后失效
$ sudo service iptables restart  #重启防火墙,即时生效,重启后失效
$ sudo chkconfig iptables off    #关闭防火墙,重启后永久生效
$ sudo chkconfig iptables on     #打开防火墙,重启后永久生效

或编辑 /etc/selinux/config文件,设置SELINUX=disabledsource /etc/selinux/config使配置立刻生效;
格式化hadoop:在namenode节点上执行hadoop namenode -format命令;

$ cd /usr/local/hadoop/hadoop-0.20.2/bin
$ ./hadoop namenode -format
14/12/29 23:32:45 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master.hadoop.h1/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
14/12/29 23:32:47 INFO namenode.FSNamesystem: fsOwner=yuanjian,yuanjian
14/12/29 23:32:47 INFO namenode.FSNamesystem: supergroup=supergroup
14/12/29 23:32:47 INFO namenode.FSNamesystem: isPermissionEnabled=true
14/12/29 23:32:47 INFO common.Storage: Image file of size 98 saved in 0 seconds.
14/12/29 23:32:47 INFO common.Storage: Storage directory /tmp/hadoop-yuanjian/dfs/name has been successfully formatted.
14/12/29 23:32:47 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master.hadoop.h1/127.0.0.1
************************************************************/

启动hadoop(终止命令为stop-all.sh)

$ cd /usr/local/hadoop/hadoop-0.20.2/bin
$ start-all.sh

检验hadoop启动情况(三台):master和slave输入jps命令,此命令是JDK自带命令,查看跟java有关的进程名称(master查看NameNode、JobTracker、SecondaryNameNode是否启动,slave查看DataNode、TaskTracker是否启动);

$ /usr/lib/jvm/java/bin/jps
20716 JobTracker
20512 NameNode
20859 Jps
20642 SecondaryNameNode

$ update-alternatives --install /usr/bin/jps jps /usr/lib/jvm/java/bin/jps 300
$ jps
20716 JobTracker
20512 NameNode
20859 Jps
20642 SecondaryNameNode

出现上面情况,表示namenode运行正常。
如果要直接使用hadoop命令,需要配置环境变量,具体步骤可以查看上面的环境变量配置步骤。
在网页上检查是否加入了新的datanode:在浏览器中输入http://IP:50070/,IP为namenode节点的IP,例如http://10.10.131.33:50070/
在网页上检查mapreduce的运行情况:在浏览器中输入http://IP:50030/,IPIP为namenode节点的IP,例如http://10.10.131.33:50030/

作者:元件
出处:http://www.cnblogs.com/yuanjian/

转载于:https://www.cnblogs.com/yuanjian/p/hadoop.html

hadoop 学习(1):搭建环境相关推荐

  1. 本科生学深度学习,搭建环境,再不入坑就晚了

    目录 1.目的 2.心理准备 3.IDE的选择 4.AI框架的选择 5.安装环境 6.总结 最近没怎么写游戏了,一直在写python,是因为我对深度学习感兴趣,想学习一下,同时也觉得AI是未来,所以去 ...

  2. hadoop学习5 搭建storm集群

    参阅: http://www.cnblogs.com/freeweb/p/5179410.html  非常感谢 注意集群的启动顺序以及概念. [root@master bin]# ./storm ui ...

  3. Hadoop学习之虚拟机环境配置,防火墙、selinux关闭、集群时间同步(LinuxcentOS7版本)

    目录​​​​​​​ 1. 镜像文件下载 2.Linux-centOS安装 第三步与第三步需在root用户下进行操作 3.虚拟机关闭防火墙 4.设置selinux 5.集群时间同步 1. 镜像文件下载 ...

  4. Android开发学习之路-环境搭建

    这里选择使用android studio 集成开发环境,因为as是google推出的单独针对android开发的环境,并且迭代周期很快,因此,肯定会替代eclipse成为andorid的开发环境.对于 ...

  5. 【大数据实战】Docker中Hadoop集群搭建

    目录 Docker中Hadoop集群搭建 环境 网络设置 安装docker 安装OpenSSH免密登录 Ansible安装 软件环境配置 配置hadoop运行所需配置文件 Hadoop 启动 问题 D ...

  6. Hadoop学习之整体介绍及环境搭建

    Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...

  7. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    大数据学习系列之八----- Hadoop.Spark.HBase.Hive搭建环境遇到的错误以及解决方法 参考文章: (1)大数据学习系列之八----- Hadoop.Spark.HBase.Hiv ...

  8. Hadoop学习笔记——入门教程(虚拟机安装LinuxHadoop环境搭建配置)

    文章目录 一.Hadoop安装配置文档及注意事项 二.Hadoop概述 2.1.Hadoop是什么 2.2.Hadoop的发展历史 2.3.Hadoop三大发行版本 2.3.1 Apache Hado ...

  9. Hadoop学习环境搭建

    Hadoop学习环境搭建 Apache Hadoop3.1.1虚拟机环境搭建 工具准备 安装虚拟机 Hadoop安装和配置 配置Hadoop001.Hadoop002.Hadoop003互相访问 配置 ...

  10. 大数据技术之Hadoop概述集群环境搭建常见错误解决等

    Hadoop概述 文章目录 Hadoop概述 1. Hadoop是什么 2. Hadoop发展历史 4. Hadoop的优势 5. Hadoop组成 6. 大数据技术生态体系 7. 推荐系统框架图略图 ...

最新文章

  1. SFTP命令基本使用
  2. 数学分析高等代数考研试题荟萃[更新至2017年10月1日]
  3. iOS动画开发----打分 数字滚动刷新动画
  4. 深入浅出说编译原理(一)
  5. leetcode 94
  6. Android之添加快捷方式(Shortcut)到手机桌面
  7. Mybatis源码阅读(一):Mybatis初始化1.3 —— 解析sql片段和sql节点
  8. lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
  9. 耗材领用登记系统php_实验室的试剂耗材管理为啥要实现系统管理?
  10. java求出遍历二叉树的路径,102. 二叉树的层序遍历
  11. 数学表达式3+(a+b)2对应的python表达式是_与数学表达式cd/2ab对应的Python表达式中,不正确的是:...
  12. 安装unity3d多个版本共存
  13. Python 3.7 pygame 下载方法
  14. wgs84坐标转换,地图拾取wgs84坐标工具推荐
  15. androidnbsp;框架构图
  16. 当逛书店成为一种怀旧
  17. 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
  18. 什么时候使用Redis缓存
  19. 开学了,献给就读IT相关专业的本科新生们
  20. 【面试题】:工人分金条问题

热门文章

  1. jsonarray转liast_fastjson List转JSONArray以及JSONArray转List
  2. Javascript基于对象基础
  3. hbuilder怎么做登录界面_新手会计不懂如何报税?一套标准网上报税流程演示,教你怎么纳税申报...
  4. 群同态基本定理证明_有限群的线性表示 | 表示与群代数
  5. java 控制 sortedset_Java集合的checkedSortedSet()方法和示例
  6. mysql完成未完成_MYSQL SQL模式 (未完成)
  7. c++exe程序在别人电脑上双击无法打开_你可能不知道的电脑软件打开方式总结!
  8. Docker 安装Node-Exporter+ Prometheus Server +Grafana
  9. ado.net mysql 连接池_ADO.NET中SQL Server数据库连接池
  10. anaconda和python都有_Anaconda和python有什么区别-Anaconda和python区别介绍