hadoop + zookeeper 安装部署


1. 网络配置

1.1 查看当前机器名称
     #hostname

1.2 修改当前机器名称

1.3 修改当前机器IP

1.4 配置hosts文件(必须)

    192.168.3.111  hadoopserver01
    192.168.3.112  hadoopserver02
    192.168.3.113  hadoopserver03

1.5 VSFTP上传

2. SSH无密码验证配置
2.1 SSH无密码原理

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。


2.2 Master机器上生成密码对
    #ssh-keygen –t rsa –P ''


    接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
    #cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


    在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效


    修改文件"authorized_keys"
    #chmod 600 ~/.ssh/authorized_keys


    设置SSH配置, 用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
    #vim /etc/ssh/sshd_conf
    >RSAAuthentication yes # 启用 RSA 认证
    >PubkeyAuthentication yes # 启用公钥私钥配对认证方式
    >AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)


    设置完之后记得重启SSH服务,才能使刚才设置有效。
    #service sshd restart


    使用hadoop普通用户验证是否成功。
    #ssh localhost


    把公钥复制所有的Slave机器上
    #scp ~/.ssh/id_rsa.pub [email protected]:~/


    在slave"/home/hadoop/"下创建".ssh"文件夹
    #mkdir ~/.ssh


    修改文件夹".ssh"的用户权限,把他的权限修改为"700" (注意这里是700)
    #chmod 700 ~/.ssh


    追加到授权文件"authorized_keys"
    #cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    #chmod 600 ~/.ssh/authorized_keys


    用root用户修改"/etc/ssh/sshd_config"
    #vim /etc/ssh/sshd_conf
    >RSAAuthentication yes # 启用 RSA 认证
    >PubkeyAuthentication yes # 启用公钥私钥配对认证方式
    >AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)


    最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉


2.3 配置所有Slave无密码登录Master
    和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)


3 Java环境安装
   所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行


3.1 下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


3.2 首先用root身份登录"Master.Hadoop"后在"/usr"下创建"java"文件夹,
    #mkdir /usr/java
    #cp /mnt/hgfs/linux/jdk-8u60-linux-x64.tar.gz /usr/java/


3.3 配置环境变量, 编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容
    #vim     /etc/profile


    ># set java environment
    >export JAVA_HOME=/usr/java/jdk1.8.0_131/
    >export JRE_HOME=/usr/java/jdk1.8.0_131/jre
    >export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
    >export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin


    或者


    ># set java environment
    >export JAVA_HOME=/usr/java/jdk1.8.0_131
    >export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    >export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin


    保存并退出,执行下面命令使其配置立即生效。
    #source /etc/profile


3.4 验证安装成功
    #java -version


4 Zookeeper安装(3.3.6)
    Apache ZooKeeper是一个为分布式应用所设计的开源协调服务,其设计目的是为了减轻分布式应用程序所承担的协调任务。它可以为用户提供同步、配置管理、分组和命名等服务


4.1 下载并解压ZooKeeper-3.4.6.tar.gz
    #cd /opt
    #tar -zxvf zookeeper-3.4.6.tar.gz


    #cp zoo_sample.cfg zoo.cfg
    >dataDir=/data/zookeeper/zkdata
    >dataLogDir=/data/zookeeper/zkdatalog
    >server.1=master:2888:3888
    >server.2=slave1:2888:3888
    >server.3=slave2:2888:3888


    #mkdir -p /data/zookeeper/zkdata
    #mkdir -p /data/zookeeper/zkdatalog
    #cd /data/zookeeper/zkdata
    #touch myid
    #echo "1" > myid


    设置日志
    #vim conf/log4j.properties
    ># Define some default values that can be overridden by system properties
    >zookeeper.root.logger=INFO, ROLLINGFILE


    ># Add ROLLINGFILE to rootLogger to get log file output
    >#    Log DEBUG level and above messages to a log file
    >log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender (暂不做该项修改)


    #vim bin/zkEvn.sh
    >if [ "x${ZOO_LOG_DIR}" = "x" ]
    >then
    >    ZOO_LOG_DIR="$ZOOBINDIR/../logs"
    >fi
    >if [ "x${ZOO_LOG4J_PROP}" = "x" ]
    >then
    >    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
    >fi


