站長資訊網
        最全最豐富的資訊網站

        Hadoop大數據部署

        Hadoop大數據部署

        一. 系統環境配置:

        1. 關閉防火墻,selinux

        關閉防火墻:
        systemctl stop firewalld
        systemctl disable firewalld

        設置selinux為disable
        # cat /etc/selinux/config
        SELINUX=disabled

        2. 配置ntp時間服務器
        # yum -y install ntpdate
        # crontab -l
        */5 * * * * /usr/sbin/ntpdate 192.168.1.1 >/dev/null 2>&1

        將IP地址換成可用的時間服務器IP

        3. 修改系統限制
        # cat /etc/security/limits.conf
        * soft nproc  100000
        * hard nproc  100000
        * soft nofile 102400
        * hard nofile 102400
        hadoop soft nproc  100000
        hadoop hard nproc  100000
        hadoop soft nofile 102400
        hadoop hard nofile 102400

        4. 創建hadoop用戶
        groupadd -g 1002 hadoop
        useradd -u 1002 -g hadoop hadoop

        5. 配置hosts
        [root@hadoop2 ~]# cat /etc/hosts
        127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
        192.168.24.43 hadoop1
        192.168.24.216 hadoop2
        192.168.24.7 hadoop3

        6. 分發公鑰
        # su – hadoop
        $ ssh-keygen
        $ ssh-copy-id hadoop@hadoop1
        $ ssh-copy-id hadoop@hadoop2
        $ ssh-copy-id hadoop@hadoop3

        保證某一個節點上都有所有的節點的公鑰。

        7. 安裝jdk
        # yum -y install jdk-8u171-linux-x64.rpm
        # java -version
        java version “1.8.0_171”
        Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
        Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

        8. 安裝SCALA

        Scala 是一門多范式(multi-paradigm)的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。Scala 運行在Java虛擬機上,并兼容現有的Java程序。Scala 源代碼被編譯成Java字節碼,所以它可以運行于JVM之上,并可以調用現有的Java類庫。
        cd /app
        tar -zxvf /home/Software/scala-2.11.12.tgz  -C .
         mv scala-2.11.12 scala

        9. 安裝snappy

        Snappy是一個壓縮/解壓縮庫。它的目標不是最大壓縮,也不與任何其他壓縮庫兼容; 相反,它的目標是非常高的速度和合理的壓縮。例如,與最快的zlib模式相比,對于大多數輸入,Snappy的速度要快一個數量級,但生成的壓縮文件大小要高20%到100%。
        yum -y install automake autoconf libtool openssl openssl-devel gcc gcc-c++
        tar -zxvf  snappy-1.1.3.tar.gz
        cd snappy-1.1.3
        ./autogen.sh
        ./configure
        make & make install

        10. 安裝lzo以及lzop

        LZO 是一個用 ANSI C 語言編寫的無損壓縮庫。他能夠提供非常快速的壓縮和解壓功能。解壓并不需要內存的支持。即使使用非常大的壓縮比例進行緩慢壓縮出的數據,依然能夠非常快速的解壓。LZO遵循GNU 的GPL 使用許可。
        LZO 非常適合進行數據的實時壓縮解壓處理,這就是說他更關心操作速度,而不是壓縮比例。
        LZO 使用 ANSI C 語言編寫,并且壓縮后的數據也被設計為可以跨平臺使用的格式。
        tar -xvf lzo-2.06.tar.gz
        cd lzo-2.06
        ./configure –enable-shared
        make && make install

        lzop是使用lzo庫寫的一個程序,通過shell命令直接可以壓縮、解壓縮文件。
        tar -xvf lzop-1.03.tar.gz
        cd lzop-1.03
        ./configure
        make && make install

        二. Zookeeper 集群

        Zookeeper有三種安裝模式,單機模式:單節點安裝standalones模式;偽集群模式:在一臺主機上啟動多個zookeeper的實例;集群模式:需要奇數臺服務器,至少3臺,每臺啟動一個zookeeper實例。

        1. 解壓安裝Zookeepr
        su – hadoop
        mkdir /app
        tar -zxvf zookeeper-3.4.10.tar.gz -C /app/
        cd /app
        sudo mv zookeeper-3.4.10 zookeeper
        mkdir data logs

        2. 修改zoo.cfg文件
        [hadoop@hadoop1 ~]$ vim /app/zookeeper/conf/zoo.cfg
        tickTime=2000
        initLimit=20
        syncLimit=10
        dataDir=/app/zookeeper/data
        dataLogDir=/app/zookeeper/logs
        clientPort=2181
        server.1=hadoop1:2888:3888
        server.2=hadoop2:2888:3888
        server.3=hadoop3:2888:3888

        initLimit:初始化鏈接時,follower和leader之間的最長心跳時間,20*2000即40秒
        syncLimit:leader和follower之間發送消息, 請求和應答的最大時間長度,即20秒
        server.X=A:B:C 其中X是一個數字, 表示這是第幾號server. A是該server所在的IP地址. B:配置該server和集群中的leader交換消息所使用的端口. C:配置選舉leader時所使用的端口

        3. 修改myid

        在/app/zookeeper/data/下增加一個myid文件,把前面配置文件里server.X中的X寫入里面。
        [hadoop@hadoop1 ~]$ cat /app/zookeeper/data/myid
        1

        4. 修改zookeeper的日志輸出路徑:

        修改/app/zookeeper/bin/zkEnv.sh下的ZOO_LOG_DIR改為配置文件里寫的路徑/app/zookeeper/logs。
        if [ “x${ZOO_LOG_DIR}” = “x” ]
        then
            ZOO_LOG_DIR=”/app/zookeeper/logs”
        fi

        5. 啟動并調試zookeeper

        啟動:

        $ zkServer.sh start

        查看狀態:

        $ zkServer.sh status
        [hadoop@hadoop1 ~]$ zkServer.sh status
        ZooKeeper JMX enabled by default
        Using config: /app/zookeeper/bin/../conf/zoo.cfg
        Mode: follower

        二. Hadoop HA安裝

        hadoop分為1.0和2.0兩個大版本,具體的區別自行查找。本文主要使用的是hadoop2.0。hadoop2.0的生態系統主要包括以下核心項目:HDFS YARN MapReduce。

        1. 解壓安裝
        sudo tar -zxvf hadoop-2.9.1.tar.gz -C /app/
        $ pwd
        /app/hadoop/etc/hadoop
        $ ls
        capacity-scheduler.xml      httpfs-env.sh            mapred-env.sh
        configuration.xsl          httpfs-log4j.properties  mapred-queues.xml.template
        container-executor.cfg      httpfs-signature.secret  mapred-site.xml
        core-site.xml              httpfs-site.xml          mapred-site.xml.template
        hadoop-env.cmd              kms-acls.xml            slaves
        hadoop-env.sh              kms-env.sh              ssl-client.xml.example
        hadoop-metrics2.properties  kms-log4j.properties    ssl-server.xml.example
        hadoop-metrics.properties  kms-site.xml            yarn-env.cmd
        hadoop-policy.xml          log4j.properties        yarn-env.sh
        hdfs-site.xml              mapred-env.cmd          yarn-site.xml

        2. 修改hadoop的環境變量(hadoop-env.sh)
        export HADOOP_HEAPSIZE=16196
        export JAVA_HOME=/usr/java/1.8.0_171
        export JAVA_LIBRARY_PATH=/app/hadoop-2.9.1/lib/native
        export HADOOP_OPTS=”-Djava.library.path=/app/hadoop-2.9.0/lib/native”
        注意:如果在CentOS 6環境中變量名后面的路徑必須使用雙引號,否則后面啟動的時候報錯找不到該變量。

        3. 修改core-site.xml
        <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://myhadoop</value>
        </property>
        <property>
          <name>ha.zookeeper.quorum</name>
          <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/app/hadoop/tmp</value>
        </property>
        <property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
        </property>
        <property>
            <name>io.compression.codecs</name>                            <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
        </property>
        <property>
            <name>io.compression.codec.lzo.class</name>
            <value>com.hadoop.compression.lzo.LzoCodec</value>
        </property>
        <property>
            <name>hadoop.proxyuser.hadoop.hosts</name>
            <value>*</value>
        </property>
        <property>
            <name>hadoop.proxyuser.hadoop.groups</name>
            <value>*</value>
        </property>
        </configuration>

        3. 修改hdfs-site.xml
        <configuration>
        <property>
          <name>dfs.nameservices</name>
          <value>myhadoop</value>
        </property>
        <property>
          <name>dfs.ha.namenodes.myhadoop</name>
          <value>nn1,nn2</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.myhadoop.nn1</name>
          <value>hadoop1:8020</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.myhadoop.nn2</name>
          <value>hadoop2:8020</value>
        </property>
        <property>
          <name>dfs.namenode.http-address.myhadoop.nn1</name>
          <value>hadoop1:50070</value>
        </property>
        <property>
          <name>dfs.namenode.http-address.mycluster.nn2</name>
          <value>hadoop2:50070</value>
        </property>
        <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/app/hadoop/qjournal</value>
        </property>
        <property>
          <name>dfs.namenode.shared.edits.dir</name>
          <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/myhadoop</value>
        </property>
        <property>
          <name>dfs.client.failover.proxy.provider.myhadoop</name>
          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <property>
          <name>dfs.ha.fencing.methods</name>
          <value>sshfence</value>
        </property>
        <property>
          <name>dfs.ha.fencing.ssh.private-key-files</name>
          <value>/home/hadoop/.ssh/id_rsa</value>
        </property>
         <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
         </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/app/hadoop/dfs/name,file:/hadoop/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/app/hadoop/dfs/data</value>
        </property>
        <property>
            <name>dfs.datanode.handler.count</name>
            <value>100</value>
        </property>
        <property>
            <name>dfs.namenode.handler.count</name>
            <value>1024</value>
        </property>
        <property>
            <name>dfs.datanode.max.xcievers</name>
            <value>8096</value>
        </property>
        </configuration>

        3. 修改yarn-site.xml
        <configuration>
        <property>
          <name>yarn.resourcemanager.ha.enabled</name>
          <value>true</value>
        </property>
        <property>
          <name>yarn.resourcemanager.cluster-id</name>
          <value>cluster1</value>
        </property>
        <property>
          <name>yarn.resourcemanager.ha.rm-ids</name>
          <value>rm1,rm2</value>
        </property>
        <property>
          <name>yarn.resourcemanager.hostname.rm1</name>
          <value>hadoop1</value>
        </property>
        <property>
          <name>yarn.resourcemanager.hostname.rm2</name>
          <value>hadoop2</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address.rm1</name>
          <value>hadoop1:8088</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address.rm2</name>
          <value>hadoop2:8088</value>
        </property>
        <property>
          <name>yarn.resourcemanager.zk-address</name>
          <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
        </property>
        </configuration>

        5. 修改mapred-site.xml
        <configuration>
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>hadoop1:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hadoop1:19888</value>
        </property>
        <property>
            <name>mapreduce.job.tracker</name>
            <value>hdfs://hadoop1:8021</value>
        </property>
        <property>
            <name>mapreduce.reduce.shuffle.parallelcopies</name>
            <value>50</value>
        </property>
        <property>
            <name>mapreduce.map.java.opts</name>
            <value>-Xmx4096M</value>
        </property>
        <property>
            <name>mapreduce.reduce.java.opts</name>
            <value>-Xmx8192M</value>
        </property>
        <property>
            <name>mapreduce.map.memory.mb</name>
            <value>4096</value>
        </property>
        <property>
            <name>mapreduce.reduce.memory.mb</name>
            <value>8192</value>
        </property>
        <property>
            <name>mapreduce.map.output.compress</name>
            <value>true</value>
        </property>
        <property>
            <name>mapred.child.env</name>
            <value>JAVA_LIBRARY_PATH=/app/hadoop-2.9.1/lib/native</value>
        </property>
        <property>
            <name>mapreduce.map.output.compress.codec</name>
            <value>com.hadoop.compression.lzo.LzoCodec</value>
        </property>
        <property>
            <name>mapreduce.task.io.sort.mb</name>
            <value>512</value>
        </property>
        <property>
            <name>mapreduce.task.io.sort.factor</name>
            <value>100</value>
        </property>
        <property>
            <name>mapred.reduce.tasks</name>
            <value>4</value>
        </property>
        <property>
            <name>mapred.map.tasks</name>
            <value>20</value>
        </property>
        <property>
            <name>mapred.child.java.opts</name>
            <value>-Xmx4096m</value>
        </property>
        <property>
            <name>mapreduce.reduce.shuffle.memory.limit.percent</name>
            <value>0.1</value>
        </property>
        <property>
            <name>mapred.job.shuffle.input.buffer.percent</name>
            <value>0.6</value>
        </property>
        </configuration>

        6. 修改yarn-env.sh環境,添加環境變量

        在yarn-env.sh文件后面設置yarn heap大小。追加下面這句
        YARN_HEAPSIZE=4000

        添加環境變量:
        $ tail .bash_profile
        export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
        export HADOOP_HOME=/app/hadoop
        export ZOOKPEER_HOME=/app/zookeeper
        export LIBRAY_PATH=$HADOOP_HOME/lib/native
        export SCALA_HOME=/app/scala
        export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKPEER_HOME/bin:$SCALA_HOME/bin

        7 集群的啟動與監控

        安裝psmisc,否則不能實現自動切換:
        yum -y install psmisc

        啟動集群:
        # 1. 在所有zookeeper節點上執行
        zkServer.sh start
        # 1.1 在leader上執行,用zookeeper進行初始化,這將會創建一個znode在zookeeper上內部實現自動備援系統。
        hdfs zkfc -formatZK
        # 1.2 If you are setting up a fresh HDFS cluster, you should first run the format command,on one of NameNodes.
        hdfs namenode -format
        # 2. 自動啟動hdfs服務
        start-dfs.sh
        # 2.1 注意:如何你想要手動的管理你的集群服務,你必須通過zkfc deamon來啟動你的namenode,命令如下:
        hadoop-daemon.sh –script hdfs start zkfc
        # 3. 在hadoop啟動Resourcemanager
        start-yarn.sh
        # 4. 在另一個節點上啟動standby resourcemanager
        yarn-daemon.sh start resourcemanager

        # 其他命令:
        # 啟停namenode
        hadoop-daemon.sh start/stop namenode
        # 啟停datanode
        hadoop-daemon.sh start/stop namenode

        查看狀態:
        # 查看各個節點
        $ jps
        2049 NameNode
        2611 DFSZKFailoverController
        3465 ResourceManager
        1727 QuorumPeerMain
        2159 DataNode
        2415 JournalNode
        3199 NodeManager
        3695 Jps
        # 查看HDFS集群namedate節點的狀態
        hdfs haadmin -getAllServiceState
        # 查看nn1/nn2的狀態
        hdfs haadmin -getServiceState nn1
        hdfs haadmin -getServiceState nn2
        # 查看resourcemanager集群的主備狀態
        $ yarn rmadmin -getAllServiceState
        hadoop1:8033                                      active   
        hadoop2:8033                                      standby 
        # 查看resourcemanager的集群各個節點的狀態
        $ yarn rmadmin -getServiceState rm1
        active
        $ yarn rmadmin -getServiceState rm2
        standby

        hadoop集群監控相關的端口:
        NameNode: http://namenode_host:50070
        ResourceManager: http://resourcemanager_host:8088
        MapReduce JobHistory Server: http://jobistoryserver_host:19888

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 99久久国产综合精品麻豆| 国产高清国内精品福利99久久| 成人区人妻精品一区二区不卡视频| 91精品国产91久久久久久青草| 久久ww精品w免费人成| 久久久久久国产精品免费免费| 国产午夜精品一区理论片| 亚洲精品国产精品乱码不卡√ | 国产A级毛片久久久精品毛片| 日韩欧精品无码视频无删节 | 精品视频一区二区三区免费| 亚洲精品乱码久久久久久久久久久久 | 国语自产少妇精品视频蜜桃| 亚洲情侣偷拍精品| 精品国产一区二区22| 777欧美午夜精品影院| 99re国产精品视频首页| 久久国产免费观看精品3| 无码国产乱人伦偷精品视频| 亚洲&#228;v永久无码精品天堂久久 | 国产精品美脚玉足脚交欧美| 亚洲av永久无码精品漫画| 亚洲国产成人精品女人久久久 | 成人精品一区二区三区免费看| 成人精品在线视频| 精品久久久久久久无码 | 国产日韩精品无码区免费专区国产| 国产一区二区三区久久精品| 国产午夜精品一区二区三区漫画| 亚洲线精品一区二区三区| 亚洲精品无码av天堂| 亚洲国产精品日韩专区AV| 日韩福利视频精品专区| 亚洲?V无码成人精品区日韩| 欧美成人精品高清在线播放| 精品亚洲欧美中文字幕在线看| 国产亚洲精品拍拍拍拍拍| 国产一区二区三区欧美精品| 国产精品99无码一区二区| 国产精品永久免费视频| 国产美女精品视频|