Hadoop 安装,持续更新
命令被挂起时的解决方案
使用yum安装计划任务功能,结果提示:
# yum -y install vixie-cron
Loaded plugins: fastestmirror, refresh-packagekit, security
Existing lock /var/run/yum.pid: another copy is running as pid 25960.
Another app is currently holding the yum lock; waiting for it to exit...1234
可能是系统自动升级正在运行,yum在锁定状态中。
已经有一个yum进程在运行了,使用kill干掉它:
# kill -s 9 25960
# ps aux|grep yum
root 6744 0.0 0.0 103260 900 pts/1 S+ 14:59 0:00 grep yum
root 25960 0.0 0.0 0 0 ? Z Sep19 0:01 [yumBackend.py] <defunct>1234
很遗憾,kill对付不了它,那怎么办呢?
可以通过强制关掉yum进程:
#rm -f /var/run/yum.pid1
然后就可以使用yum了。
JDK相关
jdk安装
国内jdk镜像地址:
https://repo.huaweicloud.com/java/jdk/
将本机软件包拷贝到100.32.32.34服务器的scott家目录的software文件夹中
scp jdk-8u192-linux-x64.tar.gz scott@100.32.32.34:~software/
wget安装:
wget https://repo.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz
tar -zvxf jdk-8u192-linux-x64.tar.gz -C ~/app/ #解压到~/app目录
配置环境变量,修改~/.bash_profile文件
vim .bash_profile
注意等号前后无空格
export JAVA_HOME=/home/scott/app/jdk1.8.0_192
export PATH=$JAVA_HOME/bin:$PATH
source .bash_profile #使配置生效
1、用yum安装jdk(强烈不推荐,无法安装到自己想装的位置,容易下载成jre)
sudo yum install java-1.8.0-openjdk
2、卸载用yum安装的jdk
yum -y remove java-1.8.0-openjdk*
1、先找到java执行文件路径
whereis java
输出:java: /usr/bin/java
2、根据执行文件找到对应的软链接指向的文件路径
ls -lrt /usr/bin/java
输出: /usr/bin/java -> /etc/alternatives/java
3、进入/etc/alternatives/目录,发现还不是源文件目录。继续找
ls -lrt /etc/alternatives/java
输出:/etc/alternatives/java -> /usr/java/jdk-9.0.1/bin/java
看到jdk字样了。应该是源文件目录了。进入到路径
cd /usr/java/jdk-9.0.1/
Hadoop安装
参考文档:
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1/hadoop-project-dist/hadoop-common/SingleCluster.html
下载地址:
http://www.apache.org/dyn/closer.cgi/hadoop/common/
Hadoop(HDFS)安装
下载
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
解压
tar -zvxf hadoop-2.8.5.tar.gz -C ~/app
添加HADOOP_HOME/bin到系统环境变量
vim .bash_profile
export HADOOP_HOME=/home/scott/app/hadoop-2.8.5
export PATH=$HADOOP_HOME/bin:$PATH
source .bash_profile
hadoop软件包常见目录说明
bin
:hadoop客户端名单
etc/hadoop
:hadoop相关的配置文件存放目录
sbin
:启动hadoop相关进程的脚本
share
:常用例子程序
配置:
hadoop-env.sh
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=${JAVA_HOME} #JAVA_HOME要配置无误
core-site.xml
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/scott/app/tmp</value>
</property>
</configuration>
slaves
vim /home/scott/app/hadoop-2.8.5/etc/hadoop/slaves
启动HDFS
第一次执行的时候一定要格式化,不要重复。会在hadoop.tmp.dir目录下面生成文件
hdfs namenode -format
启动集群:
$HADOOP_HOME/sbin/start-dfs.sh
验证:
jps
查看防火墙状态,然后关闭
firewall-cmd --state
systemctl stop firewalld.service
遇到问题
默认ssh端口号不是22,需要在hadoop-env.sh添加如下配置
export HADOOP_SSH_OPTS="-p 1234"
设置无密码ssh,不然每次启动hdfs都要输入密码
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
mkdir: 无法创建目录"/logs": 权限不够
sudo chown -R 你自己电脑的用户名 $HADOOP_HOME
如下
sudo chown -R scott /home/scott/app/hadoop-2.8.5
最终解决办法:修改之前hadoop-env.sh的配置。不能用${HOME}
export JAVA_HOME=/home/scott/app/jdk1.8.0_192
export HADOOP_PREFIX=/home/scott/app/hadoop-2.8.5