转载请注明:
Hadoop 实践入门
1           实验环境搭建
1.1          准备工作
ubuntu/redhat
JDK/openjdk
Hadoop
Eclipse
vmvare/virtureBox
1.1.1     ubuntu 安装
       下载最新版本ubuntu 11.10。
       安装注意事项:
       1、关闭防火墙:shell命令 sudo ufw disable。不关闭有可能造成master slave 通信失败。出现连接超时,重连错误。可以通过指定iptables 实现端口过滤。
       2、安装ssh(用于master和slave远程登录):sudo apt-get install ssh
1.1.2     安装jdk
       1)解压sun jdk压缩包到指定的文件夹。
              sudo vi /etc/profile 或者 etc nano /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_22
export JRE_HOME=/usr/java/jdk1.6.0_22/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    2)可以使用openjdk sudo apt-get insall open-jdk-6 或者通过软件中心。
 
验证 shell命令 :java -version 看是否与你的版本号一致
1.1.3 安装hadoop
在每台机器上相同用户的home根目录下解压,hadoop-0.20.2.tar.gz 配置conf/hadoop-env.sh文件。 增加 export JAVA_HOME =/usr/lib/jvm/java-6-openjdk 这里修改为你的jdk的安装位置。
 
1.2          伪分布式搭建
              Hadoop可以在单电商以为分布分布式模式运行,用不同的java进程模拟分布式中的中的各类节点namenode,datanode,jobtracker,tasktracker,secondary namenode
1.2.1     hadoop配置
       hadoop 0.2.0.2之后需要修改core-site.xml\hdfs-site.xml 以及 mapred-site.xml
配置文件如下:
core-site.xml 配置核心内容,其中fs.default.name 为hdfs地址;tmp为hadoop.tnp.dir为临时文件
<configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://localhost:49000</value>
     </property>
<property>
<name>hadoop.tmp.dir</name>
 <value>/home/hadooper/hadooptmp</value>
     </property>
</configuration>
注意事项:一定要指定,相同的用户名,并且tmp一定要设置,否则会出现权限问题。导致hadoop启动失败。也可以通过chmod 命令来改变默认tmp的权限。默认tmp路径为:/usr/tmp。推荐第一种方式。
 
hdfs-site.xml 设置 hdfs 参数
<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
</configuration>
这里dfs.replication指块的副本数。副本数具体策略可参加见hadoop官方指南。
 
mapred-site.xml 文件的修改
<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:49001</value>
     </property>
</configuration>
这个设置了jobtracker的端口。
注意端口的选择一定要恰当,尤其是集群的配置。默认的9000和9001很容易被ubuntu中其他进程占用,导致datanode失效,因此选择没有占用的49000 和49001。笔者,曾经就曾困扰与此。集群配置中将再次强调。
 
1.2.2     ssh设置
因为master需要访问datanode因此需要免密码ssh
设置方法:
ssh-keygen -t rsa然后一直按回车
完成后,在home跟目录下会产生隐藏文件夹.ssh
cd .ssh
之后ls 查看文件
cp id_rsa.pub authorized_keys
测试:
ssh localhost发现链接成功,并且无需密码。
1.2.3     hadoop运行
在hadoop安装目录下:
首先 bin/hadoop namenode -format格式化文件系统
然后 bin/start-all.sh 来启动守护进程。
利用java 命令 jps 查看进程。或者通过 网址:localhost:50070 localhost:50030来查看是否成功。
 
1.3          集群搭建
如上所述安装ubuntu 并且拥有相同用户。安装jdk ,安装hadoop。配置jdk路径等。
1.3.1     主机信息:
| 
 机器名  | 
 IP地址  | 
 作用  | 
| 
 Node1  | 
 192.168.234.128  | 
 NameNode、JobTracker  | 
| 
 Node2  | 
 192.168.234.129  | 
 DataNode、TaskTracker  | 
| 
 Node3  | 
 192.168.234.130  | 
 DataNode、TaskTracker  | 
 
修改每台机器上的hosts
sudo vi /etc/hosts
192.168.1.31   node1
192.168.1.32  node2
192.168.1.33   node3
1.3.2     ssh 设置
           把NameNode 上的id_dsa.pub 文件追加到DataNode 的authorized_keys 内:
           a. 拷贝NameNode 的id_dsa.pub 文件:
           $ scp id_dsa.pub hadooper@node2:/home/hadoop/
           b. 登录node2,执行
                       $ cat id_dsa.pub >> .ssh/authorized_keys
          在所有datanode上执行相同的操作。
          验证:从node1 
          ssh node2
          exit
          ssh node3
          exit
          如果全部免密码登录则成功
1.3.3     配置hadoop
配置conf/masters 和conf/slaves 文件
Masters
node1
Slaves
node2
node3
 
core-site mapred-site 和hdfs-site 和伪分布配置基本相同.只是对应地址,localhost换成了namenode的名称,node1。
q            配置conf/core-site.xml
<configuration>
 <property>
    <name>fs.default.name</name>
    <value>hdfs://node1:49000</value>
 </property>
</configuration>
仍然注意端口,在运行时如果datanode连接不上namenode,有可能是由于端口问题。换一个端口
1.3.4     运行hadoop
首先格式化文件系统:$ bin/hadoop namenode –format
启动Hadoop集群:
$ bin/start-all.sh
停止Hadoop集群:
$ bin/stop-all.sh
查看集群状态:$ bin/hadoop dfsadmin -report
Hadoop 的web 方式查看
JobTracker:http://node1:50030
NameNode:http://node1:50070
 
 
           
 
1.4          eclipse 插件安装
安装eclipse 只需要把hadoop/contrib/eclipse-plus 下的包考到eclipse的plus里即可。(该方法有问题,因为该插件只能部分支持eclipse3.6,如果需要全部支持安装eclipse3.4以下版本,或修改该插件较复杂)。如果有谁修改了适合3.6以上的插件roymoro@gmail.com.帮我发一份。
 
 
			
			
		 
	
		
			
			
			     摘要:  
Java 实现程序运行监控状态之我的思路(守护进程)
问题:写出这个工具的意义在于我运行一个需要长时间执行的程序,如单线程爬虫。在网络出现中断的或网站丢包情况下,程序会抛出socketexception 和sockettimeoutexception。程序会中断。(再此只是提出一种假设)
解决方案:
Java 并不能像C#一样对windows的进程进行监控(资料说这是跨平台原...  
阅读全文