Hadoop伪分布式安装步骤
JDK 安装(1.8版本及以上)
貌似如果JDK是1.7的话会遇到一些莫名的BUG…
比如编译Spark的时候就卡了很久!!
解压:
tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app
添加到环境变量:~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
使得环境变量生效: source ~/.bash_profile
验证Java是否配置成功: java -version
安装ssh
sudo yum install ssh
配置免密码登录
ssh-keygen -t rsa ==> 会生成密码文件到 /home/hadoop/.ssh/id_rsa 中
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_k eys ==> 将生成的rsa密钥添加到认证密钥中
下载并解压hadoop
下载:
直接去cdh网站下载 ==> http://archive.cloudera.com/cdh5/cdh/5/
解压:
tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local
//将 hadoop 文件夹解压到 /usr/locla 文件夹下
配置文件的修改(hadoop_home/etc/hadoop)
hadoop-env.sh
文件中修改:
export JAVA_HOME=/usr/local/jdk1.7.0_80
core-site.xml
文件中添加:
<property>
<name>fs.defaultFS</name>
<value>hdfs:// localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
注:hadoop2.X 版本 将端口从 9000 改为 8020
hdfs-site.xml
文件中添加:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
注:只有一个结点,所以副本设置为1
slaves
: 有多少个集群,就将主机名添加到slaves 中
启动 HDFS
格式化文件系统(仅第一次执行即可,不要重复执行):./hadoop namenode -format
也可以配置hadoop环境变量之后直接执行: hadoop namenode -format
启动hdfs: sbin/start-dfs.sh
验证是否启动成功:
jps
DataNode
SecondaryNameNode
NameNode
浏览器访问方式: http://ip:50070
停止 HDFS
sbin/stop-dfs.sh
其他问题
启动Hadoop HDFS 而DataNode 无法启动的问题
可能是之前执行 format 操作之后 导致 DataNode 和 NameNode 的 clusterID不一样
解决方法:
1. 进入 Hadoop 中 core-site.xml 文件中配置的Hadoop 文件存放路径,即 hadoop.tmp.dir
2. 进入 dfs 文件中,将 data 文件夹中 VERSION 文件中的 clusterID 改为 name文件夹中 VERSION文件中的 clusterID
运行 Hadoop 或者 Spark 出现 (null) entry in command string: null chmod 0644
当我们尝试将中间计算结果写入本地文件的时候,可能会报出(null) entry in command string: null chmod 0644的错误
解决办法一:
下载 winutils.exe 相关文件
从https://github.com/srccodes/hadoop-common-2.2.0-bin将所有的相关文件下载下来将下载的整个文件夹放到某个目录下, eg:C:\your_folder\
在程序的开头添加代码:
System.setProperty("hadoop.home.dir", "c:\\your_folder\\") //第二个参数就是下载的文件夹所在的路径