hadoop分布式文件系统

可以到http://hadoop.apache.org/ 网站查看
hadoop比较适合处理大文件。
hadoop 分三种模式:
单机模式;伪分布式模式;完全分布式模式
所需软件:Java ,ssh
首先安装java
lftp 192.168.0.254  get jdk-6u32-linux-x64.bin
sh  jdk-6u32-linux-x64.bin
mv  jdk1.6.0_32/ /usr/local/jdk
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
echo $JAVA_HOME
/etc/init.d/sshd start
useradd hadoop
papasswd hadoop
mv hadoop-1.0.3.tar.gz  /home/hadoop/
su - hadoop
tar zxf hadoop-1.0.3.tar.gz
rm hadoop-1.0.3.tar.gz -f
cd hadoop-1.0.3/
cd conf
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk   修改java路径
cd ..
下面做的是单机模式:
mkdir input
cp concp conf/*.xml input/f/*.xml input/
bin/hadoop jar hadoop-examples-1.0.3.jar grep input output 'dfs[a-z.]+'
执行完再查看:cat  output/*   会有一个文件

下面做伪分布式模式:
rm output/ -fr
cd conf/   下面编辑的时候可以参考:http://hadoop.apache.org/common/docs/r1.0.3/single_node_setup.html 这个网站
vim core-site.xml
<configuration>
<property>
         <name>fs.default.name</name>
                  <value>hdfs://localhost:9000</value>
                       </property>

</configuration>
vim hdfs-site.xml
<property>
         <name>dfs.replication</name>
                  <value>1</value>
                       </property>
</configuration>
vim mapred-site.xml
<property>
         <name>mapred.job.tracker</name>
                  <value>localhost:9001</value>
                       </property>

</configuration>

ssh-keygen -t rsa
cd ~/.ssh/
ssh-copy-id -i id_rsa.pub localhost
ssh localhost  测试,然后再退出来
cd hadoop-1.0.3/
bin/hadoop namenode -format   格式化分布式文件系统
bin/start-all.sh   启动hadoop后台进程
netstat -antlpe    查看是否有50070,50030端口
浏览器:http//192.168.0.73:50070(namenode信息) http://192.168.0.73:50030(Map/Reduce信息)
bin/hadoop fs -put conf input   拷贝conf目录的文件到分布式文件系统的input目录
bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
运行自带的examples
bin/hadoop fs -cat output/*   查看分布式文件系统output目录的内容
或者
bin/hadoop fs -get output output 将分布式文件系统output目录下载到output目录
cat outcat/*         然后查看,显示如下:
1    dfs.replication
1    dfs.server.namenode.
1    dfsadmin
cat: File does not exist: /user/hadoop/output/_logs  出现这些就好了

如果想停掉hadoop 后台进程 :
bin/stop-all.sh

下面做完全分布式文件系统:
确保前面做的
3台主机,1台namenode,2台datanode。且3台主机必须先安装jdk。
namenode端(root用户):
在所有节点创建hadoop,相同密码,uid,gid。
vim /etc/exports
/home/hadoop    *(rw,sync,all_squash,anonuid=500,anongid=500)

/etc/init.d/rpcbind start
/etc/init.d/nfslock start
/etc/init.d/nfs start
showmount -e
使用nfs,主要是namenode 可以无密码登录datanode 主机。
2台datanode端:
/etc/init.d/rpcbind start
/etc/init.d/nfslock start
mount 192.168.0.73:/home/hadoop  /home/hadoop
ll -d /home/hadoop  如果用户名和组名是数字,需确保rpc.idmapd 进程开启,需要重启
su - hadoop


namenode端:
su - hadoop
cd hadoop-1.0.3/.3/conf/
vim core-site.xml
<value>hdfs://desktop73.example.com:9000</value>  改为namenode 的hostname
vim hdfs-site.xml
<value>2</value>     客户端的数据写入2份,这样当一台主机挂了,还会有一份数据
vim mapred-site.xml
<<name>mapred.job.tracker</name>   
                  <value>desktop73.example.com:9001</value> jobtracker 端主机名
vim masters
desktop73.example.com   namenode 的主机名
vim slaves
desktop60.example.com
server53.example.com
bin/hadoop namenode -format
bin/start-all.sh
jps   查看状态
此时可以在datanode 端 jps
bin/hadoop fs -put conf input   提交任务
bin/hadoop fs -ls input   查看提交的任务
bin/hadoop jar hadoop-examples-1.0.3.jar grep input output 'dfs[a-z.]+' 计算,这个时候可以将datanode 的其中一台关掉(echo c > /proc/sysrq-trigger),不会影响结果。因为数据保存了2份。如果一台关了,hadoop会检测出,并重新map。
bin/hadoop fs -cat output/*  计算完后可以查看
1    dfs.replication
1    dfs.server.namenode.
1    dfsadmin
cat: File does not exist: /user/hadoop/output/_logs  出现这些就好了

你可能感兴趣的:(Hadoop分布式文件系统)