hadoop 学习(1):搭建环境
环境搭建
- 安装虚拟机:VMware Workstation10。
- 安装配置Linux :CentOS 6.6,完全分布式模式需要至少3个节点,这里需要安装3个Linux系统来虚拟出这3个节点。
- 安装SSH工具:Windows下可以使用SecureCRT、putty、Xshell等ssh client程序,作用是用来远程连接Linux服务器。
配置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.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves(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>
标签中的内容,其中h1为namenode的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>
标签中的内容,其中2为datanode个数;
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>
标签中的内容,其中h1为namenode的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=disabled,source /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.目的 2.心理准备 3.IDE的选择 4.AI框架的选择 5.安装环境 6.总结 最近没怎么写游戏了,一直在写python,是因为我对深度学习感兴趣,想学习一下,同时也觉得AI是未来,所以去 ...
- hadoop学习5 搭建storm集群
参阅: http://www.cnblogs.com/freeweb/p/5179410.html 非常感谢 注意集群的启动顺序以及概念. [root@master bin]# ./storm ui ...
- Hadoop学习之虚拟机环境配置,防火墙、selinux关闭、集群时间同步(LinuxcentOS7版本)
目录 1. 镜像文件下载 2.Linux-centOS安装 第三步与第三步需在root用户下进行操作 3.虚拟机关闭防火墙 4.设置selinux 5.集群时间同步 1. 镜像文件下载 ...
- Android开发学习之路-环境搭建
这里选择使用android studio 集成开发环境,因为as是google推出的单独针对android开发的环境,并且迭代周期很快,因此,肯定会替代eclipse成为andorid的开发环境.对于 ...
- 【大数据实战】Docker中Hadoop集群搭建
目录 Docker中Hadoop集群搭建 环境 网络设置 安装docker 安装OpenSSH免密登录 Ansible安装 软件环境配置 配置hadoop运行所需配置文件 Hadoop 启动 问题 D ...
- Hadoop学习之整体介绍及环境搭建
Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
大数据学习系列之八----- Hadoop.Spark.HBase.Hive搭建环境遇到的错误以及解决方法 参考文章: (1)大数据学习系列之八----- Hadoop.Spark.HBase.Hiv ...
- Hadoop学习笔记——入门教程(虚拟机安装LinuxHadoop环境搭建配置)
文章目录 一.Hadoop安装配置文档及注意事项 二.Hadoop概述 2.1.Hadoop是什么 2.2.Hadoop的发展历史 2.3.Hadoop三大发行版本 2.3.1 Apache Hado ...
- Hadoop学习环境搭建
Hadoop学习环境搭建 Apache Hadoop3.1.1虚拟机环境搭建 工具准备 安装虚拟机 Hadoop安装和配置 配置Hadoop001.Hadoop002.Hadoop003互相访问 配置 ...
- 大数据技术之Hadoop概述集群环境搭建常见错误解决等
Hadoop概述 文章目录 Hadoop概述 1. Hadoop是什么 2. Hadoop发展历史 4. Hadoop的优势 5. Hadoop组成 6. 大数据技术生态体系 7. 推荐系统框架图略图 ...
最新文章
- SFTP命令基本使用
- 数学分析高等代数考研试题荟萃[更新至2017年10月1日]
- iOS动画开发----打分 数字滚动刷新动画
- 深入浅出说编译原理(一)
- leetcode 94
- Android之添加快捷方式(Shortcut)到手机桌面
- Mybatis源码阅读(一):Mybatis初始化1.3 —— 解析sql片段和sql节点
- lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
- 耗材领用登记系统php_实验室的试剂耗材管理为啥要实现系统管理?
- java求出遍历二叉树的路径,102. 二叉树的层序遍历
- 数学表达式3+(a+b)2对应的python表达式是_与数学表达式cd/2ab对应的Python表达式中,不正确的是:...
- 安装unity3d多个版本共存
- Python 3.7 pygame 下载方法
- wgs84坐标转换,地图拾取wgs84坐标工具推荐
- androidnbsp;框架构图
- 当逛书店成为一种怀旧
- 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 什么时候使用Redis缓存
- 开学了,献给就读IT相关专业的本科新生们
- 【面试题】:工人分金条问题
热门文章
- jsonarray转liast_fastjson List转JSONArray以及JSONArray转List
- Javascript基于对象基础
- hbuilder怎么做登录界面_新手会计不懂如何报税?一套标准网上报税流程演示,教你怎么纳税申报...
- 群同态基本定理证明_有限群的线性表示 | 表示与群代数
- java 控制 sortedset_Java集合的checkedSortedSet()方法和示例
- mysql完成未完成_MYSQL SQL模式 (未完成)
- c++exe程序在别人电脑上双击无法打开_你可能不知道的电脑软件打开方式总结!
- Docker 安装Node-Exporter+ Prometheus Server +Grafana
- ado.net mysql 连接池_ADO.NET中SQL Server数据库连接池
- anaconda和python都有_Anaconda和python有什么区别-Anaconda和python区别介绍