hadoop 环境搭配

环境说明:CentOS 6.2 64位操作系统
两台机器,部署如下:
IP	主机名	用途
Ip1 fanbin01 namenode
Ip2 fanbin02 datanode

A.分别在各台机器/etc/hosts中增加:
Ip1 fanbin01
Ip2 fanbin02
B.分别在各台机器创建统一的用户
例如:
useradd fanbin
passwd fanbin
输入密码
=====================================
[size=xx-small]
hadoop 安装[/size]

1. 安装jdk和hadoop
a. tar -xzvf hadoop-1.0.3.tar.gz(可选:ln -s hadoop-1.0.3 hadoop)
修改hadoop-env.sh 配置
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_25 #设置JAVA_HOME
export HADOOP_HOME_WARN_SUPPRESS=1 #取消环境变量$HADOOP_HOME过时的警告
b. 配置环境变量
vi /etc/profile,分别添加以下内容(区分:/etc/profile文件、或者~/.bash_profile、或者~/.bashrc)
export  JAVA_HOME=/usr/java/1.6.0_25  
export HADOOP_HOME=/home/fanbin/hadoop-1.0.3
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
unset i (文件中原有代码)
unset pathmunge

c. 让环境变量生效
source /etc/profile

2. 机器之间ssh无密码登陆
a. 分别在机器fanbin01、fanbin02中分别产生密钥和公钥
例如:
1)ssh-keygen -t rsa (产生一对公钥id_rsa.pub和密钥id_rsa,一路回车)
2)在/home/fanbin/.ssh目录下cat id_rsa.pub >> authorized_keys(将公钥追加到 authorized_keys中)
3)退到上级目录:chmod 700 -R .ssh
b. 对于机器fanbin01来说,将fanbin01的公钥发给fanbin02
例如:在fanbin0的/home/fanbin/.ssh目录下,scp id_rsa.pub fanbin@fanbin02:/home/fanbin/.ssh;
c. 对于机器fanbin02来说,将fanbin01的公钥追加到fanbin02的authorized_keys中;
例如:在fanbin02的/home/fanbin/.ssh目录下,cat id_rsa.pub >> authorized_keys;
d. 对于机器fanbin02来说,将fanbin02的authorized_keys (这里面包含两台机器的公钥)覆盖fanbin01的authorized_keys.
例如:scp authorized_key fanbin@ fanbin01:/home/fanbin/.ssh
总结:
例如机器A和机器B,首先分别将产生的公钥存入各自的authorized_keys中,然后将A的公钥追加到B的authorized_keys,最后将B的authorized_keys覆盖A的authorized_keys。从而使机器间的authorized_keys保持一致


3. 分别配置$HADOOP_HOME/conf中的对应文件
a. core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://fanbin01:9000</value>
</property>
</configuration>

b. hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/fanbin/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/fanbin/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


配置文件参数说明:
dfs.name.dir:NameNode上的本地文件路径,用于持久存储命名空间和日志信息文件等内容。该参数可以有多个值,值之间用逗号分割,表示文件映射关系信息将会被复制到每个目录中做冗余备份。
dfs.data.dir:DataNode上的本地文件路径,用于存放文件数据块。该参数可以有多个值,值之间用逗号分割,表示文件数据块将会被复制到每个目录中做冗余备份,通常配置为不同的设备
注意:这里的name、data目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题
dfs.replication:表示文件数据块要冗余备份的数量,默认值为3

c. mapred-site.xml (配置jobtracker,任务分配)
<configuration>  
<property>
<name>mapred.job.tracker</name>
<value>fanbin01:9001</value>
</property>
</configuration>



4. 格式化一个新的分布式文件系统
hadoop namenode –format


5. 启动集群
start-all.sh


6. 配置完成后,可以通过访问以下页面,判断是否配置成功。
http://fanbin01:50030


7. 运行WordCount的例子
Hadoop jar WordCount.jar /input /output


8. 关闭集群
stop-all.sh


9. 启动集群常见问题:
1) hadoop集群启动遇到java.net.NoRouteToHostException: No route to host
方法一:防火墙没关,sudo /etc/init.d/iptables stop关闭防火墙
方法二:各台机器,在root权限下关闭防火墙 service iptables stop
2) Hadoop格式化HDFS报错java.net.UnknownHostException
需要保证/etc/sysconfig/network中的hostname 与 /etc/hosts中有正确的映射
可参考http://blog.csdn.net/shirdrn/article/details/6562292,按该方法改完如果没有生效,需要重启各台机器;
3) 主节点jobtracter日志中有hadoop problem cleaning system directory,50030界面状态一致为 初始化状态时,可按以下方法解决。
在主节点进行关闭,hadoop dfsadmin -safemode leave
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值