系统:Ubuntu16.04 JDK:JDK1.8.0_101 Hadoop:2.7.3
JDK安装路径:/usr/lib/jdk/jdk1.8.0_101 Hadoop安装路径:/usr/lib/hadoop
首先我们要新建一个叫hadoop的账户
sudo adduser hadoop之后会提示你输入密码等信息
然后我们为这个账户添加sudo权限(这样在后续的操作中可以方便些),编辑/etc/sudoers
sudo vim /etc/sudoers在
root ALL=(ALL:ALL) All下面添上
hadoop ALL=(ALL:ALL) ALL保存退出,
注:编辑/etc/sudoers文件可能需要有写入权限可用root权限对其添加(chmod a+w /etc/sudoers),在编辑完成后需要将写入权限去掉(chmod a-w /etc/sudoers)
然后我们需要对用户添加ssh免密码登陆
ssh-keygen -t rsa就会在~/.ssh路径下面生成id_rsa.pub文件,把这个文件的内容复制到~/.ssh目录下面的authorized_keys
cp ~/.ssh/id_rsa.pub ~/.sh/authorized_keys然后编辑/etc/ssh/sshd_config文件,开启免密码登陆
sudo vim /etc/ssh/sshd_config把
#AuthorizedKeysFile %h/.ssh/authorized_keys前的#去掉,就开启了免密码登陆,保存退出 重启ssh服务
sudo service ssh restart验证免密码登陆是否有效,
ssh hadoop@localhost第一次登陆会让你输入yes/no输入yes,回车,如果没有提示输入密码,那就说明免密码登陆已经奏效。
由于Hadoop是由java编写的所以在安装hadoop之前需要先搭建jdk的环境,将jdk解压缩
sudo tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/lib/jdk然后配置jdk环境,在/etc/profile加上
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH保存 source /etc/profile重新加载
java -version输出了java的版本号,说明配置成功
然后我们把hadoop解压缩到/usr/lib目录下
sudo tar -zxvf hadoop-2.7.3.tar.gz -C /usr/lib然后对其重命名
sudo mv /usr/lib/hadoop-2.7.3 /usr/lib/hadoop我们需要给hadoop用户对/usr/lib/hadoop目录的写入权限
接着我们需要修改hadoop的一些配置文件让它支持伪分布式, 首先我们需要修改hadoop/etc/hadoop/hadoop-env.sh
vim /usr/lib/hadoop/etc/hadoop/hadoop-env.sh找到 JAVA_HOME 应该在文件开头,把里面的内容修改成
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_101接着修改core-site.xml文件
vim /usr/lib/hadoop/etc/hadoop/core-site.xml打开之后
<configuration> </configuration>在<configuration></configuration>中间添加
<property> <name>hadoop.tmp.dir</name> <value>file:/usr/lib/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>保存退出
然后修改hdfs-site.xml
vim /usr/lib/hadoop/etc/hadoop/hdfs-site.xml同样在<configuration></configuration>中添加
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/lib/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/lib/hadoop/tmp/dfs/data</value> </property>保存退出
然后执行
/usr/lib/hadoop/bin/hdfs namenode -format开启namenode和datanode
/usr/lib/hadoop/sbin/start-dfs.sh启动完成之后执行jps
可以看到
NameNode DataNode Jps SecondaryNameNode这几个进程,如果不是说明配置有问题
接下来可以测试一下,看看hadoop有没有正常运行
/usr/lib/hadoop/bin/hadoop dfs -mkdir input创建input目录
/usr/lib/hadoop/bin/hadoop dfs -put /usr/lib/hadoop/etc/hadoop/*.xml input这样会把/usr/lib/hadoop/etc/hadoop/目录下所有的xml文件都存放到新建的hdfs的input目录下
可以通过命令
/usr/lib/hadoop/bin/hadoop dfs -ls input来进行查看
然后我们执行example
/usr/lib/hadoop/bin/hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'用命令
/usr/lib/hadoop/bin/hdfs dfs -cat output/*对运行结果进行查看
1 dfsadmin 2 dfs.replication 3 dfs.namenode.name.dir 4 dfs.datanode.data.dir