<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 集群簡介 HADOOP集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起 HDFS集群: 負責海量數據的存儲,集群中的角色主要有 NameNode / DataNode YARN集群: 負責海量數據運算時的資源調度,集群中的角色主要有 ResourceManager /NodeManager (那mapreduce是什么呢?它其實是一個應用程序開發包) 本集群搭建案例,以5節點為例進行搭建,角色分配如下 ~~~ hdp-node-01 NameNode SecondaryNameNode hdp-node-02 ResourceManager hdp-node-03 DataNode NodeManager hdp-node-04 DataNode NodeManager hdp-node-05 DataNode NodeManager ~~~ **萬萬注意,hosts中不要127.0.0.1指定自己主機的別名** ![](https://box.kancloud.cn/ceb8204ee1b4c3ac09b67748c4eca496_774x327.png) # 安裝hadoop 安裝jdk,1.8或者1.7 archive.apache.org/dist 這個下面有apache各個項目 下載hadoop ~~~ wget https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz 或者 wget https://archive.apache.org/dist/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz ~~~ # 注意 把下面的有關ip配置成`/etc/hosts`下面的別名對應ip,不然會報錯 還有hostname不能搞錯 **時間同步** # 配置文件 ## hadoop-env.sh hadoop下的`/etc/hadoop/` 里面有個`hadoop-env.sh` 把`export JAVA_HOME=/usr/local/jdk8`這個改下,原來是沒有值的 ## core-site.xml ~~~ <configuration> <!-- 指定hadoop所使用的文件系統schema(URI),HDFS老大(NameNode)的地址,指定的默認的文件系統,可以是別的,比如file:/ 還有TFS --> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.33.12:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/root/hadoop3/tmp/hadoop</value> </property> </configuration> ~~~ ## hdfs-site.xml ~~~ <configuration> <!-- 指定namenode的數據存放在哪里 --> <property> <name>dfs.namenode.name.dir</name> <value>/root/hadoop3/tmp/namenode</value> </property> <!-- 指定datanode數據存放在哪里,路徑可以配置多個,用,號隔開,不是容災的,是負載的--> <property> <name>dfs.datanode.data.dir</name> <value>/root/hadoop3/tmp/datanode</value> </property> <!--指定hdfs副本數量,默認是5個,這邊設置為1個,保證數據備份和管理機制--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--web端口--> <property> <name>dfs.secondary.http.address</name> <value>192.168.33.12:50090</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration> ~~~ **冗余數據塊自動刪除** 可配置刪除的速度 ~~~ <property> <name>dfs.blockreport.intervalMsec</name> <value>3600000</value> <description>Determines block reporting interval in milliseconds</description> </property> ~~~ **通信超時設置** 通信超時時間默認是10分30秒 `timeout = 2*heartbeat.recheck.interval+10*dfs.heartbeat.interval` 2次5分鐘的重試時間,10次心跳時間,還連不上就認為datanode已經掛了 需要注意的是hdfs-site.xml配置文件中的heartbeat.recheck.interval的單位為毫秒, dfs.heartbeat.interval的單位為秒 ## mapred-site.xml 如果沒有這個文件`cp mapred-site.xml.template mapred-site.xml` ~~~ <configuration> <!--指定mr運行在yarn上,用yarn去管理mapreduce,也可以寫local,那就是jvm的線程去模擬 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ~~~ **配置歷史服務器** ~~~ <property> <name>mapreduce.jobhistory.address</name> <value>host:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>host:19888</value> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/history/done</value> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/history/done_intermediate</value> </property> ~~~ ## yarn-site.xml ~~~ <configuration> <!-- Site specific YARN configuration properties --> <!--指定yarn的老大(ResourceManager)的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>192.168.33.12</value> </property> <!--reducer獲取數據的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ~~~ 開啟日期聚集和保留設置 ~~~ <!-- 日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留時間設置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> ~~~ ## 將hadoop添加到環境變量`/etc/profile` ~~~ # hadoop export HADOOP_HOME=/root/hadoop3 export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH ~~~ source下 注意這些文件夾要提前創建 如果報一些錯誤 ~~~ file:///data ~~~ 試下加`file:///`這種的 # 啟動 首先要namenode格式下,前面是1版本,后面是2版本 namenode的初始化 ~~~ hdfs namenode -format(hadoop namenode -format) ~~~ 分發到各個節點 然后顯示 ![](images/screenshot_1523104328768.png) 表示目錄已經被成功初始化了 ~~~ [root@12 current]# pwd /root/hadoop3/tmp/namenode/current [root@12 current]# ls -lah total 16K drwxr-xr-x 2 root root 112 Apr 7 12:31 . drwxr-xr-x 3 root root 21 Apr 7 12:31 .. -rw-r--r-- 1 root root 389 Apr 7 12:31 fsimage_0000000000000000000 -rw-r--r-- 1 root root 62 Apr 7 12:31 fsimage_0000000000000000000.md5 -rw-r--r-- 1 root root 2 Apr 7 12:31 seen_txid -rw-r--r-- 1 root root 212 Apr 7 12:31 VERSION ~~~ 里面fsi什么的是鏡像文件 seen_txid是迭代的版本號 然后我們查看下版本號 ~~~ [root@12 current]# cat VERSION #Sat Apr 07 12:31:09 UTC 2018 namespaceID=1413563114 clusterID=CID-6208de96-1ce0-4eea-b3df-f7a81c25f6b3 cTime=1523104269939 storageType=NAME_NODE blockpoolID=BP-871390616-0.0.0.12-1523104269939 layoutVersion=-64 ~~~ 比如我namenode的clusterID是這個,其他的datanode的clusterID也是這個值表示是一個集群 ## 方式一:每個守護線程逐一啟動 啟動順序如下: NameNode,DateNode,SecondaryNameNode,JobTracker,TaskTracker Hadoop-daemon.sh:用于啟動當前節點的進程 例如Hadoop-daemon.sh start namenode 用于啟動當前的名稱節點 Hadoop-daemons.sh:用于啟動所有節點的進程 例如:Hadoop-daemons.sh start datanode 用于啟動所有節點的數據節點 ~~~ [root@12 sbin]# hadoop-daemon.sh start namenode ~~~ ~~~ [root@12 sbin]# hadoop-daemon.sh start datanode WARNING: Use of this script to start HDFS daemons is deprecated. WARNING: Attempting to execute replacement "hdfs --daemon start" instead. ~~~ 這種警告意思就是hadoop這個命令被hdfs替代了 這個命令在各個datanode都要執行 ~~~ [root@12 sbin]# hadoop-daemon.sh start secondarynamenode ~~~ 查看下進程 ~~~ [root@12 sbin]# jps 3856 DataNode 4019 Jps 3988 SecondaryNameNode 3515 NameNode ~~~ 注意最大文件數打開,不然一啟動就可能等會就退出了 ~~~ yarn-daemon.sh start resourcemanager yarn-daemon.sh start nodemanager ~~~ ## 前提 **文件最大打開數限制** **ssh免密登錄** 注意authorized_keys這個文件里面的東西不要寫錯,前面ssh不要寫成sh,后面也不要少 還有.ssh權限問題 ~~~ # mkdir /root/.ssh # chown -R root:root /home/ansible # chmod 700 /root # chmod 700 /root/.ssh # chmod 644 /root/.ssh/authorized_keys //公鑰文件的所有權限 # chmod 600 /root/.ssh/id_rsa //私鑰文件的所有權限 ~~~ 其中這兩項`PubkeyAuthentication yes` 和`PasswordAuthentication no`的值都要為yes,即公鑰認證和密碼認證都要為yes,因為我連接的方式是通過這兩種方式來連接的, 重啟sshd服務 `systemctl restart sshd.service` mac要注意共享設置,允許遠程登錄 ## 方法二:全部啟動或者全部停止 **啟動** ~~~ start-all.sh ~~~ 啟動順序:`NameNode,DateNode,SecondaryNameNode,JobTracker,TaskTracker` **停止** ~~~ stop-all.sh ~~~ 關閉順序性:`JobTracker,TaskTracker,NameNode,DateNode,SecondaryNameNode` ## 方法三:分別啟動 首先創建slaves這個文件,在hadoop的配置文件 ~~~ 192.168.33.12 192.169.33.22 192.168.33.3 ~~~ 如果你是指定master,slave1這樣的話,那么這就寫別名 注意即使master和192.169.0.10一樣,你這邊也要寫對,否則ssh那邊known_hosts沒有的話會報錯 把這個slaves這個文件放到其他機器上,寫完最好檢查下 如果是hadoop3的話,這邊是workers,不是slaves 啟動:分別啟動HDFS和yarn ~~~ start-dfs.sh start-yarn.sh ~~~ 這個需要 ### 問題 **問題1** ~~~ Starting namenodes on [localhost] ERROR: Attempting to launch hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. ~~~ 解決: 是因為缺少用戶定義造成的,所以分別編輯開始和關閉腳本 ~~~ $ vim sbin/start-dfs.sh $ vim sbin/stop-dfs.sh ~~~ 在空白處添加內容: ~~~ HDFS_DATANODE_USER=root HDFS_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root ~~~ **問題2** ~~~ Starting resourcemanager ERROR: Attempting to launch yarn resourcemanager as root ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch. Starting nodemanagers ERROR: Attempting to launch yarn nodemanager as root ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting launch. ~~~ ~~~ 解決: 是因為缺少用戶定義造成的,所以分別編輯開始和關閉腳本 $ vim sbin/start-yarn.sh $ vim sbin/stop-yarn.sh ~~~ 在空白處添加內容: ~~~ YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root ~~~ ## 啟動history 啟動history-server ~~~ $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver ~~~ 停止history-server ~~~ $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh stop historyserver ~~~ history-server啟動之后,可以通過瀏覽器訪問WEBUI: host:19888 在hdfs上會生成兩個目錄 hadoop fs -ls /history ~~~ drwxrwx--- - spark supergroup 0 2014-10-11 15:11 /history/done drwxrwxrwt - spark supergroup 0 2014-10-11 15:16 /history/done_intermediate ~~~ 這個目錄是在mapred-site.xml中配置的 mapreduce.jobhistory.done-dir(/history/done): Directory where history files are managed by the MR JobHistory Server(已完成作業信息) mapreduce.jobhistory.intermediate-done-dir(/history/done_intermediate): Directory where history files are written by MapReduce jobs.(正在運行作業信息) 測試: 通過hive查詢city表觀察hdfs文件目錄和hadoop000:19888 ~~~ hive> select id, name from city; ~~~ 觀察hdfs文件目錄: 1. 歷史作業記錄是按照年/月/日的形式分別存放在相應的目錄(/history/done/2014/10/11/000000); 2. 每個作業有2個不同的后綴名的記錄:jhist和xml ~~~ hadoop fs -ls /history/done/2014/10/11/000000 -rwxrwx--- 1 spark supergroup 22572 2014-10-11 15:23 /history/done/2014/10/11/000000/job_1413011730351_0002-1413012208648-spark-select+id%2C+name+from+city%28Stage%2D1%29-1413012224777-1-0-SUCCEEDED-root.spark-1413012216261.jhist -rwxrwx--- 1 spark supergroup 160149 2014-10-11 15:23 /history/done/2014/10/11/000000/job_1413011730351_0002_conf.xml ~~~ # web端查看 訪問 `http://192.168.33.12:8088/` ![](https://box.kancloud.cn/a4ebf37968da9d9419d9998574d812b8_733x166.png) 訪問 `http://192.168.33.12:9870`,注意,這里是9870,不是50070了: ![](https://box.kancloud.cn/a4881f3e5cc089c54eb5126261065524_702x718.png) ![](https://box.kancloud.cn/e6616262481539a8a50045395733a66b_467x746.png) ## 試用 把這個文件放到文件系統的/下 ~~~ hdfs dfs -put anaconda-ks.cfg / ~~~ 從本地上傳一個文本文件到hdfs的/wordcount/input目錄下 ~~~ [HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input [HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input ~~~ 查看集群狀態 ~~~ hdfs dfsadmin –report ~~~ 查看HDFS中的目錄信息 ~~~ hadoop fs –ls / ~~~ 從HDFS下載文件 ~~~ hadoop fs -get /yarn-site.xml ~~~ # 本地庫 lib/native/ 文件夾下,是和平臺相關的 本地編譯的話,要注意這里 # 例子 ~~~ cd /root/hadoop2/share/hadoop/mapreduce ~~~ 然后我們計算下圓周率 ~~~ hadoop jar hadoop-mapreduce-examples-2.6.4.jar pi 4 8 ~~~ 任務 ![](https://box.kancloud.cn/e8e7386f6477098f4f459b782d445284_439x216.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看