2-hadoop基础配置2

hadoop的
  存储:
    hdfs
  运算:
    MapReduce: map(抽取, 映射)+reduce(化简)


hadoop部署配置:
1.独立模式
   默认就是独立模式
   hadoop fs -ls / 列出的文件和Linux本身的文件一模一样,文件系统使用本地库文件,不是分布式文件系统
2.伪分布模式:模拟一个集群
  2.1 基础配置
    参考Hadoop.The.Definitive.Guide.3rd.Edition.pdf文件中的配置实例,配置4个文件


  <?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
  <property>
   <name>fs.default.name</name>
    <value>hdfs://localhost/</value>
  </property>
</configuration>


<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
<?xml version="1.0"?>


<!-- mapred-site.xml -->
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:8021</value>
  </property>
</configuration>




<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost:8032</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce.shuffle</value>
  </property>
</configuration>


  2.2 配置ssh无密码登录 
    1)SSH无密码原理 
      Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,
    需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,
    Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,
    并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。
    重要过程是将客户端Master复制到Slave上。
    检测是否安装有ssh,service sshd status,redhat已安装有ssh
    2)生成公钥私钥
      正确:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      (错误:ssh-keygen -t rsa -P '' -f /home/wpy/hadoop/ssh/.ssh/id_rsa,生成秘钥文件不能随意制定位置,
      参考 http://blog.itpub.net/25851087/viewspace-1262468/ )
    3)将公钥追加到文件
      在/home/wpy/.ssh文件夹中执行 cat id_rsa.pub >> authorized_keys
    4)测试ssh登录
      第一次登录 ssh localhost,成功后.ssh文件夹下多一个文件known_hosts
      退出再次登录就不要输入密码了。
      如果还需要输入密码,修改文件权限:
       4.1 先删除已经产生的两个文件,由于文件夹权限设置不对,这两个文件生成的也不对,需要重新生成:
         rm -f known_hosts
rm -f authorized_keys
       4.2 然后重新执行 cat id_rsa.pub >> authorized_keys
       4.3 最后再修改几个文件夹权限
         chmod 644(g-w)  authorized_keys
         chmod 755       /home/wpy
chmod 755       /home/wpy/.ssh
      再次登录就好了
        Last login: Tue May 17 14:58:30 2016 from localhost
  2.3 格式化hdfs文件系统
      hadoop namenode -format
  2.4 启动或停止守护进程
      注意启动顺序,并且因为是用hadoop_mode2,所以还应该制定使用的配置文件,启动会较慢
        启动namenode:
          start-dfs.sh  --config $HADOOP_INSTALL/etc/hadoop_mode2
        启动yarn:
          start-yarn.sh   --config $HADOOP_INSTALL/etc/hadoop_mode2
还可以全部启动:
 start-all.sh   --config $HADOOP_INSTALL/etc/hadoop_mode2
      查看是否成功:
         可以jps/jps -l 查看启动的进程
         还可以浏览器方式:
  namenode; http://localhost:50070/ 
  资源管理器:  http://localhost:8088/
      停止进程(注意顺序):
         stop-yarn.sh
stop-dfs.sh
// stop-all.sh
        jps查看进程全部停掉
  2.5 配置自定义的hadoop配置文件根目录,这一步骤可以在前面制定启动就不用加--config参数了
      export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2, 但是这只对本次回话有效,重启后无效
      注意:如果要在/etc/environment中来配置的话,要这么设置
        HADOOP_CONF_DIR=/usr/wpysoft/hadoop-2.7.1/etc/hadoop_mode2
(不能写成HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2,因为不识别$HADOOP_INSTALL)
  2.6 查看hadoop根目录
      hadoop fs -ls /
   查看当前用户所在的用户组:
    id + wpy
  2.7 常见问题处理
     2.7.1 native 警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
     一种情况是hadoop的版本和Linux版本不一致,一个32位,一个64位,按如下排除
             hadoop 32/64位查看:hadoop-2.7.1/lib/native目录下, file libhadoop.so.1.0.0
             linux 32/64位查看:file /sbin/init 
     如果都是一样的,那么就是Hadoop自带的native包过旧,需要更新而已,替换个即可,进入hadoop目录的native目录替换一下
        方式一:用比较新的native-x64.rar替换hadoop中native下的内容,简单容易
        方式二(可能行):
  http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 网站下载 hadoop-native-64-2.7.0.tar
  tar -x hadoop-native-64-2.7.0.tar -C  hadoop根目录/lib/native/
