一、hadoop安装与配置
准备环境:
系统:centos6.5 64位
192.168.211.129 master
192.168.211.131 slave1
在两台服务器上都要配置ssh免密码登录
在192.168.211.129上
vim /etc/hosts最后添加
192.168.211.129 master
192.168.211.131 slave1
在192.168.211.131上
vim /etc/hosts最后添加
192.168.211.129 master
192.168.211.131 slave1
主机ip:192.168.211.129(hostname: master)
ssh无密码登陆的远程机ip:192.168.211.131(hostname: slave1)
首先要修改master和slave1 的配置文件:
vi /etc/ssh/sshd_config
(要确保这些字符前无注释符号“#”)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PeimitEmptyPasswords yes
1.在本地机上输入命令: ssh-keygen -t rsa
2.接着一路按回车,默认情况下ssh生成的公密钥会被存储到目录/root/.ssh下(注意这个文件夹的权限为700),分别为id_rsa 和id_rsa.pub
3.在本地机上创建文件 authorized_keys(权限为600)
touch /root/.ssh/authorized_keys
并将公钥追加到authorized_keys文件中:
cat id_rsa.pub >> authorized_keys
4.修改文件夹/root/.ssh的权限:
(本地机和远程机都要修改)
chmod 700 /root/.ssh
5.修改文件的属性:
chmod 600 /root/.ssh/authorized_keys
6.将公钥复制到ip地址为192.168.211.131的远程机上:
ssh-copy-id -i /root/.ssh/id_rsa/pub root@192.168.211.131 (实践证明在传送公钥时,这个命令好于scp命令 )
笔者在输入命令时已经在远程主机上创建了文件夹如下:/root/.ssh/,并且,已经按上文修改了权限/.ssh (700)
7.在本地机master上执行命令:
ssh-add /root/.ssh/id_rsa
这个是为了将公钥添加进来。
8.重新启动ssh服务:
service sshd restart
9. 在本地主机上输入:
ssh slave1(回车)
即可登录到远程主机上了。
10.若要配置能在slave1上远程无密码登录master,只需做和master一样的操作即可:首先要修改主机和ssh连接到的远程机的配置文件:
11.在本地机上输入命令: ssh-keygen -t rsa
12.接着一路按回车,默认情况下ssh生成的公密钥会被存储到/root/.ssh这个文件夹下(注意这个文件夹的权限为700),分别为id_rsa 和id_rsa.pub
13.将公钥追加到authorized_keys文件中:
cat id_rsa.pub >> authorized_keys
14.修改文件的属性:
chmod 600 /root/.ssh/authorized_keys
15.将公钥复制到ip地址为192.168.211.129的master上:
ssh-copy-id -i /root/.ssh/id_rsa/pub root@192.168.211.129 (实践证明在传送公钥时,这个命令好于scp命令 )
16.重新启动ssh服务:
service sshd restart
17. 在本地主机上输入:
ssh master(回车)
即可登录到master上了。
master操作:
1、官网下载Hadoop hadoop-2.7.3.tar.gz(所有安装包在当前文件夹内都有)
2.安装ssh、rsync、Java1.7(Java1.7直接去官网下载rpm包,rpm安装即可)
我的网不好,我自己在百度云盘保存了一份java1.7.rpm。链接地址是:http://pan.baidu.com/s/1hs9l8by
3.在/home下新建文件夹hadoop,然后将hadoop-2.7.3.tar.gz上传至此文件夹下,使用tar命令解压
4.进入到目录/home/hadoop/hadoop-2.7.3/etc/hadoop中,修改相应配置,依次配置
hadoop-env.sh、yarn-env.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml 和 yarn-site.xml 共7个文件。
(1)、设置JAVA_HOME环境变量(我的JDK安装目录为/usr/java/latest(rpm默认的安装位置))
vi命令编辑hadoop-env.sh,找到相应位置修改如下:
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/latest
(2)、vi命令编辑yarn-env.sh,找到相应位置修改如下:
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/latest
(3)、编辑文件core-site.xml文件,指定默认文件系统和工作空间(现在路径下还没有tmp文件夹,执行完hdfs格式化后便可看到相关文件)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.211.129:9000</value>#指定默认文件系统,不要写localhost,namenode与datanode使用9000端口进行通信
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.2/tmp/</value>
#指定hadoop工作空间,也就是说master与slave的数据实际存放目录就是/home/hadoop/hadoop-2.7.2/tmp/
</property>
</configuration>
(4)、编辑文件etc/hadoop/hdfs-site.xml文件,设置文件副本数,文件副本数不要大于slave节点的实际数量,比如我这里只有一个slave1,所以文件副本数设置为1
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>#文件副本数
</property>
</configuration>
(5)、编辑文件etc/hadoop/mapred-site.xml文件,此文件其实不存在,而是存在mapred-site.xml.template,所以执行命令mv mapred-site.xml.template mapred-site.xml修改此文件名,来指定资源调度框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>#指定资源调度框架
</property>
</configuration>
(6)、编辑文件etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value> #这里的master也可以写成master的ip
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</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>
</configuration>
(7)、在master中编辑文件etc/hadoop/slaves,加入slave1的IP
192.168.211.131
为了保证稳定,最好写ip,一般情况下写主机名也可以
至此,master配置就完成了
slave1配置:
- slave1配置步骤的前4步与master的前4步是一模一样的,连配置的内容都是相同的。
- 2. slave1不配置/home/hadoop/hadoop-2.7.2/etc/hadoop/slaves文件,把该文件中的默认内容清空,让该文件为空即可。
配置完master与slave后,格式化hdfs系统
- 关闭master与slave1的防火墙
service iptables stop
setenforce 0
- hadoop命令一般在bin文件夹下,所以要执行相关命令要在bin目录下进行操作,为了以后方便,所以要先把hadoop的bin目录配置到环境变量中,还有些命令在sbin目录中,所以也要配置到环境变量
vim /etc/profile 在最后加入
export JAVA_HOME=/usr/java/latest export HADOOP_HOME=/home/hadoop/hadoop-2.7. export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后记得用命令source /etc/profile配置立即生效
(执行格式化前可以看到hadoop安装目录/home/hadoop/hadoop-2.7.2不存在tmp文件夹)
然后执行
hadoop namenode -format命令,会发现以前/home/hadoop/hadoop-2.7.2不存在tmp文件夹,现在已经有了
3.启动HDFS 命令start-all.sh(关闭是stop-all.sh)
启动完后用jps命令可以查看正在启动的java服务
[root@master hadoop-2.7.2]# jps
8428 SecondaryNameNode
9265 Jps
8235 NameNode
8582 ResourceManager
netstat -nltp命令查看所监听的端口
[root@localhost hadoop-2.7.2]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1100/rpcbind
tcp 0 0 127.0.0.1:58165 0.0.0.0:* LISTEN 2529/java
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 2435/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1313/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1190/cupsd
tcp 0 0 0.0.0.0:57815 0.0.0.0:* LISTEN 1118/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1389/master
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN 2529/java
tcp 0 0 0.0.0.0:50075 0.0.0.0:* LISTEN 2529/java
tcp 0 0 0.0.0.0:50020 0.0.0.0:* LISTEN 2529/java
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2435/java
tcp 0 0 0.0.0.0:50090 0.0.0.0:* LISTEN 2718/java
tcp 0 0 :::44046 :::* LISTEN 1118/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1100/rpcbind
tcp 0 0 :::22 :::* LISTEN 1313/sshd
tcp 0 0 ::1:631 :::* LISTEN 1190/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1389/master
NameNode和DataNode是通过9000端口通信的
验证:
在master上输入以下命令:
[root@master hadoop-2.7.2]# hdfs dfsadmin –report
Configured Capacity: 18965917696 (17.66 GB)
Present Capacity: 14551302144 (13.55 GB)
DFS Remaining: 14551277568 (13.55 GB)
DFS Used: 24576 (24 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
-------------------------------------------------
Live datanodes (1):
Name: 192.168.211.131:50010 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 18965917696 (17.66 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 4414615552 (4.11 GB)
DFS Remaining: 14551277568 (13.55 GB)
DFS Used%: 0.00%
DFS Remaining%: 76.72%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Apr 19 22:28:09 CST 2017
50070端口是提供检测hadoop的一个Web页面, 我的master ip是192.168.211.129,访问网址http://192.168.211.129:50070/ 可查看效果
到此master与slave已经配置并启动完了。
测试存放文件
在master上执行以下命令,将文件/jdk-7u80-linux-x64.rpm存放到集群中
[root@master hadoop-2.7.2]#hadoop fs -put /jdk-7u80-linux-x64.rpm hdfs://192.168.211.129:9000/
注意下划线“/”一定要写全了。
[root@master hadoop-2.7.2]# hadoop fs -ls /
Found 1 items
-rw-r--r-- 1 root supergroup 138090286 2017-04-19 22:48 /jdk-7u80-linux-x64.rpm
可以看到文件已经存放到集群上了
在master上可以看到文件实际并没有存放在master上,而是存放在slave1上。
[root@master hadoop-2.7.2]# ll /home/hadoop/hadoop-2.7.2/tmp/dfs/name/current/
总用量 1052
-rw-r--r--. 1 root root 42 4月 19 22:28 edits_0000000000000000001-0000000000000000002
-rw-r--r--. 1 root root 1048576 4月 19 22:48 edits_inprogress_0000000000000000003
-rw-r--r--. 1 root root 351 4月 19 22:26 fsimage_0000000000000000000
-rw-r--r--. 1 root root 62 4月 19 22:26 fsimage_0000000000000000000.md5
-rw-r--r--. 1 root root 351 4月 19 22:28 fsimage_0000000000000000002
-rw-r--r--. 1 root root 62 4月 19 22:28 fsimage_0000000000000000002.md5
-rw-r--r--. 1 root root 2 4月 19 22:28 seen_txid
-rw-r--r--. 1 root root 207 4月 19 22:26 VERSION
在slave1上查看:
[root@slave1 hadoop-2.7.2]# ll /home/hadoop/hadoop-2.7.2/tmp/dfs/data/current/BP-293326079-192.168.211.129-1492611998445/current/finalized/subdir0/subdir0/
总用量 135916
-rw-r--r--. 1 root root 134217728 4月 19 22:48 blk_1073741825
-rw-r--r--. 1 root root 1048583 4月 19 22:48 blk_1073741825_1001.meta
-rw-r--r--. 1 root root 3872558 4月 19 22:48 blk_1073741826
-rw-r--r--. 1 root root 30263 4月 19 22:48 blk_1073741826_1002.meta
可以看到,标记为蓝色的两行即为存放的文件,它已经被分成了两部分存放。
附加:
Hadoop 添加删除Slave
添加新节点
新机器配置完之后,slave和datanode-allow.list文件加入该主机名。
该节点上启动进程:
hadoop-daemon.sh start datanode
以下文件是访问控制列表,一般不写也行
在hdfs-site.xml文件中添加如下配置:
<property>
<name>dfs.hosts</name>
<value> /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-allow.list</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value> /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-deny.list</value>
</property>
这两个文件分别是允许Slave连接Namenode的列表和拒绝连接的列表,默认是没有的,需要手动创建。
cat /home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-allow.list
192.168.211.132
/home/hadoop/hadoop-2.7.2/etc/hadoop/datanode-deny.list
没有要删除的,写为空文件即可。
删除节点
在对应目录下新建datanode-deny.list文件,内容为需要删除的Slave的主机名或ip,一行一个。
执行命令重新读取配置:
hdfs dfsadmin -refreshNodes
使用
hdfs dfsadmin -report
可以看到该节点会处于Decommission Status : Decommission in progress的状态。
等待数据迁移完成之后,该状态变为Decommission Status : Decommissioned。
在该节点上停止进程:
hadoop-daemon.sh stop datanode
删除slaves文件中的对应主机名即可。
注意,副本数量要小于或者等于正常节点的数量,否则删除失败
重新添加删除的节点
在slaves文件添加对应主机名,删除datanode-deny.list对应的主机名
执行命令:
hdfs dfsadmin -refreshNodes
在该节点上启动进程:
hadoop-daemon.sh start datanode
添加新节点
新机器配置完之后,slave和datanode-allow.list文件加入该主机名。
该节点上启动进程:
hadoop-daemon.sh start datanode
一、hadoop安装与配置的更多相关文章
- [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
- Hadoop集群--linux虚拟机Hadoop安装与配置、克隆虚拟机
Hadoop集群 第四章 Hadoop安装与配置.克隆虚拟机 一.Hadoop安装与配置 1.将hadoop安装包通过Xftp传输到虚拟机的/software目录下 2.进入/software目录下, ...
- spark学习(2)--hadoop安装、配置
环境: 三台机器 ubuntu14.04 hadoop2.7.5 jdk-8u161-linux-x64.tar.gz (jdk1.8) 架构: machine101 :名称节点.数据节点.Secon ...
- Hadoop安装与配置
Hadoop介绍 上面是官方介绍,翻一下来总结一句话就是:Hadoop是一个高可用,用于分布式处理大规模计算的工具. Hadoop1.2 下载 . Hadoop1.2 安装 1. 安装jDK 2. 配 ...
- 五十九.大数据、Hadoop 、 Hadoop安装与配置 、 HDFS
1.安装Hadoop 单机模式安装Hadoop 安装JAVA环境 设置环境变量,启动运行 1.1 环境准备 1)配置主机名为nn01,ip为192.168.1.21,配置yum源(系统源) 备 ...
- hadoop安装及配置入门篇
声明: author: 龚细军 时间: -- 类型: 笔记 转载时请注明出处及相应链接. 链接地址: http://www.cnblogs.com/gongxijun/p/5726024.html 本 ...
- Hadoop安装及配置
一.系统及软件环境 1.操作系统 CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 master.fansik.com:192.168.83. ...
- hadoop安装和配置
这里只是涉及了hadoop的一些思路,所以完全分布式配置文件并没有哦!以后会把详细的配置过程和使用环境补充在另外一篇博客中 hadoop的安装: --------------------------- ...
- cdh版本的hadoop安装及配置(伪分布式模式) MapReduce配置 yarn配置
安装hadoop需要jdk依赖,我这里是用jdk8 jdk版本:jdk1.8.0_151 hadoop版本:hadoop-2.5.0-cdh5.3.6 hadoop下载地址:链接:https://pa ...
随机推荐
- kali linux之wireshark/tcpdump
抓包嗅探协议分析,必备技能,抓包引擎(linux---libpcap9 windows-----winpcap10) 解码能力优秀 常见协议包 数据包的分层i协议 arp icmp tcp--三次 ...
- luoguP4735 最大异或和
https://www.luogu.org/problemnew/show/P4735 令 s 数组为 a 数组的异或前缀,则题目要求的式子可变为 s[p - 1] ^ s[n] ^ x,s[n] ^ ...
- GitHub CEO:GitHub 十年,感谢有你
简评:不知为何,总感觉 GitHub 成立不止 10 年了,你们有这种错觉么? 本文是 GitHub 联合创始人兼 CEO:Chris Wanstrath 在计算机世界杂志写的文章. 当我们回顾 Gi ...
- I/O(输入/输出)---字节流与字符流
流: 分为输入流和输出流,输入/输出是相对计算机内存来说的,数据输入到内存是输入流,数据从内存中输出是输出流. 流对象构造的时候会和数据源联系起来. 数据源分为:源数据源和目标数据源.输入流联系的是源 ...
- IK分词器原理与源码分析
原文:http://3dobe.com/archives/44/ 引言 做搜索技术的不可能不接触分词器.个人认为为什么搜索引擎无法被数据库所替代的原因主要有两点,一个是在数据量比较大的时候,搜索引擎的 ...
- 谈谈php中抽象类和接口的区别
php中抽象类和接口的区别 1) 概念 面向对象的三大概念:封装,继承,多态 把属性和方法封装起来就是类. 一个类的属性和方法被另外的类复制就是继承,PHP里面的任何类都可以被继承,被继 ...
- 8、C++指针和自由存储空间
8.C++指针和自由存储空间 计算机程序在存储数据时必须跟踪3中基本属性. 信息存储在何处 存储的值为多少 存储信息是什么类型. 指针是 一个变量,其存储的是值得内存地址 对于常规变量的地址,只需要对 ...
- stiff chemistry模型出现NaN错误
通过定位可以看到,是usr_rates.f中出现了奇异值,因为我的代码中有这样一句话: 而同时我的ConH2在声明后没有赋初值,因此,当X_g(IJK,H2) < c_Limiter后,ConH ...
- ABP项目后台初始化数据库
设置host为启动项,并修改连接字符串 在程序包管理控制台中,默认项目选中EFCore 执行Update-Database命令
- QDU_组队训练(AJFC)
A - Pretty Matrix DreamGrid's birthday is coming. As his best friend, BaoBao is going to prepare a g ...