4.2 从master节点分发文件到其他节点


    #scp -r zookeeper-3.4.6 slave1:~/
    #scp -r zookeeper-3.4.6 slave2:~/
    #scp -r data slave1:~/
    #scp -r data slave2:~/


    在slave1节点的/opt/目录, vi ./data/zookeeper/zkdata/myid 修改为 2
    在slave2节点的/opt/目录, vi ./data/zookeeper/zkdata/myid 修改为 3


4.3 在每个节点配置环境变量/etc/profile
    #Set ZOOKEEPER_HOME ENVIRONMENT
    >export ZOOKEEPER_HOME=/opt/zookeeper
    >export PATH=$PATH:$ZOOKEEPER_HOME/bin


4.4 启动
    关闭防火墙
    #sudo ufw disable


    在每个节点上$ZOOKEEPER_HOME目录下,运行 (这里的启动顺序为 master >  slave1 >  slave2 )
    #bin/zkServer.sh start
    并通过jps可以看到:启动了QuorumpeerMain进程
    #jps


    并用命令查看启动状态
    这里需要注意点,只有当至少启动了三个节点之后,该命令才会产生结果。否则会显示:zookeeper Error contacting service. It is probably not running错误
    #bin/zkServer.sh status




5 Hadoop集群安装
5.1 安装hadoop
    首先用root用户登录"Master.Hadoop"机器,查看我们之前用FTP上传至"/home/Hadoop"上传的"hadoop-1.0.0.tar.gz"


    #cp /home/hadoop/hadoop-1.0.0.tar.gz /usr
    #cd /usr
    #tar –zxvf hadoop-1.0.0.tar.gz
    #mv hadoop-1.0.0 hadoop
    #chown –R hadoop:hadoop hadoop
    #rm –rf hadoop-1.0.0.tar.gz


    最后在"/usr/hadoop"下面创建tmp文件夹,把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效


    #mkdir /usr/hadoop/tmp


    #vim /etc/profile


    ># set hadoop path
    >export HADOOP_HOME=/usr/hadoop
    >export PATH=$PATH:$HADOOP_HOME/bin


    重启"/etc/profile"
    #source /etc/profile


5.2 配置hadoop (2.8)
    5.2.1 配置hadoop-env.sh
        该"hadoop-env.sh"文件位于"/usr/hadoop/conf"目录下, 在文件的末尾添加下面内容
        ># set java environment
        >export JAVA_HOME=/usr/java/jdk1.6.0_31


        #vim etc/hadoop/core-site.xml
        在<configuration></configuration>中加入
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoopserver01:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/hadoop/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <value>131702</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>


        #vim etc/hadoop/hdfs-site.xml
        在<configuration></configuration>中加入
            <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/hadoop/hdfs/name</value>
            </property>
            <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/root/hadoop/hdfs/data</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>3</value>
            </property>
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoopserver01:9001</value>
            </property>
            <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
            </property>


            #vim etc/hadoop/mapred-site.xml
            在<configuration></configuration>中加入
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>hadoopserver01:10020</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>hadoopserver01:19888</value>
                </property>


            #vim etc/hadoop/yarn-site.xml
            在<configuration></configuration>中加入
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
                <property>
                    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
                    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
                </property>
                <property>
                    <name>yarn.resourcemanager.address</name>
                    <value>hadoopserver01:8032</value>
                </property>
                <property>
                    <name>yarn.resourcemanager.scheduler.address</name>
                    <value>hadoopserver01:8030</value>
                </property>
                <property>
                    <name>yarn.resourcemanager.resource-tracker.address</name>
                    <value>hadoopserver01:8031</value>
                </property>
                <property>
                    <name>yarn.resourcemanager.admin.address</name>
                    <value>hadoopserver01:8033</value>
                </property>
                <property>
                    <name>yarn.resourcemanager.webapp.address</name>
                    <value>hadoopserver01:8088</value>
                </property>
                <property>
                    <name>yarn.nodemanager.resource.memory-mb</name>
                    <value>6078</value>
                </property>


            #vim etc/hadoop/yarn-env.sh
            中找到 export JAVA_HOME 去掉注释
            编辑java地址 export JAVA_HOME=/usr/java/jdk1.8.0_121


            找到JAVA_HEAP_MAX=-Xmx1000m
            改为 JAVA_HEAP_MAX=-Xmx1024m


            #vim etc/hadoop/slaves
            清空添加 hadoopserver01











猜你喜欢

转载自blog.csdn.net/sean_cd/article/details/72194834