本次安装集群信息:
192.168.201.91 hadoop-1
192.168.201.92 hadoop-2
192.168.201.56 hadoop-3
Linux系统:ubuntu 18.04LTS
公司安装的是最新的系统,cdh都还不能兼容,只能苦哈哈的一个个自己安装啦···
============================================================
1.设置新用户wjk/wjk
2.设置三台机品相互免密登录
配置SSH
$ ssh-keygen -t rsa -P ''
将public key加入到authorized_keys中,这样hadoop在运行ssh时就不需要输入密码了
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在我们测试一下ssh
$ ssh localhost
如果你被询问是否确认连接,输入yes。如果你发现在即不需要输密码,cool – 至少到目前位置你是正确的。否则,请debug。
$ exit
接下来,为了使master能免密访问slave:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub wjk@hadoop-1
$ ssh hadoop-s1
3.安装Hadoop
Hadoop的各个版本的Release版本在http://hadoop.apache.org/releases.html
在Master和Slave节点上
下载hadoop-2.7.7压缩包,并解压。
$ wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
$ sudo tar -xzvf hadoop-2.7.7.tar.gz -C /usr/local
$ cd /usr/local
$ sudo chown -R wjk:hadoop hadoop-2.7.7
分发:
$ sudo scp -r /usr/local/hadoop-2.7.7/ hadoop-3:/usr/local/
4.安装java
此处安装1.8
JAVA_HOME=/opt/jdk/jdk1.8.0_181
配置Hadoop环境
$ cd ~
$ vim .bashrc
将下面的内容复制到.bashrc中
#Hadoop variables
export JAVA_HOME=/opt/jdk/jdk1.8.0_181
export HADOOP_INSTALL=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
###end of paste
退出.bashrc
然后将JAVA_HOME配置到/etc/hadoop/hadoop-env.sh里,这个文件指定了Hadoop的守护进程使用的JDK环境变量。
$ cd /usr/local/hadoop-2.7.7/etc/hadoop
$ vim hadoop-env.sh
将下面的三行加入到hadoop-env.sh中,删除原来的 “export JAVA_HOME”那行
# begin of paste
export JAVA_HOME=/opt/jdk/jdk1.8.0_181
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop-2.7.7/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop-2.7.7/lib/"
### end of paste
退出terminal再重新打开
配置Hadoop
$ cd /usr/local/hadoop/etc/hadoop
$ vim core-site.xml
将下面的内容复制到标签内
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.201.91:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.7/tmp</value>
</property>
$ vim yarn-site.xml
将下面的内容复制到标签内
<property>
<!-- 指定reducer获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
$ mv mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
将下面的内容复制到标签内
<!-指定Mapreduce运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
创建目录:
$ mkdir -p ~/mydata/hdfs/namenode
$ mkdir -p ~/mydata/hdfs/datanode
$ vim hdfs-site.xml
将下面的内容复制到标签内
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/wjk/mydata/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/wjk/mydata/hdfs/datanode</value>
</property>
配置从节点
vim /usr/local/hadoop-2.7.7/etc/hadoop/slaves
如下:
hadoop-2
hadoop-3
格式化 namenode
第一次启动hadoop服务之前,必须执行格式化namenode
$ hdfs namenode -format
启动服务
$ start-dfs.sh && start-yarn.sh
使用jps查看服务
$ jps
如果一切顺利,你会看到:
17785 SecondaryNameNode
17436 NameNode
17591 DataNode
18096 NodeManager
17952 ResourceManager
23635 Jps
网页界面
Cluster status: http://192.168.201.91:8088
HDFS status: http://localhost:50070
Secondary NameNode status: http://localhost:50090
错误说明:
1.Error:JAVA_HOME is not set and could not be found 解决
其实是hadoop里面hadoop-env.sh文件里面的java路径设置不对,hadoop-env.sh在hadoop/etc/hadoop目录下,具体的修改办法如下:
sudo vim /usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
将语句 export JAVA_HOME=$JAVA_HOME
修改为 export JAVA_HOME=/opt/jdk/jdk1.8.0_181
保存后退出。
再次输入start-dfs.sh启动hadoop,则没有报错。
2.Hadoop出现错误:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable,解决方案
1
修改hadoop-env.sh
添加
$ export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop-2.7.7/lib/native/"
$ export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop-2.7.7/lib/"
2在bashrc中加入如下配置:
vim ~/.bashrc
配置如下
export HADOOP_HOME=/opt/jdk/jdk1.8.0_181
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
3 使上面配置生效:
source ~/.bashrc