Hadoop的安装与配置
一、准备环境:
系统:centos6.5 64位
192.168.1.61 master
192.168.1.5 slave
二、在两台服务器上都要配置ssh免密码登录
在192.168.1.61 上
vim /etc/hosts最后添加
192.168.1.61 master
192.168.1.5 slave
在192.168.1.5 上
vim /etc/hosts最后添加
192.168.1.61 master
192.168.1.5 slave
重要:无论master还是slave都不要在该文件的127.0.0.1后面填写 master 或者 slave
当然两台机器都要修改hostname
接下来修改master和slave1 的配置文件
vim /etc/ssh/sshd_config
(要确保这些字符前无注释符号“#”)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PeimitEmptyPasswords yes
修改后重启sshd服务,执行 service sshd restart
到这里免密码登陆的准备工作做完了,接下来是真正的做了:
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.1.5的远程机上:
ssh-copy-id -i /root/.ssh/id_rsa/pub root@192.168.1.5 (实践证明在传送公钥时,这个命令好于scp命令 )
笔者在输入命令时已经在远程主机上创建了文件夹如下:/root/.ssh/,并且,已经按上文修改了权限/.ssh (700)
7.在本地机master上执行命令:
ssh-add /root/.ssh/id_rsa
这个是为了将公钥添加进来。
8. 在本地主机上输入:
ssh slave(回车)
即可登录到远程主机上了。
到这里从master到slave的免密码登陆就做好了;对于slave到master的免密码登陆其实都是一样的只是某些东西变化一下,这里不做详细的叙说。
三、hadoop 的配置
到了这里就是重头戏了,前面的一切都是为这里做铺垫。
首先在master上进行操作:
1、官网下载Hadoop
hadoop-2.7.3.tar.gz
我这里有一份从官网下载好的(在X国从hadoop官网下载速度好慢的,原因都懂。。。),这里是百度云盘分享:http://pan.baidu.com/s/1hsNzzUW
我下载的这个包是无需进行编译安装的,解压后配置一下就可以用。
2.安装rsync、Jdk1.8
我配置的是163的开源 ,从163下载XXX.repo文件放在该放的repo目录下就可以用,在 /etc/yum.repos.d/ 目录下:
执行:wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
配置好后,直接执行:
yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel
我这里的jdk安装后存放的目录是:
/usr/lib/jvm/java-1.8.0-openjdk.x86_64
这个目录后面配置hadoop时候有用
这样jdk也配置完成了
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)编辑hadoop-env.sh,找到相应位置修改如下:
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
(2)编辑yarn-env.sh,找到相应位置修改如下:
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
(3)编辑文件core-site.xml文件,指定默认文件系统和工作空间(现在路径下还没有tmp文件夹,执行完hdfs格式化后便可看到相关文件)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.61:9000</value>#指定默认文件系统,不要写localhost,namenode与datanode使用9000端口进行通信
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.3/tmp/</value>#指定hadoop工作空间,也就是说master与slave的数据实际存放目录就是/home/hadoop/hadoop-2.7.3/tmp/
</property>
</configuration>
(4)编辑文件etc/hadoop/hdfs-site.xml文件,设置文件副本数,文件副本数不要大于slave节点的实际数量,比如我这里只有一个slave,所以文件副本数设置为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
<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>
</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,加入slave的IP,我这里本机不作为datanode所以将默认其中的localhost去掉( 为了保证稳定,最好写ip,一般情况下写主机名也可以)
192.168.1.5
至此,master配置就完成了
5.slave配置:
(1)slave配置步骤与master的是“一模一样”的,连配置的内容都是“相同的”。
(2)slave不配置/home/hadoop/hadoop-2.7.3/etc/hadoop/slaves文件,把该文件中的默认内容清空,让该文件为空即可。
(3)配置完master与slave后,格式化hdfs系统
关闭master与slave的防火墙与selinux
service iptables stop setenforce 0
hadoop命令一般在bin文件夹下,所以要执行相关命令要在bin目录下进行操作,为了以后方便,所以要先把hadoop的bin目录配置到环境变量中,还有些命令在sbin目录中,所以也要配置到环境变量
vim /etc/profile 在最后加入
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64 export HADOOP_HOME=/home/hadoop/hadoop-2.7.3 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后记得用命令source /etc/profile配置立即生效
然后执行 格式化在两台机器上都需要执行:(我不确定是否需要在两台机器上都执行,反正我都执行了,应该只是在namenode上执行的,不确定。。。)
hadoop namenode -format
会发现以前/home/hadoop/hadoop-2.7.3不存在tmp文件夹,现在已经有了
然后启动HDFS 命令start-all.sh(关闭是stop-all.sh)
启动完后用jps命令可以查看正在启动的java服务
master上面:
[root@master current]# jps
49971 ResourceManager
49817 SecondaryNameNode
70509 Jps
49615 NameNode
slave上面:
[root@slave hadoop-2.7.3]# jps
114897 NodeManager
128657 Jps
114770 DataNode
netstat -nltp命令查看所监听的端口
master上:
[root@master current]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.1.61:9000 0.0.0.0:* LISTEN 49615/java
tcp 0 0 0.0.0.0:50090 0.0.0.0:* LISTEN 49817/java
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2037/rpcbind
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 49615/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 63365/sshd
tcp 0 0 0.0.0.0:35126 0.0.0.0:* LISTEN 2094/rpc.statd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2139/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2579/master
tcp 0 0 ::ffff:192.168.1.61:8030 :::* LISTEN 49971/java
tcp 0 0 ::ffff:192.168.1.61:8032 :::* LISTEN 49971/java
tcp 0 0 ::ffff:192.168.1.61:8033 :::* LISTEN 49971/java
tcp 0 0 ::ffff:192.168.1.61:8035 :::* LISTEN 49971/java
tcp 0 0 :::52297 :::* LISTEN 2094/rpc.statd
tcp 0 0 :::111 :::* LISTEN 2037/rpcbind
tcp 0 0 :::22 :::* LISTEN 63365/sshd
tcp 0 0 ::1:631 :::* LISTEN 2139/cupsd
tcp 0 0 ::ffff:192.168.1.61:8088 :::* LISTEN 49971/java
tcp 0 0 ::1:25 :::* LISTEN 2579/master
slave上:
[root@slave hadoop-2.7.3]# netstat -tnlp
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:50020 0.0.0.0:* LISTEN 114770/java
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1990/rpcbind
tcp 0 0 127.0.0.1:60369 0.0.0.0:* LISTEN 114770/java
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 3006/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 44239/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2090/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2746/master
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN 114770/java
tcp 0 0 0.0.0.0:47194 0.0.0.0:* LISTEN 2047/rpc.statd
tcp 0 0 0.0.0.0:50075 0.0.0.0:* LISTEN 114770/java
tcp 0 0 :::8040 :::* LISTEN 114897/java
tcp 0 0 :::8042 :::* LISTEN 114897/java
tcp 0 0 :::3306 :::* LISTEN 2555/mysqld
tcp 0 0 :::33807 :::* LISTEN 2047/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1990/rpcbind
tcp 0 0 :::22 :::* LISTEN 44239/sshd
tcp 0 0 ::1:631 :::* LISTEN 2090/cupsd
tcp 0 0 ::1:25 :::* LISTEN 2746/master
tcp 0 0 :::13562 :::* LISTEN 114897/java
tcp 0 0 :::38395 :::* LISTEN 114897/java
NameNode和DataNode是通过9000端口通信的
验证:
可以查看 hadoop 相关信息的:http://192.168.1.61:50070/ 这里是master的ip
也在master上输入以下命令:
[root@master hadoop]# hdfs dfsadmin -report
Configured Capacity: 18645180416 (17.36 GB)
Present Capacity: 9070198784 (8.45 GB)
DFS Remaining: 9069195264 (8.45 GB)
DFS Used: 1003520 (980 KB)
DFS Used%: 0.01%
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.1.5:50010 (slave)
Hostname: slave
Decommission Status : Normal
Configured Capacity: 18645180416 (17.36 GB)
DFS Used: 1003520 (980 KB)
Non DFS Used: 9574981632 (8.92 GB)
DFS Remaining: 9069195264 (8.45 GB)
DFS Used%: 0.01%
DFS Remaining%: 48.64%
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 May 03 17:32:37 PDT 2017
到此master与slave已经配置并启动完了。
测试存放文件
在master上执行以下命令,将文件nginx-1.4.7.tar.gz放到hdfs中:
hdfs dfs -put nginx-1.4.7.tar.gz hdfs://192.168.1.61:9000/
或者执行:
hdfs dfs -put nginx-1.4.7.tar.gz /
或者执行:
hadoop fs -put nginx-1.4.7.tar.gz /
注意下划线“/”一定要写全了。
执行完成后,可以执行:
[root@slave hadoop-2.7.3]# hdfs dfs -ls hdfs://192.168.1.61:9000/
Found 1 items
-rw-r--r-- 1 root supergroup 769153 2017-05-02 18:19 hdfs://192.168.1.61:9000/nginx-1.4.7.tar.gz
可以看到上面已经存放好文件了,总之有很多的方法。
在master上可以看到文件实际并没有存放在master上,而是存放在slave上。
在slave上执行:
[root@slave current]# ll /home/hadoop/hadoop-2.7.3/tmp/dfs/data/current
total 8
drwx------. 4 root root 4096 May 2 17:46 BP-1625492901-127.0.0.1-1493770785307
-rw-r--r--. 1 root root 229 May 2 17:46 VERSION
可以对BP-1625492901-127.0.0.1-1493770785307进行 解压
执行 tar -xvf BP-1625492901-127.0.0.1-1493770785307
发现解压后的文件还是nginx-1.4.7
hadoop还有一个特性,就是文件超过一定大小时候,会进行分片存放,这里我没有详细研究。
到这里一个最最最基本的hadoop就出来了。
Hadoop的安装与配置的更多相关文章
- hadoop的安装和配置(三)完全分布式模式
博主会用三篇文章为大家详细说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 完全分布式模式: 前面已经说了本地模式和伪分布模式,这两种在hadoop的应用中并不用于实际,因为几乎没人会 ...
- hadoop的安装和配置(二)伪分布模式
博主会用三篇文章为大家详细的说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 伪分布式模式: 这篇为大家带来hadoop的伪分布模式: 从最简单的方面来说,伪分布模式就是在本地模式上修 ...
- Ubuntu下伪分布式模式Hadoop的安装及配置
1.Hadoop运行模式Hadoop有三种运行模式,分别如下:单机(非分布式)模式伪分布式(用不同进程模仿分布式运行中的各类节点)模式完全分布式模式注:前两种可以在单机运行,最后一种用于真实的集群环境 ...
- Hadoop(2)-CentOS下的jdk和hadoop的安装与配置
准备工作 下载jdk8和hadoop2.7.2 使用sftp的方式传到hadoop100上的/opt/software目录中 配置环境 如果安装虚拟机时选择了open java,请先卸载 rpm -q ...
- Linux中Hadoop的安装与配置
一.准备 1,配通网络 ping www.baidu.com 之前安装虚拟机时配过 2,关闭防火墙 systemctl stop firewalld systemctl disable firewal ...
- ubuntu在虚拟机下的安装 ~~~ Hadoop的安装及配置 ~~~ Hdfs中eclipse的安装
前言 Hadoop是基于Java语言开发的,具有很好跨平台的特性.Hadoop的所要求系统环境适用于Windows,Linux,Mac系统,我们推荐选择使用Linux或Mac系统.而Linux系统则 ...
- Hadoop单机版安装,配置,运行
Hadoop是最近非常流行的东东啦,但是乍一看都觉得是集群的东东,其实在单机版上安装Hadoop也是可以的,并且安装好以后可以很方便的进行程序的调试,调试好程序以后再丢到集群中,放心的算吧,呵呵.. ...
- hadoop的安装和配置(一)本地模式
博主会用三篇文章来为大家详细的说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 本地模式: 思路走向 |--------------------| | ①:配置Java环境 | | ...
- Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)
一.准备 1.1创建hadoop用户 $ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell $ sudo pass ...
- Mac Hadoop的安装与配置
这里介绍Hadoop在mac下的安装与配置. 安装及配置Hadoop 首先安装Hadoop $ brew install Hadoop 配置ssh免密码登录 用dsa密钥认证来生成一对公钥和私钥: $ ...
随机推荐
- Runnable、Callable、Future和FutureTask之一:基本用法
Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线程编程简单直接.但正如之前提到过的,Thre ...
- Http工作过程
一次HTTP操作称为一个事务,其工作整个过程如下: 1 ) .地址解析, 如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm 从中分解出协议名.主机名 ...
- npm、nvm、nrm
随着前端技术的不断更新和发展,nodejs也越来越流行,作为一个web developer,要安装的依赖包.工具库也越来越多,所以npm几乎是所有前端开发者所必须要用到的,我在工作中曾经遇到过这样的问 ...
- stdin和STDIN_FILENO的区别
STDIN_FILENO与stdin的区别: STDIN_FILENO: 1).数据类型:int 2).层次:系统级的API,是一个文件句柄,定义在<unistd.h>中. 3).相应的函 ...
- Windows注册表各个作用
与注册表有关的术语1.注册表:是一个树状分层的数据库(如图).从物理上讲,它是System.dat和User.dat两个文件;从逻辑上讲,它是用户在注册表编辑器中看到的配置数据.2.HKEY :“根键 ...
- AngularJS入门之如何快速上手
概述: AngularJS(ng)是一个纯JS框架,AngularJS易于构建CRUD应用(CRUD意思是增删改查) 适用于以数据操作为主的SPA(Single Page Application) ...
- hadoop block大小为128的原因
1.减轻了namenode的压力 原因是hadoop集群在启动的时候,datanode会上报自己的block的信息给namenode.namenode把这些信息放到内存中.那么如果块变大了,那么nam ...
- elasticsearch(4) 安装 (两台)
环境: centos7 jdk8 elasticsearch1.7.1 安装JDK 确认现有JDK版本 # java –version 安装以及配置环境变量 # tar zxvf jdk-8u6 ...
- JavaScript的运算符
一.什么是表达式??? 是ECMScript中的一个短语,解释器可以通过计算把它转成一个值,最简单的表达式是字面量或者变量名,单一字面量和组合字面量统称为表达式. 二.一元运算符 1.delete 运 ...
- Reporting services
“数据库引擎服务”可以承载报表服务器数据库.Reporting Services 需要SQL Server 2008 数据库引擎的本地或远程实例来承载报表服务器数据库.如果同时安装数据库引擎实例和 R ...