1. ssh localhost: 不能登陸:將錯誤提示中的文件全部刪除。原因:登陸過遠程主機
2. 問題: 偽分布式datanode啟動不了:在datanode的log日志文件出現以下錯誤提示:
ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using 'localhost'...java.net.UnknownHostException: localhost: slave01: Name or service not known
其中 在hdfs-site.xm中的配置是dfs.name.dir是/usr/local/hadoop/hdfs/name. dfs.data.dir是/usr/local/hadoop/hdfs/data
理解知識:
對於第一次使用HDFS,在啟動NameNode時,需要先執行-format命令,然后才能正常啟動NameNode節點的服務。
在NameNode節點上,有兩個最重要的路徑,分別被用來存儲元數據信息和操作日志,而這兩個路徑來自於配置文件,它們對應的屬性分別是dfs.name.dir和dfs.name.edits.dir,同時,它們默認的路徑均是/tmp/hadoop/dfs/name
解決方法:偽分布式下datanode無法啟動問題 修改id http://blog.sina.com.cn/s/blog_76fbd24d01017qmc.html
3.無法解析主機kang-01,無法進行一些hadoop下的操作:在root權限下,vim hosts,增加192.168.1.103(本機地址) kang-01
4. 主要配置文件:hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml slaves masters
5. 通過查看日志文件,來了解問題所在。
Problem 1: 程序 'java' 已包含在下列軟件包中:
* default-jre
* gcj-4.6-jre-headless
* gcj-4.7-jre-headless
* openjdk-7-jre-headless
* openjdk-6-jre-headless
請嘗試:sudo apt-get install <選定的軟件包>
解決方法:(手動設置系統默認JDK)
在終端中依次輸入命令:
sudo update-alternatives --install /usr/bin/java java /home/landen/UntarFile/jdk1.7.0_17/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /home/landen/UntarFile/jdk1.7.0_17/bin/javac 300
sudo update-alternatives --config java
接下來輸入java -version就可以看到所安裝JDK的版本信息了。
Problem 2:程序 'jps' 已包含在下列軟件包中:
* openjdk-6-jdk * openjdk-7-jdk Try: sudo apt-get install <selected package> It is actually not a Hadoop problem. Hadoop does not use JPS.This problem is caused since you have installed JDK from Oracle (may be). You can fix this problem by using update-alternatives
program to link jps
to standard path directory. Use this command to fix this in a terminal
Solution: sudo update-alternatives --install /usr/bin/jps jps /home/landen/UntarFile/jdk1.7.0_17/bin/jps 1 Use the actual jps
program path in the appropriate jdk (your version of jdk) instead of jdk1.7
which is specific to me.
5.hadoop偽分布式下Datanode無法啟動起來
在hadoop目錄下的logs里面查看datanode 的日志文件,錯誤提示顯示hdfs.data.dir的權限應該是rwxr-xr-x,而實際上是rwxrwxr-x
解決辦法:先確定hdfs-site.xml里面的配置無誤,然后修改hdfs.data.dir的權限
查看目錄的相關權限可以采用命令ls -lD,或者直接用ls -la
權限列表
-rw------- (600) 只有所有者才有讀和寫的權限
-rw-r--r-- (644) 只有所有者才有讀和寫的權限,組群和其他人只有讀的權限
-rwx------ (700) 只有所有者才有讀,寫,執行的權限
-rwxr-xr-x (755) 只有所有者才有讀,寫,執行的權限,組群和其他人只有讀和執行的權限
-rwx--x--x (711) 只有所有者才有讀,寫,執行的權限,組群和其他人只有執行的權限
-rw-rw-rw- (666) 每個人都有讀寫的權限
-rwxrwxrwx (777) 每個人都有讀寫和執行的權限
修改權限:
修改權限命令
chmod 777 文件名
1.chmod 577 /home/stuser -R
2.umask -p 0200
3.chown XXXX YYYY (XXXX 為用戶名 YYYY為文件名)
6.在虛擬機里的eclipse跑hadoop wordcount示例程序出現java heap space的錯誤
原因:
當rs數據量大(大概800條記錄以上)的時候出現javax.servlet.ServletException: Java heap space錯誤7.Eclipse並安裝Subclipse1.6x插件后,使用svn過程中報如下錯誤:在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常信息。 JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。 例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar 解決辦法: 如果Heap Size設置偏小,除了這些異常信息外,還會發現程序的響應速度變慢了。GC占用了更多的時間,而應用分配到的執行時間較少。 Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。 Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。否則會提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。 這個問題的根源是jvm虛擬機的默認Heap大小是64M,可以通過設置其最大和最小值來實現.設置的方法主要是幾個. 1.可以在windows 更改系統環境變量加上JAVA_OPTS=-Xms64m -Xmx512m 2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上: set JAVA_OPTS=-Xms64m -Xmx256m 位置在: rem Guess CATALINA_HOME if not defined 這行的下面加合適. 3.如果是linux系統 Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms64 -Xmx512'7.
Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
/opt/local/lib/libsvnjavahl-1.0.0.0.dylib: no suitable image found. Did find: /opt/local/lib/libsvnjavahl-1.0.0.0.dylib: mach-o, but wrong architecture
原來是缺少一些關聯文件,去subclipse的Wiki看了看,說需要安裝libsvn-java,在Ubuntu 下安裝很簡單,命令如下:
sudo apt-get install libsvn-java
安裝完后,這文件在/usr/lib//i386-linux-gnu/jni目錄下(確認一下),這個目錄並不是eclipse的java.library.path路徑之一,所以還需要修改eclipse.ini來告訴eclipse去哪找這個libsvn-java相關的文件.
打開eclipse.ini,在最后行加入如下內容(注意換行)
-Djava.library.path=/usr/lib/jni 但是實際上我發現在eclipse的選項中將SVN改成另外的一個庫就可以了。。 8.git clone git://git.apache.org/hadoop-common.git
Now I get a failure on:
mvn install -DskipTests [INFO] Apache Hadoop Main ................................ SUCCESS [6.688s] [INFO] Apache Hadoop Project POM ......................... FAILURE [1.548s] ... [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-testdirs) on project hadoop-project: Error executing ant tasks: /usr/local/hadoop/hadoop-common/hadoop-project/target/antrun/build-main.xml (No such file or directory) -> [Help 1]
The reason being I don't have a "target" folder in
.../hadoop-project
. My /hadoop-project folder contains only a "src" folder and that's it.So it appears that folder was not established. Any ideas? Here is the environment:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-testdirs) on project hadoop-project: Error executing ant tasks: /home/sreejith/svn/hadoop-trunk/hadoop-project/target/antrun/build-main.xml (No such file or directory) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-testdirs) on project hadoop-project: Error executing ant tasks: /home/sreejith/svn/hadoop-trunk/hadoop-project/target/antrun/build-main.xml (No such file or directory)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Li
解決辦法:Found a solution. Do a sudo chown -R username parent-directory
if you haven't already. Now try,mvn install -DskipTests
. Everything should go fine and you should getBUILD SUCCESS
.
原來 sudo chown -R hadoop:hadoop /usr/local/hadoop 真的很重要,不設置會出現很多莫名的問題
(確保所有的操作都在用戶hadoop下完成的)
8.[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.2.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 2.4.1', expected version is '2.5.0' -> [Help 1]
sudo apt-get remove libprotoc7 (一部分再tab)
再安裝相應版本