都是替换native中内容
    
     2.7.2 写日志异常导致的不能启动
       chown: changing ownership of `/usr/wpysoft/hadoop-2.7.1/logs': Operation not permitted
       可能logs文件夹目录是root用户创建的,删除logs即可
     2.7.3 datanode未启动
       
3.完全分布式模式
  在多个主机上
  修改hostname;vi  /etc/sysconfig/network
  更改  HOSTNAME=localhost.localdomain 即可
  改后需要重启
 由于hadoop默认找的配置是hadoop目录,新创建的完全分布式hadoop_mode3,如果要使用hadoop_mode3的配置,有两种办法
 第一种:修改/etc/environment配置文件,指向新目录
 第二种: 删掉/etc/environment中HADOOP_CONF_DIR的配置,
         创建一个符号链接(相当于快捷方式),
         ln -s hadoop  hadoop_mode3


  准备工作:
   修改redhat-2的hostname为s0,修改hadoop的配置HADOOP_CONF_DIR,指向hadoop_mode3
      cp -r  hadoop_mode2 hadoop_mode3
   
  1.以redhat-2为模板,完全克隆3个备份机,分别为s1,s2,s3
    这四个机器中,主从模式(即master/slaves):
       一个作为名称节点
       一个作为名称节点的副本
       其他两个作为数据节点


      redhat-2:    s0:192.168.198.130
redhat-21:   s1:192.168.198.132
redhat-22:   s2:192.168.198.133
redhat-23:   s3:192.168.198.134
  2.修改他们的hostname为s1,s2,s3
    
  3.修改hosts文件,先修改模板机hosts文件/etc/hosts,增加配置
192.168.198.130  s0
192.168.198.132  s1
192.168.198.133  s2
192.168.198.134  s3


    把上述配置同样的方式增加到3个备份机中去,由于host文件都一样,可以远程copy过去覆盖掉源文件
    scp /etc/hosts  root@192.168.198.132:/etc/
    scp /etc/hosts  root@192.168.198.133:/etc/
    scp /etc/hosts  root@192.168.198.134:/etc/
 
    测试是否OK, ping s0,ping s1,ping s2,ping s3, cat /etc/hosts文件看看是否更改成功
    再测试远程登录ssh s1,ssh s2,ssh s3看看能否远程登录几个备份机,不需要输入密码
  4.修改hadoop配置文件
    先修改模板机的hadoop配置文件
    core-site.xml中修改localhost为s0
    hdfs-site.xml中修改副本数为2
    yarn-site.xml中修改localhost为s0
    修改slaves文件localhost为s1,s2,即以s1,s2作为备份机
s1
s2
不能写成s1,s2


    接下来把修改过的配置都覆盖到其他机上去,可直接覆盖hadoop_mode3整个目录
    scp -r hadoop_mode3 wpy@s1:/usr/wpysoft/hadoop-2.7.1/etc
    scp -r hadoop_mode3 wpy@s2:/usr/wpysoft/hadoop-2.7.1/etc
    scp -r hadoop_mode3 wpy@s3:/usr/wpysoft/hadoop-2.7.1/etc


    检查是否修改成功,ssh s1,s2,s3/exit 远程登录上去查看文件
    可以直接查看文件  ssh s1 cat 文件路径文件
  5.格式化文件系统(修改过配置文件再格式化一次)
     hadoop namenode -format
  6.启动集群
     在s0上start-all.sh
     可以查看jps, ssh s1 jps, ssh s2 jps ,ssh s3 jps
     他们有的启动名称节点有的启动数据节点



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值