導航:首頁 > 源碼編譯 > hadoop為什麼重新編譯

hadoop為什麼重新編譯

發布時間:2022-10-25 08:16:23

㈠ 如何在CentOS6.5下編譯64位的Hadoop2.x

hadoop2.x在apache官網直接下載的並沒有64位直接能用的版本,如果我們想在64位系統使用,那麼就需要重新編譯hadoop,否則直接使用32位的hadoop運行在64位的系統上,將會出現一些庫不兼容的異常。如下圖所示,最直接的一個異常:在這之前,先用一個表格來描述下散仙的編譯的環境的狀況:

序號 描述 備注

1 centos6.5系統64位 linux環境

2 Apache Ant1.9 ant編譯

3 Apache Maven3.2.1 maven打包部署

4 gcc,gcc-c++,make 依賴庫

5 protobuf-2.5.0 序列化庫

6 JDK1.7 java 環境

7 Hadoop2.2.0源碼包 官網下載

8 屌絲工程師一名 主角

9 hadoop交流群376932160 技術交流


下面進入正題,散仙的環境是在centos下,所以大部分安裝編譯依賴庫,都可以很方便的使用yum命令來完成。

1,安裝gcc,執行如下的幾個yum命令即可

Java代碼

  • ./configure

  • make

  • makecheck

  • makeinstall

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">./configure

  • make

  • makecheck

  • makeinstall</span>


  • 然後,執行如下命令,進行測試安裝成功與否

  • [[email protected]]#protoc

  • Missinginputfile.

  • [[email protected]]#

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">[[email protected]]#protoc

  • Missinginputfile.

  • [[email protected]]#</span>



  • 6,從hadoop官網下載hadoop2.2.0的版本的源碼的src的包,並查看目錄

  • [root@ganglia~]#cdhadoop-2.2.0-src

  • [[email protected]]#ll

  • 總用量108

  • -rw-r--r--.167974users996810月72013BUILDING.txt

  • drwxr-xr-x.267974users409610月72013dev-support

  • drwxr-xr-x.467974users40966月917:05hadoop-assemblies

  • drwxr-xr-x.367974users40966月917:27hadoop-client

  • drwxr-xr-x.967974users40966月917:14hadoop-common-project

  • drwxr-xr-x.367974users40966月917:26hadoop-dist

  • drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project

  • drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project

  • drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins

  • drwxr-xr-x.367974users40966月917:27hadoop-minicluster

  • drwxr-xr-x.467974users40966月917:03hadoop-project

  • drwxr-xr-x.367974users40966月917:05hadoop-project-dist

  • drwxr-xr-x.1267974users40966月917:26hadoop-tools

  • drwxr-xr-x.467974users40966月917:24hadoop-yarn-project

  • -rw-r--r--.167974users1516410月72013LICENSE.txt

  • -rw-r--r--.167974users10110月72013NOTICE.txt

  • -rw-r--r--.167974users1656910月72013pom.xml

  • -rw-r--r--.167974users136610月72013README.txt

  • [[email protected]]#

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">[root@ganglia~]#cdhadoop-2.2.0-src

  • [[email protected]]#ll

  • 總用量108

  • -rw-r--r--.167974users996810月72013BUILDING.txt

  • drwxr-xr-x.267974users409610月72013dev-support

  • drwxr-xr-x.467974users40966月917:05hadoop-assemblies

  • drwxr-xr-x.367974users40966月917:27hadoop-client

  • drwxr-xr-x.967974users40966月917:14hadoop-common-project

  • drwxr-xr-x.367974users40966月917:26hadoop-dist

  • drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project

  • drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project

  • drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins

  • drwxr-xr-x.367974users40966月917:27hadoop-minicluster

  • drwxr-xr-x.467974users40966月917:03hadoop-project

  • drwxr-xr-x.367974users40966月917:05hadoop-project-dist

  • drwxr-xr-x.1267974users40966月917:26hadoop-tools

  • drwxr-xr-x.467974users40966月917:24hadoop-yarn-project

  • -rw-r--r--.167974users1516410月72013LICENSE.txt

  • -rw-r--r--.167974users10110月72013NOTICE.txt

  • -rw-r--r--.167974users1656910月72013pom.xml

  • -rw-r--r--.167974users136610月72013README.txt

  • [[email protected]]#</span>



  • 7,修改/root/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件,增加,補丁內容,這部分是hadoop2.2.0的bug,如果是其他的2.x的版本,可以視情況而定,內容如下:

  • <dependency>

  • <groupId>org.mockito</groupId>

  • <artifactId>mockito-all</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的內容開始-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty-util</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的內容結束-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty</artifactId>

  • <scope>test</scope>

  • </dependency>

  • [xml]view plain

  • <spanstyle="font-family:Arial;font-size:12px;"><dependency>

  • <groupId>org.mockito</groupId>

  • <artifactId>mockito-all</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的內容開始-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty-util</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的內容結束-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty</artifactId>

  • <scope>test</scope>

  • </dependency></span>



  • 8,修改完畢後,回到hadoop-2.2.0-src的跟目錄下執行編譯打包命令:

  • mvnclean

  • mvnpackage-Pdist,native-DskipTests-Dtar

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">mvnclean

  • mvnpackage-Pdist,native-DskipTests-Dtar

  • </span>


  • 然後等待半個小時左右的編譯時間,網速快的話,時間可能會更短,編譯完成後,輸出的打包信息如下:

  • [INFO]

  • [INFO]---maven-resources-plugin:2.2:resources(default-resources)@hadoop-minicluster---

  • [INFO].

  • [INFO]

  • [INFO]---maven-compiler-plugin:2.5.1:compile(default-compile)@hadoop-minicluster---

  • [INFO]Nosourcestocompile

  • [INFO]

  • [INFO]---maven-resources-plugin:2.2:testResources(default-testResources)@hadoop-minicluster---

  • [INFO].

  • [INFO]

  • [INFO]---maven-compiler-plugin:2.5.1:testCompile(default-

  • ㈡ 大數據初學者需要看看哪些Hadoop問題及解決方案

    相信大家在學習大數據hadoop的時候肯定會遇到各種各樣的問題,這篇文章就是介紹一些常的問題及如何解決的辦法。
    1、namenode無法啟動,不報錯
    可能原因是:之前用root啟動過,導致current文件夾的許可權和所屬更改了,需要更改回來
    解決:current文件夾位於hadoop安裝目錄同級目錄的tmp/dfs/namesecondary
    2、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo
    原因:查看本地文件:
    [root@db96 hadoop]# file /usr/local/hadoop/lib/native/libhadoop.so.1.0.0
    /usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 32-bit LSB shared object,
    Intel 80386, version 1 (SYSV), dynamically linked, not stripped
    是32位的hadoop,安裝在了64位的linux系統上。lib包編譯環境不一樣,所以不能使用。
    解決:重新編譯hadoop.就是重新編譯hadoop軟體。
    3、Hadoop 報錯be replicated to 0 nodes, instead of 1
    原因(1)namespaceid不相同(2)沒有足夠的硬碟
    解決(1)停止datanode(2)刪除datadir下所有數據。(3)重啟datanode
    4、The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned off automatically.
    原因:由日誌可以看出無法刪除/home/hadoop/tmp/mapred/system.(其實這只是一種假象,往往我們會去糾結於這個目錄,其實不然)
    解決:
    (1):終極辦法強制退出安全模式(safemode)
    hadoop dfsadmin -safemode leave
    這種方式雖然快,但會有遺留問題,我在用habse的時候就遇到過,很麻煩,然後你就用「hadoop fsck /」工具慢慢恢復吧。
    (2):刪除namenode下/home/hadoop/tmp下的所有文件,重新format,當然這種方式非常暴力,因為你的數據完全木有了
    (3):參考源碼可發現這個錯誤是在檢查file的時候拋出來的,基本也就是file的block丟失、錯誤等原因造成的。
    這種情況在副本數為1的情況下會很棘手,其他的時候hadoop基本能自行解決,錯誤數很多的情況下就會一直處於safemode下,當然你關於集群修改配置文件後的分發,本人寫了一個配置文件分發工具可以強制離開安全模式,先保證正常讀寫,然後再啟用「hadoop fsck /」工具慢慢修復。
    5、Access denied for user 'root'@'hadoop1master' (using password: YES)
    原因:沒有除本地用戶的其他用戶遠程連接
    解決:修改mysql表,將localhost修改為%
    6、運行本地的wordcount報錯
    該錯誤是缺少hadoop.dll(hadoop2.6.0編譯的版本)文件,需要將hadoop.dll拷貝到hadoop2.6.0/bin目錄下。
    再次運行沒有報錯。
    7、運行api的時候報了許可權問題,使用的是hadoop,而我們想使用root
    原因:配置環境變數中設置了HADOOP_USER_NAME=hadoop或者在run configuration中設置的-DHADOOP_USER_NAME=hadoop
    解決:將配置環境變數中設置成HADOOP_USER_NAME=root或者在run configuration中設置的-DHADOOP_USER_NAME=root
    8、org.apache.hadoop.dfs.SafeModeException:Name node is in safe mode安全模式
    解決方法:bin/hadoop dfsadmin -safemode leave也就是關閉Hadoop的安全模式,這樣問題就解決了。
    9、用java -jar執行hadoop的job報錯
    原因:用hadoop的maprece變成,在執行的時候需要依賴hadoop的大部分依賴,所以上述錯誤是缺少hadoop的依賴包
    解決:(1)建議使用hadoop -jar 執行job(2)如果使用java -jar,需要使用java -cp 把hadoop依賴的所有jar拼接到路徑裡面去(3)如果使用java -jar,另一種是在打包的時候把hadoop依賴的jar一起打包進去
    10、運行mr程序報UnsatisfiedLinkError:nativeio.NativeIO$Windows.access0(Ljava/lang/String
    一般這個問題是由本地hadoop環境變數照成的。需要設置hadoop_home變數的值。注意hadoop安裝目錄下,bin目錄中缺少hadoop.dll和winutils.exe等動態庫。還要增加bin目錄到path路徑。另外編輯器需要添加hadoop環境 還要注意jdk等是否正確安裝。
    11、在使用hdfs的fromlocal上傳文件到hdfs時,爆出本地文件找不到異常,但是查看本地文件確實存在
    原因:windows設置了隱藏已知文件的擴展名功能,導致上傳的文件沒有寫擴展名
    解決:在上傳文件的地方添加上擴展名即可。
    12、在執行hadoop-deamon.sh start xxx時報錯
    原因:啟動的時候,節點名寫錯了
    解決:修改名字,名字有, namenode datanode等
    13、hadoop 8088 看不到maprece 任務的執行狀態,無數據顯示
    解決方法:
    (1)首先檢查自己的集群中配置$HADOOP_HOME/conf/mapred-site.xml是否存在。
    其中的maprece.framework.name是否配置。
    (2)如果還不行的話,請在$HADOOP_HOME/conf/mapred-site.xml中原來的配置文件基礎之上再添加下面

    maprece.jobhistory.addressname>
    master:10020value>
    property>

    maprece.jobhistory.webapp.addressname>
    master:19888value>
    property>
    14、security.AccessControlException: Access denied for user sunqw. Superuser privilege is required
    解決方法:
    方式一:
    在系統環境變數中增加HADOOP_USER_NAME,其值為root;
    或者 通過java程序動態添加,如下:
    ?1System.setProperty("HADOOP_USER_NAME", "root");
    方式二:
    使用Eclipse在非hadoop運行下進行寫入hdfs文件系統中時,由於sunqw對"/"目錄沒有寫入許可權,所以導致異常的發生。解決方法即開放hadoop中的HDFS目錄的許可權,命令如下:hadoop fs -chmod 777 / 。
    方式三:
    修改hadoop的配置文件:conf/hdfs-core.xml,添加或者修改 dfs.permissions 的值為 false。
    方式四:
    將Eclipse所在機器的名稱修改為root,即與伺服器上運行hadoop的名稱一致。

    ㈢ hadoop 重新編譯,提示如下錯誤,怎麼個意思了

    第一次編輯錯誤提示
    主要是增加了在maven目錄下,conf/settings.xml
    <mirror>
    <id>nexus-osc</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexusosc</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>

    <profile>
    <id>jdk-1.7</id>
    <activation>
    <jdk>1.7</jdk>
    </activation>
    <repositories>
    <repository>
    <id>nexus</id>
    <name>local private nexus</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>nexus</id>
    <name>local private nexus</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] Apache Hadoop Main ................................. FAILURE [06:34 min]
    [INFO] Apache Hadoop Project POM .......................... SKIPPED
    [INFO] Apache Hadoop Annotations .......................... SKIPPED
    [INFO] Apache Hadoop Assemblies ........................... SKIPPED
    [INFO] Apache Hadoop Project Dist POM ..................... SKIPPED
    [INFO] Apache Hadoop Maven Plugins ........................ SKIPPED
    [INFO] Apache Hadoop MiniKDC .............................. SKIPPED
    [INFO] Apache Hadoop Auth ................................. SKIPPED
    [INFO] Apache Hadoop Auth Examples ........................ SKIPPED
    [INFO] Apache Hadoop Common ............................... SKIPPED
    [INFO] Apache Hadoop NFS .................................. SKIPPED
    [INFO] Apache Hadoop Common Project ....................... SKIPPED
    [INFO] Apache Hadoop HDFS ................................. SKIPPED
    [INFO] Apache Hadoop HttpFS ............................... SKIPPED
    [INFO] Apache Hadoop HDFS BookKeeper Journal .............. SKIPPED
    [INFO] Apache Hadoop HDFS-NFS ............................. SKIPPED
    [INFO] Apache Hadoop HDFS Project ......................... SKIPPED
    [INFO] hadoop-yarn ........................................ SKIPPED
    [INFO] hadoop-yarn-api .................................... SKIPPED
    [INFO] hadoop-yarn-common ................................. SKIPPED
    [INFO] hadoop-yarn-server ................................. SKIPPED
    [INFO] hadoop-yarn-server-common .......................... SKIPPED
    [INFO] hadoop-yarn-server-nodemanager ..................... SKIPPED
    [INFO] hadoop-yarn-server-web-proxy ....................... SKIPPED
    [INFO] hadoop-yarn-server-applicationhistoryservice ....... SKIPPED
    [INFO] hadoop-yarn-server-resourcemanager ................. SKIPPED
    [INFO] hadoop-yarn-server-tests ........................... SKIPPED
    [INFO] hadoop-yarn-client ................................. SKIPPED
    [INFO] hadoop-yarn-applications ........................... SKIPPED
    [INFO] hadoop-yarn-applications-distributedshell .......... SKIPPED
    [INFO] hadoop-yarn-applications-unmanaged-am-launcher ..... SKIPPED
    [INFO] hadoop-yarn-site ................................... SKIPPED
    [INFO] hadoop-yarn-project ................................ SKIPPED
    [INFO] hadoop-maprece-client ............................ SKIPPED
    [INFO] hadoop-maprece-client-core ....................... SKIPPED
    [INFO] hadoop-maprece-client-common ..................... SKIPPED
    [INFO] hadoop-maprece-client-shuffle .................... SKIPPED
    [INFO] hadoop-maprece-client-app ........................ SKIPPED
    [INFO] hadoop-maprece-client-hs ......................... SKIPPED
    [INFO] hadoop-maprece-client-jobclient .................. SKIPPED
    [INFO] hadoop-maprece-client-hs-plugins ................. SKIPPED
    [INFO] Apache Hadoop MapRece Examples ................... SKIPPED
    [INFO] hadoop-maprece ................................... SKIPPED
    [INFO] Apache Hadoop MapRece Streaming .................. SKIPPED
    [INFO] Apache Hadoop Distributed Copy ..................... SKIPPED
    [INFO] Apache Hadoop Archives ............................. SKIPPED
    [INFO] Apache Hadoop Rumen ................................ SKIPPED
    [INFO] Apache Hadoop Gridmix .............................. SKIPPED
    [INFO] Apache Hadoop Data Join ............................ SKIPPED
    [INFO] Apache Hadoop Extras ............................... SKIPPED
    [INFO] Apache Hadoop Pipes ................................ SKIPPED
    [INFO] Apache Hadoop OpenStack support .................... SKIPPED
    [INFO] Apache Hadoop Client ............................... SKIPPED
    [INFO] Apache Hadoop Mini-Cluster ......................... SKIPPED
    [INFO] Apache Hadoop Scheler Load Simulator ............. SKIPPED
    [INFO] Apache Hadoop Tools Dist ........................... SKIPPED
    [INFO] Apache Hadoop Tools ................................ SKIPPED
    [INFO] Apache Hadoop Distribution ......................... SKIPPED
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 10:10 min
    [INFO] Finished at: 2015-01-12T00:52:27-08:00
    [INFO] Final Memory: 29M/70M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor (attach-descriptor) on project hadoop-main: Execution attach-descriptor of goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor failed: Plugin org.apache.maven.plugins:maven-site-plugin:3.3 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-site-plugin:jar:3.3 -> org.apache.maven.reporting:maven-reporting-exec:jar:1.1 -> org.apache.maven.shared:maven-shared-utils:jar:0.3: Failed to read artifact descriptor for org.apache.maven.shared:maven-shared-utils:jar:0.3: Could not transfer artifact org.apache.maven.shared:maven-shared-utils:pom:0.3 from/to nexus-osc (http://maven.oschina.net/content/groups/public/): Failed to transfer file:http://maven.oschina.net/content/groups/public/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.pom. Return code is: 502, ReasonPhrase: Bad Gateway. -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
    [hadoop@localhost hadoop-2.5.0-src]$

    ㈣ 為什麼編譯 hadoop 源碼

    編譯了hadoop,可以方便的查看某個函數的實現。如果不編譯就只是自己去翻源代碼了。更重要的是如果你編譯了hadoop,你可以根據自己的需要改動hadoop的某些實現機制。(hadoop開源的好處)

    ㈤ 安裝hadoop的步驟有哪些

    hadoop2.0已經發布了穩定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

    注意:apache提供的hadoop-2.4.1的安裝包是在32位操作系統編譯的,因為hadoop依賴一些C++的本地庫,
    所以如果在64位的操作上安裝hadoop-2.4.1就需要重新在64操作系統上重新編譯
    (建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到群共享里了,如果有興趣的可以自己編譯一下)

    前期准備就不詳細說了,課堂上都介紹了
    1.修改Linux主機名
    2.修改IP
    3.修改主機名和IP的映射關系
    ######注意######如果你們公司是租用的伺服器或是使用的雲主機(如華為用主機、阿里雲主機等)
    /etc/hosts裡面要配置的是內網IP地址和主機名的映射關系
    4.關閉防火牆
    5.ssh免登陸
    6.安裝JDK,配置環境變數等

    集群規劃:
    主機名 IP 安裝的軟體 運行的進程
    HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
    HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
    HA183 192.168.1.183 jdk、hadoop ResourceManager
    HA184 192.168.1.184 jdk、hadoop ResourceManager
    HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
    HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
    HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

    說明:
    1.在hadoop2.0中通常由兩個NameNode組成,一個處於active狀態,另一個處於standby狀態。ActiveNameNode對外提供服務,而StandbyNameNode則不對外提供服務,僅同步activenamenode的狀態,以便能夠在它失敗時快速進行切換。
    hadoop2.0官方提供了兩種HDFSHA的解決方案,一種是NFS,另一種是QJM。這里我們使用簡單的QJM。在該方案中,主備NameNode之間通過一組JournalNode同步元數據信息,一條數據只要成功寫入多數JournalNode即認為寫入成功。通常配置奇數個JournalNode
    這里還配置了一個zookeeper集群,用於ZKFC(DFSZKFailoverController)故障轉移,當ActiveNameNode掛掉了,會自動切換StandbyNameNode為standby狀態
    2.hadoop-2.2.0中依然存在一個問題,就是ResourceManager只有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調
    安裝步驟:
    1.安裝配置zooekeeper集群(在HA185上)
    1.1解壓
    tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
    1.2修改配置
    cd/app/zookeeper-3.4.5/conf/
    cpzoo_sample.cfgzoo.cfg
    vimzoo.cfg
    修改:dataDir=/app/zookeeper-3.4.5/tmp
    在最後添加:
    server.1=HA185:2888:3888
    server.2=HA186:2888:3888
    server.3=HA187:2888:3888
    保存退出
    然後創建一個tmp文件夾
    mkdir/app/zookeeper-3.4.5/tmp
    再創建一個空文件
    touch/app/zookeeper-3.4.5/tmp/myid
    最後向該文件寫入ID
    echo1>/app/zookeeper-3.4.5/tmp/myid
    1.3將配置好的zookeeper拷貝到其他節點(首先分別在HA186、HA187根目錄下創建一個weekend目錄:mkdir/weekend)
    scp-r/app/zookeeper-3.4.5/HA186:/app/
    scp-r/app/zookeeper-3.4.5/HA187:/app/

    注意:修改HA186、HA187對應/weekend/zookeeper-3.4.5/tmp/myid內容
    HA186:
    echo2>/app/zookeeper-3.4.5/tmp/myid
    HA187:
    echo3>/app/zookeeper-3.4.5/tmp/myid

    2.安裝配置hadoop集群(在HA181上操作)
    2.1解壓
    tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
    2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
    #將hadoop添加到環境變數中
    vim/etc/profile
    exportJAVA_HOME=/app/jdk1.7.0_79
    exportHADOOP_HOME=/app/hadoop-2.4.1
    exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

    #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
    cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

    2.2.1修改hadoop-env.sh
    exportJAVA_HOME=/app/jdk1.7.0_79

    2.2.2修改core-site.xml
    <configuration>
    <!--指定hdfs的nameservice為ns1-->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns1/</value>
    </property>
    <!--指定hadoop臨時目錄-->
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop-2.4.1/tmp</value>
    </property>

    <!--指定zookeeper地址-->
    <property>
    <name>ha.zookeeper.quorum</name>
    <value>HA185:2181,HA186:2181,HA187:2181</value>
    </property>
    </configuration>

    2.2.3修改hdfs-site.xml
    <configuration>
    <!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致-->
    <property>
    <name>dfs.nameservices</name>
    <value>ns1</value>
    </property>
    <!--ns1下面有兩個NameNode,分別是nn1,nn2-->
    <property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn2</value>
    </property>
    <!--nn1的RPC通信地址-->
    <property>
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
    <value>HA181:9000</value>
    </property>
    <!--nn1的http通信地址-->
    <property>
    <name>dfs.namenode.http-address.ns1.nn1</name>
    <value>HA181:50070</value>
    </property>
    <!--nn2的RPC通信地址-->
    <property>
    <name>dfs.namenode.rpc-address.ns1.nn2</name>
    <value>HA182:9000</value>
    </property>
    <!--nn2的http通信地址-->
    <property>
    <name>dfs.namenode.http-address.ns1.nn2</name>
    <value>HA182:50070</value>
    </property>
    <!--指定NameNode的元數據在JournalNode上的存放位置-->
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
    </property>
    <!--指定JournalNode在本地磁碟存放數據的位置-->
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/app/hadoop-2.4.1/journaldata</value>
    </property>
    <!--開啟NameNode失敗自動切換-->
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    <!--配置失敗自動切換實現方式-->
    <property>
    <name>dfs.client.failover.proxy.provider.ns1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
    </property>
    <!--配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
    sshfence
    shell(/bin/true)
    </value>
    </property>
    <!--使用sshfence隔離機制時需要ssh免登陸-->
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <!--配置sshfence隔離機制超時時間-->
    <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
    </property>
    </configuration>

    2.2.4修改mapred-site.xml
    <configuration>
    <!--指定mr框架為yarn方式-->
    <property>
    <name>maprece.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

    2.2.5修改yarn-site.xml
    <configuration>
    <!--開啟RM高可用-->
    <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <!--指定RM的clusterid-->
    <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
    </property>
    <!--指定RM的名字-->
    <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
    </property>
    <!--分別指定RM的地址-->
    <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>HA183</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>HA184</value>
    </property>
    <!--指定zk集群地址-->
    <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>HA185:2181,HA186:2181,HA187:2181</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>maprece_shuffle</value>
    </property>
    </configuration>


    2.2.6修改slaves(slaves是指定子節點的位置,因為要在HA181上啟動HDFS、在HA183啟動yarn,
    所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
    HA185
    HA186
    HA187

    2.2.7配置免密碼登陸
    #首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密碼登陸
    #在HA181上生產一對鑰匙
    ssh-keygen-trsa
    #將公鑰拷貝到其他節點,包括自己
    ssh--idHA181
    ssh--idHA182
    ssh--idHA183
    ssh--idHA184
    ssh--idHA185
    ssh--idHA186
    ssh--idHA187
    #配置HA183到HA184、HA185、HA186、HA187的免密碼登陸
    #在HA183上生產一對鑰匙
    ssh-keygen-trsa
    #將公鑰拷貝到其他節點
    ssh--idHA184
    ssh--idHA185
    ssh--idHA186
    ssh--idHA187
    #注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置HA182到HA181的免登陸
    在HA182上生產一對鑰匙
    ssh-keygen-trsa
    ssh--id-iHA181

    2.4將配置好的hadoop拷貝到其他節點
    scp-r/app/hadoop-2.5.1/HA182:/app/
    scp-r/app/hadoop-2.5.1/HA183:/app/
    scp-r/app/hadoop-2.5.1/HA184:/app/
    scp-r/app/hadoop-2.5.1/HA185:/app/
    scp-r/app/hadoop-2.5.1/HA186:/app/
    scp-r/app/hadoop-2.5.1/HA187:/app/
    ###注意:嚴格按照下面的步驟
    2.5啟動zookeeper集群(分別在HA185、HA186、tcast07上啟動zk)
    cd/app/zookeeper-3.4.5/bin/
    ./zkServer.shstart
    #查看狀態:一個leader,兩個follower
    ./zkServer.shstatus

    2.6啟動journalnode(分別在在HA185、HA186、HA187上執行)
    cd/app/hadoop-2.5.1
    hadoop-daemon.shstartjournalnode
    #運行jps命令檢驗,HA185、HA186、HA187上多了JournalNode進程
    2.7格式化ZKFC(在HA181上執行即可) hdfszkfc-formatZK
    2.8格式化HDFS
    #在HA181上執行命令:
    hdfsnamenode-format
    #格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這里我配置的是/app/hadoop-2.4.1/tmp,然後將/weekend/hadoop-2.4.1/tmp拷貝到HA182的/weekend/hadoop-2.4.1/下。
    scp-rtmp/HA182:/app/hadoop-2.5.1/
    ##也可以這樣,建議hdfsnamenode-bootstrapStandby



    2.9啟動HDFS(在HA181上執行)
    sbin/start-dfs.sh

    2.10啟動YARN(#####注意#####:是在HA183上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要佔用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
    sbin/start-yarn.sh


    到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
    http://192.168.1.181:50070
    NameNode'HA181:9000'(active)
    http://192.168.1.182:50070
    NameNode'HA182:9000'(standby)

    驗證HDFSHA
    首先向hdfs上傳一個文件
    hadoopfs-put/etc/profile/profile
    hadoopfs-ls/
    然後再kill掉active的NameNode
    kill-9<pidofNN>
    通過瀏覽器訪問:http://192.168.1.182:50070
    NameNode'HA182:9000'(active)
    這個時候HA182上的NameNode變成了active
    在執行命令:
    hadoopfs-ls/
    -rw-r--r--3rootsupergroup19262014-02-0615:36/profile
    剛才上傳的文件依然存在!!!
    手動啟動那個掛掉的NameNode
    sbin/hadoop-daemon.shstartnamenode
    通過瀏覽器訪問:http://192.168.1.181:50070
    NameNode'HA181:9000'(standby)

    驗證YARN:
    運行一下hadoop提供的demo中的WordCount程序:
    hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

    OK,大功告成!!!
    CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



    測試集群工作狀態的一些指令:
    bin/hdfsdfsadmin-report 查看hdfs的各節點狀態信息


    bin/hdfshaadmin-getServiceStatenn1 獲取一個namenode節點的HA狀態

    sbin/hadoop-daemon.shstartnamenode單獨啟動一個namenode進程


    ./hadoop-daemon.shstartzkfc單獨啟動一個zkfc進程

    ㈥ hadoop搭建時為什麼要重新編譯源碼的解釋

    把你編譯後的hadoop源碼丟到原來的hadoop集群環境中去 即覆蓋hadoop安裝目錄下的原hadoop-core-xxx.jar 同樣的所有節點都需要更新 然後重啟集群

    ㈦ hadoop源碼修改了,編譯成功後,將編譯後的hadoop文件直接拿來搭建么,還是需要經過什麼處理呢

    把你編譯後的hadoop源碼丟到原來的hadoop集群環境中去 即覆蓋hadoop安裝目錄下的原hadoop-core-xxx.jar 同樣的所有節點都需要更新 然後重啟集群

    ㈧ 為什麼要編譯apache hadoop2.2.0源代碼

    hadoop是不需要編譯的,解壓就可以直接使用了,操作如下: tar –zxvf hadoop-2.2.0.tar.gz #解壓"hadoop-2.2.0.tar.gz"安裝包mv hadoop-2.2.0 /usr/local/hadoop #將"hadoop-2.2.0"移動到/usr/local目錄下chown –R hadoop:hadoop /usr/local/had...

    ㈨ 如何重新編譯hadoop jar包

    重新編譯hadoop jar包:
    編譯打包
    由於hadoop打包時需要依賴於操作系統的底層。
    sudo apt-get install autoconf
    sudo apt-get install automake
    sudo apt-get install autotool
    sudo apt-get install libtool
    4.安裝jdk1.5 和apache-forrest-0.8
    打包命令:ant package -Djava5.home=/home/rongneng/env/jdk1.5.0_22 -Dforrest.home=/home/rongneng/env/apache-forrest-0.8

    ㈩ hadoop 2.8.2 怎麼編譯

    在不使用eclipse情況使java程序在hadoop
    2.2中運行的完整過程。整個過程中其實分為java程序的編譯,生成jar包,運行測試。
    這三個步驟運用的命令都比較簡單,主要的還是如何找到hadoop
    2.2提供給java程序用來編譯的jar包。具體可以查看:
    HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目錄
    下面會通過一個在hadoop中創建一個目錄的JAVA例子來進行演示
    具體代碼如下:
    package
    com.wan.demo;
    import
    java.io.IOException;
    import
    org.apache.hadoop.conf.Configuration;
    import
    org.apache.hadoop.fs.FileSystem;
    import
    org.apache.hadoop.fs.Path;
    public
    class
    HADemo
    {
    public
    static
    void
    main(String[]
    args)
    {
    //
    TODO
    Auto-generated
    method
    stub
    mkdir(args[0]);
    }
    public
    static
    void
    mkdir(String
    dir){
    Configuration
    configuration=new
    Configuration();
    FileSystem
    fs;
    try
    {
    fs
    =
    FileSystem.get(configuration);
    fs.mkdirs(new
    Path(dir));
    fs.close();
    }
    catch
    (IOException
    e)
    {
    //
    TODO
    Auto-generated
    catch
    block
    e.printStackTrace();
    }
    }
    }
    把HADemo.java文件拷貝到linux環境中
    配置HADOOP_HOME/bin到環境中,啟動集群,進入HADemo.java文件目錄中
    注:下面的lib目錄裡面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/
    webhdfs/WEB-INF/lib目錄中獲取,下面做的目的是為了縮減命令長度
    1.編譯java
    #
    mkdir
    class
    #Javac
    -classpath
    .:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar
    -d
    class
    HADemo.java
    2.生成jar包
    #jar
    -cvf
    hademo.jar
    -C
    class/
    .
    added
    manifest
    adding:
    com/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/demo/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/demo/HADemo.class(in
    =
    844)
    (out=
    520)(deflated
    38%)
    3.測試運行
    #hadoop
    jar
    hademo.jar
    com.wan.demo.HADemo
    /test
    檢測:
    #hadoop
    fs
    -ls
    /

    閱讀全文

    與hadoop為什麼重新編譯相關的資料

    熱點內容
    自己購買雲主伺服器推薦 瀏覽:419
    個人所得稅java 瀏覽:761
    多餘的伺服器滑道還有什麼用 瀏覽:189
    pdf劈開合並 瀏覽:27
    不能修改的pdf 瀏覽:750
    同城公眾源碼 瀏覽:488
    一個伺服器2個埠怎麼映射 瀏覽:297
    java字元串ascii碼 瀏覽:78
    台灣雲伺服器怎麼租伺服器 瀏覽:475
    旅遊手機網站源碼 瀏覽:332
    android關聯表 瀏覽:945
    安卓導航無聲音怎麼維修 瀏覽:332
    app怎麼裝視頻 瀏覽:430
    安卓系統下的軟體怎麼移到桌面 瀏覽:96
    windows拷貝到linux 瀏覽:772
    mdr軟體解壓和別人不一樣 瀏覽:904
    單片機串列通信有什麼好處 瀏覽:340
    游戲開發程序員書籍 瀏覽:860
    pdf中圖片修改 瀏覽:288
    匯編編譯後 瀏覽:491