在老师的帮助下,折腾了大半天终于把hdfs部署到ubuntu上去了。在这里记录一下各步骤备忘:
在讲步骤之前,先总结一下自己对hadoop的工作你原理的理解:
1.这个分布式系统是通过一个namenode(运行在master上的一个进程)来作为master来统筹管理多个作为slavers的datanode(运行在slavers上的一个进程);
2.master将各slavers的实际物理空间虚拟成一个统一有根的文件系统。
3.对于hdfs管理员,可以通过控制master或slaver主机,再远程登录到master主机,人工手动控制上本地的某个文件传到该虚拟文件系统中,
如:bin/hadoop fs -put /etc/profile /user/hadoop/first/ (意思是调用bin/hadoop脚本程序将当前所在主机作为client(master或slaver)
上的etc/profile 文件上传到该虚拟文件系统的 /user/hadoop/first/下面)同理可直接:hadoop fs -mkdir first在该虚拟文件系统上新建first文件夹
4.作为程序员,不用通过ssh服务,可以直接利用hdfs提供的api,直接访问master主机。想上传什么文件,直接上传给master就可以了,而master将
传来的文件,放在slavers中,不排除将一个大文件切块儿的可能。
部署步骤:
一:安装ssh
1:sudo apt-get install openssh-server openssh-client
安装ssh远程登录服务,因为SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。而hadloop就是基于这个协议来实现,分布式统筹管理
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
2:ssh-keygen -t rsa -P ""
创建ssh-key,~/.ssh目录下(即当前用户的/home/hadoop/ssh)将生成id_rsa id_rsa.pub known_hosts三个文件,如果将这三个文件复制到另一台已经安装ssh的主机上,
那么他们之间相互访问就不用每次输入登录密码。
3:cat id_rsa.pub >> authorized_keys
将id_rsa.pub 复制一份到authorized_keys中,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件
二:
1:sudo
addgroup hadoop
创建一个名为hadoop的用户组
2:sudo
adduser -ingroup hadoop hadoop
在用户组hadoop中创建一个hadoop用户
3:sudo
gedit
/etc/sudoers
给hadoop用户添加权限,打开/etc/sudoers文件;
在已有的root ALL=(ALL:ALL) ALL下
添加hadoop ALL=(ALL:ALL) ALL
给hadoop用户赋予root用户同样的权限。
4:su
- hadoop
切换用户到hadoop
三:下载安装hadoop-1.0.4.tar.gz
1:tar -zxvf hadoop-1.0.4.tar.gz
解压 2:mv
hadoop-1.0.4 hadoop
重命名
3:
cp
hadoop
/usr/local/
并将其复制到/usr/local/
目录下
之后就是修改conf下的配置:
sudo
gedit hadoop
/conf/core-site
.xml
|
(1)编辑如下:property后面需要手工敲
<?
xml
version
=
"1.0"
?>
<?
xml-stylesheet
type
=
"text/xsl"
href
=
"configuration.xsl"
?>
<!-- Put site-specific property overrides in this file. -->
<
configuration
>
<
property
>
<
name
>fs.default.name</
name
>
</
property
>
</
configuration
>
|
(2). 打开conf/mapred-site.xml文件;
sudo
gedit hadoop
/conf/mapred-site
.xml
|
编辑如下property后面需要手工敲:
<?
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
>localhost:9001</
value
>
</
property
>
</
configuration
>
|
(3). 打开conf/hdfs-site.xml文件;
1
|
sudo
gedit hadoop
/conf/hdfs-site
.xml
|
编辑如下:
<
configuration
>
<
property
>
<
name
>dfs.name.dir</
name
>
<
value
>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</
value
>
</
property
>
<
property
>
<
name
>dfs.data.dir</
name
>
<
value
>/usr/local/hadoop/data1,/usr/local/hadoop/data2</
value
>
</
property
>
<
property
>
<
name
>dfs.replication</
name
>
<
value
>2</
value
>
</
property
>
</
configuration
>
|
(4). 作为单机版环境,只需在hadoop
/conf/masters
和
hadoop
/conf/slavers中
填写localhost 就Ok了
打开conf/masters文件,添加作为secondarynamenode的主机名,
hadoop
/conf/masters
中添加localhost 而hadoop
/conf/slaves
中添加作为slaver的:主机名(可以不用加“@用户名”)
对于slavers上(老师说这个是不需要的):也只需要在hadoop
/conf/masters
中添加前面那台master主机的:主机名
而hadoop
/conf/slaves
中和前面master的那台一样
四:安装jdk
1:sudo apt-get install openjdk-7-jdk
安装java编译环境
2:配置JAVA_HOME环境变量
首先确定的是java默认安装位置为:/usr/lib/jvm/java-1.6.0-openjdk-i386
方案一:
(1):在~/.bashrc里面添加
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
之后退出,在终端运行source bashrc可使得刚修改的环境变量立即生效
(2)之后在解压后的hadoop(原名为:hadoop-1.0.4)文件夹下的conf下,找到hadoop-env.sh文件,在里面添加
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
就可以将JAVA_HOME设为hadoop可识别的单位变量
方案二:
(1):在/etc/profile里面添加export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
即将所有用户的环境变量中添加一个JAVA_HOME变量
(2)之后在解压后的hadoop(原名为:hadoop-1.0.4)文件夹下的conf下,找到hadoop-env.sh文件,在里面添加
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
就可以将JAVA_HOME设为hadoop可识别的单位变量
五:运行hadoop
1:cd
/usr/local/hadoop/
跳转到/usr/local/hadoop/目录下
2:bin
/hadoop
namenode -
format
格式化namenode文件系统
3: 当你看到下图时,就说明你的hdfs文件系统格式化成功了。
4: 启动bin/start-all.sh
bin
/start-all
.sh
|
5. 检测hadoop是否启动成功
jps
列出正在运行的java程序
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机版环境配置好了!
如下图:
(2):kill -9 2748
(3):
然后可以通过firefox浏览器查看,使用http://localhost:50030/
如果看到下面激动人心的画面,就说明你成功了。
localhost Hadoop Map/Reduce Administration
State: RUNNINGStarted: Fri Apr 12 17:51:46 CST 2013
Version: 1.0.4, r1393290
Compiled: Wed Oct 3 05:13:58 UTC 2012 by hortonfo
Identifier: 201304121751
Cluster Summary (Heap Size is 15.5 MB/966.69 MB)
Running Map Tasks | Running Reduce Tasks | Total Submissions | Nodes | Occupied Map Slots | Occupied Reduce Slots | Reserved Map Slots | Reserved Reduce Slots | Map Task Capacity | Reduce Task Capacity | Avg. Tasks/Node | Blacklisted Nodes | Graylisted Nodes | Excluded Nodes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 2 | 2 | 4.00 | 0 | 0 | 0 |
Scheduling Information
Queue Name | State | Scheduling Information |
default | running | N/A |
Filter (Jobid, Priority, User, Name)
Example: 'user:smith 3200' will filter by 'smith' only in the user field and '3200' in all fields
Running Jobs
none |
Retired Jobs
none |
Local Logs
Log directory, Job Tracker HistoryThis is Apache Hadoop release 1.0.4
然后可以通过firefox浏览器查看,使用http://localhost:50070/
这个页面显示的是涉及的数据
NameNode 'localhost:9000'
Started: | Sun Apr 21 21:58:20 CST 2013 |
Version: | 1.0.4, r1393290 |
Compiled: | Wed Oct 3 05:13:58 UTC 2012 by hortonfo |
Upgrades: | There are no upgrades in progress. |
Browse the filesystem
Namenode Logs
Cluster Summary
10 files and directories, 2 blocks = 12 total. Heap Size is 31.57 MB / 966.69 MB (3%)Configured Capacity | : | 119.49 GB |
DFS Used | : | 76 KB |
Non DFS Used | : | 21.59 GB |
DFS Remaining | : | 97.9 GB |
DFS Used% | : | 0 % |
DFS Remaining% | : | 81.93 % |
Live Nodes | : | 1 |
Dead Nodes | : | 0 |
Decommissioning Nodes | : | 0 |
Number of Under-Replicated Blocks | : | 2 |
NameNode Storage:
Storage Directory | Type | State |
/usr/local/hadoop/datalog1 | IMAGE_AND_EDITS | Active |
/usr/local/hadoop/datalog2 | IMAGE_AND_EDITS | Active |