安装部署hadoop 伪分布集群。
实践:以hadoop44:192.168.10.40为例子
1、 安装jdk1.7
1)查看是否有jdk
#java –version
2)查看cent系统位数(64位):
#file /bin/ls
3)切换到根目录
#ls
#cd /
切换到usr目录:
#cd usr
4)创建java目录
#mkdir java
5)将下载好的jdk1.7上传到当前目录,使用rz命令上传文件
上传后使用#ls查看目录中是否有文件
对安装包进行解压:
#tar zxvf jdk-7u79-linux-x64.tar.gz
解压后ls查看文件
6)设置jdk环境变量
进入profile目录
# cd /etc/profile.d
新建java脚本设置jdk
#vi java.sh
在脚本中写目录设置:
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出
查看jdk是否配置成功
#java -version
使用source命令使修改的配置生效:
# source /etc/profile.d/java.sh
2、 修改hosts文件:本地ip:192.168.20.40
# vi /etc/hosts
添加ip与hostname对应关系
保存退出
3、 创建新的用户安装hadoop
1) 创建用户组hadoopgroup;
# groupadd hadoopgroup
2) 新建hadoopuser1用户并添加到hadoopgroup用户组中
# useradd -g hadoopgroup hadoopuser1
3) 给hadoop用户创建密码
#passwd hadoopuser1
输入密码:hadoop1 回车 再一次输入hadoop1回车即可
4、 安装hadoop,首先需要关闭防火墙
# service iptables status 查看状态
chkconfig iptables off
5、 SSH无密码验证配置
1) 首先切换到刚才创建的hadoopuser1用户:
#su hadoopuser1
#cd切换到根目录
然后可以看到用户是hadoopuser1@hadoop44,之前为root用户
创建.ssh目录
#mkdir .ssh
2) 创建秘钥
#ssh-keygen –t rsa
一直回车即可
3) 切换到刚才的.ssh目录查看
#cd .ssh
#ls
Id_rsa为私钥,id_rsa.pub为公钥
4) 复制公钥到认证文件中
#cp id_rsa.pub authorized_keys
#ls
#vi authorized_keys
5) 赋予权限 首先回到根目录
cd ..注意两个点和cd直接有空格
#chmod 700 .ssh
#chmod 600 .ssh/*
dsh赋予700权限。ssh内部为600权限
6) 访问host用户:
#ssh hadoop44
如果报错,可能是没有安装ssh插件,需要执行#yum –y install openssh-clients(在root目录下)
6、 SSH伪分布式安装
1) 需要切换到root目录下
# cd /usr/java
#su root
2) 在线下载hadoop
需要安装wget插件:
#yum –y install wget
#wget
3) 解压hadoop
# tar zxvf hadoop-2.2.0-x64.tar.gz
#ls查看文件
4) 修改文件名
#mv hadoop-2.2.0 hadoop
将hadoop-2.2.0修改为hadoop
修改为hadoop2.2方便后面区分,其实修改为hadoop比较方便
5) 将hadoop文件权限赋值为hadoops组下的hadoop用户
小知识:
命令chown
命令语法
chown [-R]账户名 文件名 或者 chown [-R] 账户名:组名 文件名命令描述
命令chown可以更改文件的所有者命令选项
-R 选项只适用目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件也全部更改。# chown -R hadoopuser1:hadoopgroup hadoop
# ls –l查看权限
6) hadoop数据目录—3个 以及授权
# mkdir -p /data/dfs/name
# mkdir -p /data/dfs/data
# mkdir -p /data/tmp
查看
# ls -l /data
查看看到data权限是root用户,
将hadoop下的data权限赋值为hadoops组下的hadoop用户
# chown -R hadoops:hadoop hadoop2.2 /data
,然后查看#ls –l /data 看到权限是hadoop用户了
7) 修改hadoop配置文件core-site.xml
#su hadoop 切换用户
#ls
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop44:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
保存退出
注意:此处不能保存,是因为权限问题,本人一开始因为授权的组合用户反了导致不能保存。
8) 修改hadoop配置文件hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
9) 修改hadoop配置文件mapred-site.xml文件,由于只有一个template文件,应该需要复制一个文件 使用
# cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
10)修改hadoop配置文件yarn-site.xml文件
#vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
11)修改hadoop配置文件slaves文件
#vi slaves.xml
指定哪个用户
12)修改hadoop环境变量,首先切换到root用户下面、
#su root 输入密码hadoop
#vi /etc/profile
HADOOP_HOME=/usr/java/hadoop
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH
#source /etc/profile
7、 测试运行
1) 格式化namenode,需要切换到hadoopuser1用户下:
#su hadoopuser1
#cd ..
#cd ..
#ls
#bin/hadoop namenode -format
2) 启动集群
#sbin/start-all.sh
其中本机调试时候出现了错误,是因为配置文件写错了,需要重新修改
重新到目录下修改好后启动集群:
8、 在window下配置hostname
1) 打开记事本,以管理员身份运行。
记事本-打开- C:\Windows\System32\drivers\etc\hosts文件(选择所有文件)
配置IP和虚拟机host名称
然后打开window浏览器输入:通过webui查看hadoop集群和文件系统的状态
http://hadoop44:50070/dfshealth.jsp
2) 测试文件,新增一个ceshi1.txt文件,里面随便输入一些字符。
查看hadoop下的fs文件目录,没有文件
#hadoop fs –ls /
创建一个目录songxiaomeiceshi
#Hadoop fs –mkdir /songxiaomeiceshi
# hadoop fs -put /usr/java/hadoop/ceshi1.txt /songxiaomeiceshi
使用以上命令将ceshi1文件放在刚刚创建的hadoop文件songxiaomeiceshi 目录下
#hadoop fs -ls /songxiaomeiceshi
3) Window中web页面打开:
点击running
目前没有正在运行的作业
执行hadoop自带的wordcount程序,然后可以在网页中点击running 以及finished查看结果
#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /songxiaomeiceshi/ceshi1.txt /hadoop44/wordcount-out
http://hadoop44:50070/dfshealth.jsp
其实前面执行
#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /songxiaomeiceshi/ceshi1.txt /hadoop44/wordcount-out
的时候可以将hadoop44改为songxiaomeiceshi,执行完结果放在同一目录下