zoukankan      html  css  js  c++  java
  • hadoop伪集群部署

    软件环境:VMware10.0,VMware10,ubuntu15.10桌面版(ubuntukylin-15.10-desktop-i386.iso),Apache hadoop(hadoop-1.2.1.tar.gz),JDK(jdk-8u11-linux-i586.tar.gz)

    一 安装JDK(安装ubuntu对应的JDK,我这里是32位的ubuntu系统)
    查看Linux多少位 命令file /bin/ls

    创建文件夹 /usr/local/java

    解压jdk,配置环境变量  vi /etc/profile

    export JAVA_HOME=/usr/local/java/jdk1.8.0_11

    export JAVA_BIN=/usr/local/java/jdk1.8.0_11/bin

    export PATH=$PATH:$JAVA_HOME/bin

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export JAVA_HOME JAVA_BIN PATH CLASSPATH

    使用 .(空格)/etc/profile使环境变量生效
    检测安装 java -version 出现  
    java version "1.8.0_11"
    Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
    Java HotSpot(TM) Client VM (build 25.11-b03, mixed mode)
    代表成功

    二 安装ssh(hadoop主从指间通过ssh来连接)
            apt-get install openssh-server
            apt-get update     #更新系统
            apt-get upgrade   #更新软件包
           
            生成key:ssh-keygen -t rsa,一路回车,key在/root/.ssh 中
            将key追加到authorized_keys授权文件,实现无密码登录本机 cat id_rsa.pub>>authorized_keys
            检测是否成功 ssh localhost


    三 修改机器名称
    修改机器名称 vi /etc/hostname,改为Hadoop-namenode,重启后生效

    四  配置固定IP,多台虚拟机
    将虚拟机网络设置成NAT模式,然后将本机的本地连接共享给VMnet8,然后在虚拟机中创建一块网卡,手动添加IP地址192.168.137.11,子网255.255.255.0,网关和 DNS都为192.168.137.1
    此时本机ip就固定为192.168.137.11
    此时可以添加host了,vi /etc/hosts
    127.0.0.1       localhost
    192.168.137.11 Hadoop-namenode
    192.168.137.12 Hadoop-datenode1
    192.168.137.13 Hadoop-datenode2


    克隆出2台datenod(如果是多台机器的集群,此步骤在配置好hadoop后进行最好)
    一台修改机器名称 Hadoop-datenode1,修改ip为192.168.137.12
    一台修改机器名称 Hadoop-datenode2,修改ip为192.168.137.13


    五 安装hadoop
    下载hadoop-1.2.1.tar.gz,解压到 /usr/local/hadoop中
    修改配置文件 /usr/local/hadoop/hadoop-1.2.1/conf/hadoop-env.sh     export JAVA_HOME=/usr/local/java/jdk1.8.0_11  指向jdk所在目录
      export HADOOP_HOME_WARN_SUPPRESS=1 用于解决一个警告,具体什么警告忘记了
    环境变量vi /etc/profile:
    export HADOOP_HOME=/usr/local/hadoop/hadoop-1.2.1
    export PATH=$HADOOP_HOME/bin:$PATH
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib:${HADOOP_HOME}/bin:${HADOOP_HOME}
    export HADOOP_CLASSPATH=$CLASSPATH
    使用 .(空格)/etc/profile使环境变量生效

    单机版Hadoop(自己是主也是从)配置:
    设置hadoop的HDFS的地址及端口号  core-site.xml:
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
    修改hadoop的hdfs配置,这里是改备份方式hdfs-site.xml这里设置1个备份:
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    </configuration>
    修改hadoop中MapReduce的配置,设置JobTracker的地址及端口mapred-site.xml:
    <configuration>
    <property>
    <name>mapred.job.tracker</name>
    <value>hdfs://localhost:9001</value>
    </property>
    </configuration>
    启动hadoop之前先格式化hadoop的HDFS进入/usr/local/hadoop/hadoop-1.2.1/bin:  ./hadoop namenode -format
    启动hadoop:./start-all.sh
    测试:浏览器打开 localhost:50030(MapReduce的页面)
                    localhost:50070(HDFS的页面)
                    
    三台机器的小集群配置
    1.三台机器拥有相同的用户
    2.要求Hadoop-namenode能免密码ssh登录2台Hadoop-datenode(Hadoop-datenode1,Hadoop-datenode2)

    设置hadoop的HDFS的地址及端口号  core-site.xml:
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://Hadoop-namenode:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/cjy/hadoop_tmp</value>         #这里这么配置主要是为了不用每次重启机器就格式化一次hdfs
    </property>
    </configuration>
    修改hadoop的hdfs配置,这里是改备份方式hdfs-site.xml这里设置2个备份:
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    </configuration>

    修改hadoop中MapReduce的配置,设置JobTracker的地址及端口mapred-site.xml:
    <configuration>
    <property>
    <name>mapred.job.tracker</name>
    <value>hdfs://Hadoop-namenode:9001</value>
    </property>
    </configuration>
    主masters:
    Hadoop-namenode
    从slaves:
    Hadoop-datenode1
    Hadoop-datenode2

    启动hadoop之前先格式化hadoop的HDFS进入/usr/local/hadoop/hadoop-1.2.1/bin:  ./hadoop namenode -format
    启动hadoop:./start-all.sh
    测试:浏览器打开 Hadoop-namenode:50030(MapReduce的页面)
                    Hadoop-namenode:50070(HDFS的页面)


    六 测试hadoop是否能正常工作
    hadoop fs -lsr   /                       查看HDFS的文件结构
    hadoop fs -mkdir /tmp/test               在HDFS上新建文件夹
    hadoop fs -put /home/cjy/VMwareTools-9.6.1-1378637.tar.gz /tmp/test   把本地文件传到HDFS的/tmp/test目录下
    hadoop fs -get   /tmp/test/VMwareTools-9.6.1-1378637.tar.gz /home/   把HDFS文件拉到本地
    hadoop fs -ls    /tmp                 列出HDFS的某目录
    hadoop fs -cat   /tmp/test/VMwareTools-9.6.1-1378637.tar.gz             查看HDFS上的文件
    hadoop fs -rm    /tmp/test/VMwareTools-9.6.1-1378637.tar.gz             删除HDFS上的文件
    hadoop fs -rmr   /tmp/test                 删除HDFS上的目录
    hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况
    hadoop dfsadmin -safemode leave   离开安全模式
    hadoop dfsadmin -safemode enter   进入安全模式

    关于python:

    这里比较吐血,折腾了好久,看网上攻略都是相当简单,直接成功!!!!

            反正不外乎几种方式 pyhdfs,pydoop等等,看网上的一路坎坎坷坷的,最后几乎要用hadoop shell去完成了。

           最后在坚持了一下成功了:

           这里说一个成功的例子 pyhdfs的:

                          下载地址在这里,https://pypi.python.org/pypi/python-hdfs/0.4

           安装流程如下:

                  apt-get install python-dev

                          apt-get install libhdf4-dev

                          下载 svn co http://libpyhdfs.googlecode.com/svn/trunk/ libpyhdfs并解压

                           进入libpyhdfs,cp /usr/local/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib/libhdfs.so lib/ 

                          vi setup.py 修改以下内容:
                     include_dirs = ['/usr/lib/jvm/java-6-sun/include/'] ->  include_dirs = ['/usr/local/java/jdk1.8.0_11/include']
                              runtime_library_dirs = ['/usr/local/lib/pyhdfs', '/usr/lib/jvm/java-6-sun/jre/lib/i386/server'] -> runtime_library_dirs = ['/usr/local/lib/pyhdfs',    '/usr/local/java/jdk1.8.0_11/jre/lib/i386/server']

                          修改/usr/local/java/jdk1.8.0_11/include/jni.h :
                     #include "jni_md.h" -> #include "linux/jni_md.h"

                          这时候安装pyhdfs:python setup.py install

                          安装成功,进去看看,然后会报一下错误:

                          

    解决方法 编辑vi /etc/ld.so.conf:加入一行  include /usr/local/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib
    执行/sbin/ldconfig -v

                           这时候在进去看看貌似离成功不远了,但是:

                            

                          又出错了,这里的问题是缺失了jar包,我们来添加环境变量,我对java不是很熟悉,所以就随便加加好了

                          添加环境变量 vi /etc/profile:

                                             export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-client-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-core-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-ant-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-examples-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-minicluster-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-test-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-tools-1.2.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-logging-1.1.1.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-logging-api-1.0.4.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-configuration-1.6.jar
    export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-lang-2.4.jar

                          同样执行.(空格)/etc/profile

                          我的环境变量如下:  

        

                           然后再来执行一次:

                            

                          成功!

  • 相关阅读:
    3、Semantic-UI之定义容器
    2、Semantic-UI之网格布局
    1、Semantic-UI之开发环境搭建
    PyCharm创建普通项目配置支持jinja2语法
    CentOS 7安装GitLab、汉化、配置邮件发送
    Docker swarm 实战-部署wordpress
    线程和进程
    NGINX内置变量
    iTerm2 + Oh My Zsh 打造舒适终端体验
    CentOS 7修改网卡名称
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/12969623.html
Copyright © 2011-2022 走看看