1 因为hadoop是基于java的,所以要保证hadoop能找到在本地系统中大路径,即正确设置java的环境变量。
详细请看:linux 安装配置jdk
2 到官网:http://www.apache.org/dyn/closer.cgi/hadoop/common/ 下载hadoop,
这里我选择hadoop1.0.4
3 解压到 /usr/local
tar -xvf hadoop-1.0.4.tar.gz
4 设置hadoop环境变量,为了使环境变量永久有效并对所有用户有效,我们将下面两句添加到/etc/profile
export HADOOP_HOME=/usr/local/hadoop-1.0.4
export PATH=$PATH:$HADOOP_HOME/bin
5 验证hadoop是否可以运行
hadoop version
ok, 安装成功!(?不算安装吧,哈哈)
二、配置伪分布式模式
根据上面步骤安装成功后,hadoop处于独立模式即本机模式,在本机模式下,没有运行守护进程,所有程序运行在单个JVM上。本机模式用于开发阶段测试调试MapReduce程序。伪分布模式用于在本机上模拟一个小规模的集群,全分布模式配置较为复杂,留作后面的文章。
1 配置hadoop
(1) 修改core-site.xml,设置namenode主机及hadoop文件系统
(2) 修改hdfs-site.xml,设置数据块副本数目
(3) 修改mapred-site.xml,设置jobtracker主机及端口
(4)修改hadoop-env.sh,设置JAVA_HOME
在hadoop-env.sh中添加,本机中jdk路径
export JAVA_HOME=/usr/local/jdk1.7.0
2 配置SSH
(1)如果没有安装SSH,安装之:sudo apt-get install ssh
一般情况下,ubuntu默认安装openssh-client,但没有安装server,我们需要先安装server:
sudo apt-get install openssh-server
(2)基于空口令创建一个新的SSH密钥,启用无密码登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(3)测试连接是否成功:
ssh localhost
3 格式化HDFS文件系统以创建一个空大文件系统
hadoop namenode -format
4 启动守护系统HDFS和MapReduce
start-dfs.sh
start-mapred.sh
5 查看守护进程启动情况
jps
如果显示:
10716 DataNode
11305 Jps
10938 SecondaryNameNode
10503 NameNode
11037 JobTracker
11251 TaskTracker
ok, hadoop伪分布模式配置成功!
在linux上安装配置hadoop
首先是测试环境还是真实环境
测试的则是伪分布式,真实环境则是完全分布式
0.关闭防火墙
service iptables start;#立即开启防火墙,但是重启后失效。
service iptables stop;#立即关闭防火墙,但是重启后失效。
重启后生效
chkconfig iptables on;#开启防火墙,重启后生效
chkconfig iptables off;#关闭防火墙,重启后生效
1.配置主机名
!!!!!注意安装hadoop的集群主机名不能有下划线!!不然会找不到主机!无法启动!
配置主机名
$vi /etc/sysconfig/network
$source /etc/sysconfig/network
例如:
networking=yes
hostname=hadoop01
2.配置hosts
vi /etc/hosts
填入以下内容
127.0.0.1 hadoop01
其他主机和ip对应信息。。。
3.配置面密码互通
生成自己的公钥和私钥,生成的公私钥将自动存放在/root/.ssh目录下。
$ ssh-keygen
把生成的公钥copy到远程机器上
$ ssh-copy-id [user]@[host]
此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。
$ ssh [host]
通过此命令远程连接,检验是否可以不需密码连接
4.安装jdk
通过fz将jdk安装包上传
解压安装包
tar -zxvf [jdk安装包位置]
配置环境变量
修改profile -- 这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
vim /etc/profile
在文件行尾加入配置后保存退出
export java_home=/home/app/jdk1.7.0_45/
export path=$path:$java_home/bin
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $java_home
java -version
5.安装hadoop
通过fz将hadoop安装包上传到linux
解压安装包
tar -zxvf [hadoop安装包位置]
6.配置hadoop
(1)修改 hadoop-env.sh
通过vim打开
vim [hadoop]/etc/hadoop/hadoop-env.sh
主要是修改java_home的路径
在hadoop-env.sh的第27行,把export java_home=${java_home}修改成具体的路径
重新加载使修改生效
source hadoop-env.sh
(2)修改 core-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/core-site.xml
增加namenode配置、文件存储位置配置
(3)修改 hdfs-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/hdfs-site.xml
配置包括自身在内的备份副本数量。
(4)修改 mapred-site.xml
说明:在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个
cp mapred-site.xml.template mapred-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/mapred-site.xml
配置mapreduce运行在yarn上
(5)修改 yarn-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/yarn-site.xml
配置
(6)修改 slaves
(7)配置hadoop的环境变量
vim /etc/profile
export hadoop_home=/home/park/work/hadoop-2.5.2/
export path=$path:$hadoop_home/sbin:$hadoop_home/bin
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $hadoop_home
(8)重启linux
$reboot
????为什么需要重启配置文件才起作用?原因不明????
(8)格式化namenode
进入 hadoop/bin 输入命令格式化namenode
hadoop namenode -format(hdfs namenode -format 以前的方式)
在格式化的时候,会有这样的输出:
storage directory /tmp/hadoop-root/dfs/name has been successfully formatted
7.启动hadoop
在/home/app/hadoop-2.6.0/sbin目录下
$start-all.sh
8.关闭hadoop
在/home/app/hadoop-2.6.0/sbin目录下
$stop-all.sh
9.hdfs命令
hadoop fs -mkdir /user/trunk
hadoop fs -ls /user
hadoop fs -lsr /user (递归的)
hadoop fs -put test.txt /user/trunk
hadoop fs -put test.txt . (复制到hdfs当前目录下,首先要创建当前目录)
hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最后1000字节)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的帮助文档)
10.通过浏览器访问hadoop管理页面
http://[server_ip]:50070
**如果访问不了有可能是服务器50070端口被关闭了。通过如下方式打开50070端口:
service iptables status #查询防火墙状态
service iptables start #开启防火墙
iptables -i input -p tcp --dport 80 -j accept #开通特定端口
iptables -i input -p tcp --dport 80 -j drop #关闭特定端口
service iptables save #保存配置
service iptables restart #重启防火墙